質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Q&A

解決済

2回答

3836閲覧

JavaMail による添付付きメール送信について

tanamochi

総合スコア83

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

0グッド

1クリップ

投稿2016/04/21 11:05

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

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();

よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

「パスは間違いないはず」はあまり信用できません。File#existで存在を確認するべきでしょう。

URI#getPathは必ずしもFileの実体を指しているわけではありません。
適切に変換する必要があります。

投稿2016/04/21 18:24

yona

総合スコア18155

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tanamochi

2016/04/21 23:59

ありがとうございます! 試してみます!
guest

0

自己解決

http://workpiles.com/2014/07/android-gallary-intent/
こちらのリンクをカスタムして実装できました

投稿2016/04/26 02:25

tanamochi

総合スコア83

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問