いつもお世話になっております。
JavaMailというライブラリを使って添付画像付きメールを送る処理を書いていたところハマってしまったので質問です。
メールの送信自体は出来ているのですが添付ファイルをつけると
Java
1java.io.FileNotFoundException: /document/image:******: open failed: ENOENT (No such file or directory) 2(******は伏せていて実際には別の数値が入っています。)
というエラーを吐いてしまいます。
実際にはギャラリーから画像を引っ張ってきているのでファイルが存在しないということはありません。
また引っ張ってきた時と転送時のエラーにあるファイルパスは同一のものというのも確認しました。
以下ソースです。
Java
1// ギャラリーから選択してデータを引っ張るところ 2protected void onActivityResult(int requestCode, int resultCode, Intent data) { 3 if (resultCode == RESULT_OK) { 4 Uri uri = data.getData(); 5 Bitmap bmp = null; 6 if (requestCode == REQUEST_KITKAT_PICK_CONTENT) { 7 getContentResolver().takePersistableUriPermission(uri, data.FLAG_GRANT_READ_URI_PERMISSION | data.FLAG_GRANT_WRITE_URI_PERMISSION); 8 try { 9 bmp = MediaStore.Images.Media.getBitmap(getContentResolver(), uri); 10 ImageView img = new ImageView(this); 11 img.setImageBitmap(bmp); 12 13 mFilePaths.add(uri.getPath()); 14
Java
1// 添付データ用にデータ作成 2final Multipart mp = new MimeMultipart(); 3 4 for (int i = 0; i < mFilePaths.size(); i++) { 5 final MimeBodyPart filePart = new MimeBodyPart(); 6// File file = new File(mFilePaths.get(i)); 7 FileDataSource fds = new FileDataSource(mFilePaths.get(i)); 8 DataHandler dataHandler = new DataHandler(fds); 9 filePart.setDataHandler(dataHandler); 10 String name = fds.getName(); 11 try { 12 filePart.setFileName(MimeUtility.encodeWord(fds.getName())); 13 } catch (UnsupportedEncodingException e) { 14 e.printStackTrace(); 15 } 16 17 //mp.addBodyPart(txtPart); 18 mp.addBodyPart(filePart); 19 } 20 mimeMsg.setContent(mp);
Java
1mimeMsg.setRecipients(Message.RecipientType.TO, mToAddresses.get(i)); 2 3 // メール送信する。 4 final Transport transport = session.getTransport("smtp"); 5 transport.connect(emailFrom, password); 6 transport.sendMessage(mimeMsg, mimeMsg.getAllRecipients()); // この処理でエラーcatchされる 7 transport.close();
よろしくお願いします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/04/21 23:59