※ ChatGPTを利用し、要約された質問です(原文:添付ファイルが送れない)
添付ファイルが送れない原因は何でしょうか?
2015/01/11 14:39
このQ&Aのポイント
Eclipse(Juno) を使って、Android のメールアプリを作成中ですが、添付ファイルの送信ができません。
添付ファイル付のメールを送信するために、ネットにあるソースコードを使用しています。
しかし、送信しようとすると「IOException while sending message. /mdata05.bmp: open failed: ENOENT (No such file or directory)」というエラーが発生します。
いつもお世話になっています。
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)"
となっています。
添付ファイルが送れない原因は何でしょうか?
なお、添付ファイルの部分を削除すれば、本文だけのメールは送信できます。
ご指導、よろしくお願いします。
質問の原文を閉じる
質問の原文を表示する
お礼
ありがとうございました。 SDカードを使う設定にして、 sdカードのところに、bmpファイルを置いて、 String filename = "/sdcard/Pictures/mdata05.bmp"; としたら、添付ファイルも含めて送信できました。 アドバイスありがとうございました。
補足
ありがとうございます。 間違えました。 ファイルは、mdata05.bmp です。 mdata05.bin と書いたのは誤りです。 いま試している段階では、 ファイル名も、内容もビットマプファイルです。 これがうまくいったら、拡張子はbmpだが、内容はバイナリファウル(暗号化したファウル) を添付ファイルとして送信する予定です。 他のファイル bbb.jpg や sss.dat も試したのですが、同じエラー内容で失敗しました。 他の、メールソフトから Gメールのアドレスへは ビットマップファイルも、拡張子がbmpだが、内容的にはバイナリファイルになっているものも 送信できますので、Gメールのサーバーの規制ではないと思います。 絶対パスですが、アンドロイドアプリの入門書には、 ファイルのパスは指定しないで、ファイル名のみを指定すると書いてあったので、 指定は、ファイル名のみにしています。 また、"/files/mdata05.bmp" としてみても、動きません。 絶対パスの指定方法が分かりません。 SDカードの使用する設定で、試してみようと思っていますが、 ファイル関係で、失敗するとPCが動かなくなるので、 頻繁にシステムイメージからの修復をしています。