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

この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)" となっています。 添付ファイルが送れない原因は何でしょうか? なお、添付ファイルの部分を削除すれば、本文だけのメールは送信できます。 ご指導、よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • backy0175
  • ベストアンサー率87% (102/116)
回答No.2

んんっ? 質問は binですが、コードは bmpですね。 エラーメッセージが "/mdata05.bmp: open failed: ENOENT (No such file or directory)" なので、ファイルPathが正しくないのではないでしょうか。 絶対Pathで指定してみてください。

uyama33
質問者

お礼

ありがとうございました。 SDカードを使う設定にして、 sdカードのところに、bmpファイルを置いて、 String filename = "/sdcard/Pictures/mdata05.bmp"; としたら、添付ファイルも含めて送信できました。 アドバイスありがとうございました。

uyama33
質問者

補足

ありがとうございます。 間違えました。 ファイルは、mdata05.bmp です。 mdata05.bin と書いたのは誤りです。 いま試している段階では、 ファイル名も、内容もビットマプファイルです。 これがうまくいったら、拡張子はbmpだが、内容はバイナリファウル(暗号化したファウル) を添付ファイルとして送信する予定です。 他のファイル bbb.jpg や sss.dat も試したのですが、同じエラー内容で失敗しました。 他の、メールソフトから Gメールのアドレスへは ビットマップファイルも、拡張子がbmpだが、内容的にはバイナリファイルになっているものも 送信できますので、Gメールのサーバーの規制ではないと思います。 絶対パスですが、アンドロイドアプリの入門書には、 ファイルのパスは指定しないで、ファイル名のみを指定すると書いてあったので、 指定は、ファイル名のみにしています。 また、"/files/mdata05.bmp" としてみても、動きません。 絶対パスの指定方法が分かりません。 SDカードの使用する設定で、試してみようと思っていますが、 ファイル関係で、失敗するとPCが動かなくなるので、 頻繁にシステムイメージからの修復をしています。

その他の回答 (1)

  • backy0175
  • ベストアンサー率87% (102/116)
回答No.1

添付ファイルの形式が binということなのでちょっと微妙なのですが、その添付ファイルは Gmailでブロックされているのではないでしょうか。 一度他のファイル形式(txtや jpg)で試してみてください。 参考: Gmailヘルプ 「一部のファイル形式がブロックされる」 https://support.google.com/mail/answer/6590?hl=ja

関連するQ&A

  • 添付ファイルの送信プログラムについて

    JSPとServletで作成された添付ファイル付きメールの送信プログラムがあります。以下にその一部を掲載します。 ***** SendForm.jsp ****** <form action="test/servlet/SendMail"> <input type="submit" value="添付する"> </form> ************************* ***** SendMail.java ***** public void doGet( 略 ) throws 略 { try { Properties props = System.getProperties(); props.put("mail.smtp.host", "xxx.xxx.xxx.xxx"); Session session = Session.getDefaultInstance(props, null); MimeMessage msg = new MimeMessage(session); msg.setFrom(new InternetAddress("test@test.co.jp", "テスト","iso-2022-jp")); msg.setRecipients(Message.RecipientType.TO, "test@test.co.jp"); msg.setSubject("テストメール!" , "iso-2022-jp"); MimeBodyPart mbp1 = new MimeBodyPart(); mbp1.setText("これはテストメールです。" , "iso-2022-jp"); MimeBodyPart mbp2 = new MimeBodyPart(); FileDataSource fds = new FileDataSource("テスト.xls"); mbp2.setDataHandler(new DataHandler(fds)); mbp2.setFileName(MimeUtility.encodeWord(fds.getName())); Multipart mp = new MimeMultipart(); mp.addBodyPart(mbp1); mp.addBodyPart(mbp2); msg.setContent(mp); msg.setSentDate(new Date()); Transport.send(msg); } catch(Exception e) { ( 略 ) } } ************************* 字数が制限されていますので、関係ないところは( 略 )とさせていただいています。 SendForm.jspで「添付する」を押して添付ファイルの送信処理を開始すると、HTTPの501番エラーが発生して、ファイルを送信することができなくなってしまいます(例外は一切発生していません)。なぜ例外ではなく501番のエラーが発生するのでしょうか。

    • ベストアンサー
    • Java
  • StringデータをZIP圧縮してメール添付したい

    以下のロジックで、CSVファイルを送っています。 ファイルサイズが大きくなったので、StringのデータをZIP圧縮して添付したいです。 どのように、ロジックを書けば良いかお教えください。 お願いします。 「java初心者です。」 @SuppressWarnings("serial") public class BackTest_MailServlet extends HttpServlet { @SuppressWarnings("unchecked") public void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException { MailSendTo(meigara1,intYMDFrom ,strSimulationkekka,intJobID); } public void MailSendTo(String meigara1,int intYMDFrom ,String strSimulationkekka,int intJobID) throws IOException{ Properties props = new Properties(); Session session = Session.getDefaultInstance(props, null); try{ MimeMessage msg = new MimeMessage(session); msg.setFrom(new InternetAddress("abcxyz000aa@gmail.com")); msg.addRecipient(Message.RecipientType.TO, new InternetAddress("abcxyz000aa@gmail.com")); int intAttacheSize = strSimulationkekka.length(); String strAttacheFile = strSimulationkekka; String strFileName = meigara1 + "_" + intYMDFrom +"_" + intJobID; msg.setSubject("AA:"+meigara1 +" Size:" + intAttacheSize +" JobID:" + intJobID + " YMD:" + intYMDFrom,"ISO-2022-JP"); // // 本文ボディー部分. // MimeBodyPart body = new MimeBodyPart(); body.setText("メール本文","text/plain"); // メール本文 Multipart mp = new MimeMultipart(); mp.addBodyPart(body); MimeBodyPart attache = new MimeBodyPart(); // //StringのstrAttacheFileをZIPで圧縮して送りたい // attache.setText(strAttacheFile);//添付ファイルの中身 attache.setFileName(strFileName + ".csv"); // 添付ファイル名 mp.addBodyPart(attache);// 添付 msg.setContent(mp); Transport.send(msg); // resp.getWriter().write("OK!!: メール送信完了<br />"); }catch(AddressException e){ // resp.getWriter().write("メールアドレスエラー" + e + "<br />"); }catch(MessagingException e){ // resp.getWriter().write("メッセージングエラー" + e + "<br />"); } } }

    • ベストアンサー
    • Java
  • JAVA NoClassDefFoundError

    javadriveHPのサンプルスクリプトにてメール配信プログラムを動かそうとしています。 環境構築は完了し、サンプルスクリプトも動作確認できました。 そこで、そのスクリプトをサーブレット化しようとして、パッケージ名を付けたところからNoClassDefFoundError(どうやらSessionのようです)が発生しています。 いろいろサイトも調べて解説も読みましたが、どこを直せばよいか検討がつかなかったので質問させていただきました。 下記がソースになりますが、パッケージ名を付ける前は正常に動作していました。 頭悪い私を助けてください;; よろしくお願いします! package Tool; import java.util.*; import java.io.*; import javax.mail.*; import javax.mail.internet.*; import javax.activation.*; public class Sendmail { public String mailHost = ""; public String mailTo = ""; public String mailFrom = ""; public String mailSubject = ""; public String mailMessage = ""; public Sendmail(){} public void setHost (String h) { mailHost = h; } public void setTo (String t) { mailTo = t; } public void setFrom (String f) { mailFrom = f; } public void setSubject (String s) { mailSubject = s; } public void setMessage (String m) { mailMessage = m; } public void mailSend() { Properties props = new Properties(); props.put("mail.smtp.host", mailHost); props.put("mail.host", mailHost); props.put("mail.from", mailFrom); Session s = Session.getInstance(props); try { MimeMessage msg = new MimeMessage(s); msg.setFrom(new InternetAddress(mailFrom)); InternetAddress[] address = InternetAddress.parse(mailTo); msg.setRecipients(Message.RecipientType.TO, address); msg.setSubject(mailSubject, "ISO-2022-JP"); msg.setSentDate(new Date()); msg.setText(mailMessage, "ISO-2022-JP"); Transport.send(msg); } catch(MessagingException mex) { System.out.println("--Exception handling in msgsendsample.java"); mex.printStackTrace(); } } /* public static void main(String args[]) { Sendmail sm = new Sendmail(); sm.setHost("XX.XX.XX.XX"); sm.setTo("XXXX@XXXX"); sm.setFrom("XXX@XXX"); sm.setSubject("ああああ"); sm.setMessage("いいいいい"); sm.mailSend(); } */ }

    • ベストアンサー
    • Java
  • javascriptにてお問い合わせフォームを作っ

    javascriptにてお問い合わせフォームを作っていて、 最後の送信ボタンを押すと送信されるはずが、エラーとなってしまいます。 素人で何もわかりません。 すいませんが、ご教授ください。 エラー内容 ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ 担当者への送信に失敗しました。 エラー内容:javax.mail.internet.AddressException: Missing '<' in string ``"" <>'' at position 31 本文内容 ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub //受け取るデータの文字コードをUTF-8にセットする request.setCharacterEncoding("UTF-8"); //パラメーター”title”の値を取り出し、変数titleに代入 String title = request.getParameter("title"); //パラメーター”message”の値を取り出し、変数messageに代入 String message = request.getParameter("message"); //出力先のコンテントタイプをセットする response.setContentType("text/html; charset=UTF-8"); //出力先を取り出し、変数outに代入する PrintWriter out = response.getWriter(); //メールの送信 try { //プロバティの作成 Properties property = new Properties(); //SMTPサーバーのセット property.put("mail.smtp.host","<サーバー名>"); //メールセッションを確率 Session session = Session.getDefaultInstance(property,null); //送信メッセージを生成 MimeMessage mimeMessage =new MimeMessage(session); //Toアドレスのセット InternetAddress toAddress = new InternetAddress("メールアドレス>","<名前>");mimeMessage.setRecipient(Message.RecipientType.TO,toAddress);//Fromアドレスのセット InternetAddress fromAddress = new InternetAddress("メールアドレス>","<名前>");mimeMessage.setFrom(fromAddress); //タイトル(件名)のセット mimeMessage.setSubject(title,"ISO-2022-JP"); //本文のセット mimeMessage.setText(message,"ISO-2022-JP"); //メールの送信 Transport.send(mimeMessage); //送信OK out.println("<html><body>"); out.println("■お問い合わせ内容を担当者へ送信しました。"); out.println("</body></html>"); } catch (Exception e) { //送信エラー out.println("<html><body>"); out.println("担当者への送信に失敗しました。"); out.println("<br>エラー内容:"+e); out.println("</body></html>"); } //出力する out.close(); } }

  • 添付ファイルはファイルでなければならないのか?

    作ったイメージデータをファイルに落とし ------------(1) そのファイルを添付ファイルとして送信しています ----(2) Bitmap MyImage = new Bitmap(300, 300); Graphics g = Graphics.FromImage(MyImage); ここから g に色々書込みます MyImage.Save(@"MyImage.bmp", ImageFormat.Bmp); ----(1) System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient(); smtp.Host = "smtp.MyMail.com"; string MailSubject = ""; string MailBody = ""; MailMessage oMsg = new MailMessage("MyMail○○○@MyMail.com", "MyFreind□□□@FreindMail.com", MailSubject, MailBody); oMsg.Attachments.Add(new Attachment(@"MyImage.bmp")); ----(2) smtp.Send(oMsg); //メール送信 ご覧の通りイメージをファイルに書き出す目的は添付ファイル化する為だけです ファイルに落とさずにイメージを送信することは可能でしょうか? ⇒ある特殊な理由によりイメージをファイルとして一瞬たりとも存在させたくないのです

  • 添付ファイルとしてメールを貼り付けた場合の疑問

    どのメールソフトでも読める標準拡張子って何かあるのでしょうか? たとえばメールソフトOUTLOOKの拡張子は『.msg』になります。 添付ファイルとして.msgファイルをメールに貼り付けた場合、 メールをもらった人はOUTLOOK以外の メールソフトを使用しているかもしれません。 メールをもらった人が 他のメールソフト(OUTLOOK)以外を使用していた場合 添付ファイルの『.msg』を他のメールソフトから開けるものなのでしょうか?

  • プロキシ経由でjavamailを使ってyahooにメール送信

    社内から社外へのネットワーク通信(インターネット)にはプロキシをかませています。 この環境下で、社内で、Javamailを使い、yahooへメール送信を行いたいと思っております。 ソースは以下です。 ---------------------------------------------------------------- //初期設定 Properties props = new Properties(); //接続するSMTP props.put("mail.smtp.host","smtp.mail.yahoo.co.jp"); //SMTP before POP3対応 props.put("mail.smtp.auth", "true"); //ポートの設定 props.put("mail.smtp.port", String.valueOf("25")); Session sess = Session.getInstance(props); MimeMessage mimeMessage = new MimeMessage(sess); //送信元メールアドレスと送信者名を指定 mimeMessage.setFrom(new InternetAddress("xxx@xxx.co.jp","name","iso-2022-jp")); //送信先メールアドレス指定 mimeMessage.setRecipients(Message.RecipientType.TO, "xxx@yahoo.co.jp"); //SUBJECT mimeMessage.setSubject("メールテスト","iso-2022-jp"); //SEND DATE mimeMessage.setSentDate(new Date()); //CONTENTS mimeMessage.setText("日本語OK?\n改行\n","iso-2022-jp"); Transport transport = sess.getTransport("smtp"); //認証用ユーザ名とパスワードを設定しコネクト transport.connect(null,"user name","password"); //メール送信 transport.sendMessage(mimeMessage, mimeMessage.getAllRecipients()); transport.close(); ---------------------------------------------------------------- 実行すると、Unknown SMTP host: smtp.yahoo.co.jp というエラーが出ます。 社外への通信は一度プロキシサーバを経由しているのが原因ではないかと思うのですが、どうしたらいいか分かりません。 どなたかご教授願います。

    • ベストアンサー
    • Java
  • 添付ファイルが増えている!?

    2つのファイル(jpg)を添付して送りました。後日何気なく送信済みフォルダから、プロパティを見てみると、添付ファイルが3となっているのです。 不思議に思い、過去の添付ファイルを確認すると、必ず添付したファイルプラス1になっているのです。 これってウィルスでしょうか? ちなみにメールからは増えた謎の添付ファイルを確認する事はできません。あと、パソコンは問題なく動いているのですが… 詳しい方教えてください。よろしくお願いします。

  • OutlookExpress6 添付ファイルについて

    バンドをやっているため、たまにメンバー間で音源をmp3形式でメールでやりとりするんですが 今日届いたmp3の添付ファイルが開けませんでした。 「次の添付ファイルは安全でないため、メールからのアクセスが削除されました」 と出ます。プレビューウィンドウのクリップのマークをクリックしても ファイル名がうすい文字になってて、クリックできません。 その友達のファイルがおかしいのかな?と思って、ためしに 自分で自分あてに別のmp3ファイルを添付して送信してみましたが、 やはり同じ結果でした。 以前は普通にやりとりしてたのに、できなくなったということは WinXPがsp2になったからでしょうか?? mp3の添付ファイルが開ける方法を教えてください。 かなり困っています。よろしくお願いします!

  • 添付ファイルが見えない。

    友人からメールの添付ファイルで画像を送ってもらいましたが、 文字は書いてありますが画像が見られません。プロパティでの メールサイズは2101KBと大きいし、そのメールを受信した時の 所要時間も画像が添付して有るなと感じる程の長さでした。 クリップマークも有りません。他の人からの添付は見られます。 セキュリティのウイルスの可能性のある添付ファイルを..... のチェックも外してあります。原因が相手に有るのか、 こちらに有るのか?何が考えられるでしょうか?

専門家に質問してみよう