アプリ版:「スタンプのみでお礼する」機能のリリースについて

いつもお世話になっています。

Eclipse(Juno) を使って、Android のメールアプリを作っています。
PCの OS は Windows7 64bit です。

いろいろ、教えていただいて、メールの受信、添付されているファイルの取り出しはできました。

今回は、添付ファイル付のメールの送信です。

ネットにあったソースコードを使って、画像データ "mdata05.bin" を添付ファイルにして
メール送信を試しています。

DDMS でみると、files のところに、"mdata05.bin" は存在します。

次のコードで送信すると、

private void sendmail() {
try{
String to = "宛先";
String from = " Gメールアドレス";
String filename = "mdata05.bmp";


Properties property = new Properties();
//GmailのSMTPを使う場合
property.put("mail.smtp.auth", "true");
property.put("mail.smtp.starttls.enable", "true");
property.put("mail.smtp.host", "smtp.gmail.com");
property.put("mail.smtp.port", "587");

Session session = Session.getInstance(property, new javax.mail.Authenticator(){
protected PasswordAuthentication getPasswordAuthentication(){
return new PasswordAuthentication("Gメールアドレス", "パスワード");
}
});

MimeMessage msg = new MimeMessage(session);
msg.setFrom(new InternetAddress(from));
InternetAddress[] address = InternetAddress.parse(to);
msg.setRecipients(Message.RecipientType.TO, address);
msg.setSubject("JavaMail APIs Test", "ISO-2022-JP");
msg.setSentDate(new Date());

/* 添付ファイルの処理 */
MimeBodyPart mbp1 = new MimeBodyPart();
mbp1.setText("msgTextテスト", "ISO-2022-JP");

MimeBodyPart mbp2 = new MimeBodyPart();
FileDataSource fds = new FileDataSource("mdata05.bmp");//filename);
mbp2.setDataHandler(new DataHandler(fds));
mbp2.setFileName(MimeUtility.encodeWord(fds.getName()));


Multipart mp = new MimeMultipart();
mp.addBodyPart(mbp1);
mp.addBodyPart(mbp2);

msg.setContent(mp);

Transport.send(msg);
}catch(MessagingException mex){
System.out.println("¥n--Exception handling in msgsendsample.java");
mex.printStackTrace();
}catch(java.io.UnsupportedEncodingException uex){
}

MessagingException mex のエラーの内容としては、

IOException while sending message"
とあって、詳しく見ると
"/mdata05.bmp: open failed: ENOENT (No such file or directory)"
となっています。

添付ファイルが送れない原因は何でしょうか?

なお、添付ファイルの部分を削除すれば、本文だけのメールは送信できます。

ご指導、よろしくお願いします。

A 回答 (2件)

んんっ? 質問は binですが、コードは bmpですね。



エラーメッセージが

"/mdata05.bmp: open failed: ENOENT (No such file or directory)"

なので、ファイルPathが正しくないのではないでしょうか。
絶対Pathで指定してみてください。

この回答への補足

ありがとうございます。

間違えました。

ファイルは、mdata05.bmp です。
mdata05.bin と書いたのは誤りです。
いま試している段階では、
ファイル名も、内容もビットマプファイルです。

これがうまくいったら、拡張子はbmpだが、内容はバイナリファウル(暗号化したファウル)
を添付ファイルとして送信する予定です。


他のファイル bbb.jpg や sss.dat も試したのですが、同じエラー内容で失敗しました。

他の、メールソフトから Gメールのアドレスへは
ビットマップファイルも、拡張子がbmpだが、内容的にはバイナリファイルになっているものも
送信できますので、Gメールのサーバーの規制ではないと思います。

絶対パスですが、アンドロイドアプリの入門書には、
ファイルのパスは指定しないで、ファイル名のみを指定すると書いてあったので、
指定は、ファイル名のみにしています。

また、"/files/mdata05.bmp" としてみても、動きません。

絶対パスの指定方法が分かりません。

SDカードの使用する設定で、試してみようと思っていますが、

ファイル関係で、失敗するとPCが動かなくなるので、
頻繁にシステムイメージからの修復をしています。

補足日時:2015/01/12 10:44
    • good
    • 0
この回答へのお礼

ありがとうございました。

SDカードを使う設定にして、
sdカードのところに、bmpファイルを置いて、

String filename = "/sdcard/Pictures/mdata05.bmp";

としたら、添付ファイルも含めて送信できました。

アドバイスありがとうございました。

お礼日時:2015/01/12 14:45

添付ファイルの形式が binということなのでちょっと微妙なのですが、その添付ファイルは Gmailでブロックされているのではないでしょうか。


一度他のファイル形式(txtや jpg)で試してみてください。

参考:
Gmailヘルプ 「一部のファイル形式がブロックされる」
https://support.google.com/mail/answer/6590?hl=ja
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!