動作確認してないんですけど、MimeMessage を送信する場合は下記のようなコードになると思います(例外処理も必要です)。
Session session = Session.getInstance(new Properties()); MimeMessage message = new MimeMessage(session); message.setFrom(new InternetAddress("from-mail-address")); message.setSender(new InternetAddress("to-mail-address")); message.setSubject("subject"); message.setText("メッセージ", "utf-8"); message.setHeader("Content-Transfer-Encoding", "base64"); sendMail.send(message);試してみてダメだったらコメントください。
受取人指定の行だけ訂正です。
message.addRecipient(RecipientType.TO, new InternetAddress("to-mail-address"));
回答ありがとうございました。確認が遅れてしまい、申し訳ないです。
いただいたサンプルのようにMimeMessageの送信を修正しましたが、やはりNullPointerExceptionになってしまいます。 StackTraceの抜粋も添付させていただきます。 ※ すみません、バージョンを書き忘れていました。バージョンは、1.2.3です。
java.lang.NullPointerException at com.ozacc.mail.impl.SendMailImpl$MimeMessageWrapper.hasEnvelopeTo(SendMailImpl.java:478) at com.ozacc.mail.impl.SendMailImpl.processSend(SendMailImpl.java:181) at com.ozacc.mail.impl.SendMailImpl.send(SendMailImpl.java:151) at com.ozacc.mail.impl.SendMailImpl.send(SendMailImpl.java:140)
よろしくお願いします。
そこで NullPointerException が発生するのは send() の引数として渡している MimeMessage に受取人が設定されていない場合だけだと思うんですけどね・・。 後から追加したコメントのように message.addRecipient() は呼び出していますか?(コメントの編集ができないのは不便ですね・・)
はい、コメントいただいたように、message.addRecipient()を呼び出しています。
もしかすると、send(MimeMessage message)の場合、MimeMessageWrapperでラッピング(下記)されていると思うのですが、 returnPathのみで、envelopeToが渡されていないことが原因だったりしませんでしょうか。
146 public void send(MimeMessage[] messages) throws MailException { 147 MimeMessageWrapper[] mmws = new MimeMessageWrapper[messages.length]; 148 for (int i = 0; i < messages.length; i++) { 149 mmws[i] = new MimeMessageWrapper(messages[i], returnPath); 150 } 151 processSend(mmws); 152 }
すみません、ちょっと勘違いをしていたかも知れません。 とりあえず null チェックを追加したスナップショットを公開しましたので、そちらで動作確認をお願いしてもよろしいでしょうか。
Maven をお使いでしたら下記ページの「スナップショット版」を参照してください。 https://sourceforge.jp/projects/spring-ext/wiki/MavenRepository
JAR は下記のディレクトリにあります(現時点での最新は ozacc-mail-1.2.4-20140122.103559-1.jar です)。 https://oss.sonatype.org/content/repositories/snapshots/jp/sourceforge/spring-ext/ozacc-mail/1.2.4-SNAPSHOT/
よろしくお願いします!
スナップショットへの公開ありがとうございました! Mavenにて、「1.2.4-SNAPSHOT」をダウンロードして、動作確認したところ、 無事、MimeMessageを送信することができました。
ありがとうございました。
確認ありがとうございました!
先ほど 1.2.4 をリリースしました。2時間くらいで Maven Central の方にも反映されるはずです。
1.2.4のリリースありがとうございます。 早速、Mavenに登録して、MimeMessageの送信をすることができました。
早急に対応いただきまして、ありがとうございました!
SendMailImpl.javaのsend(MimeMessage message)を利用すると以下の478行目で、 NullPointerExceptionが発生します。
やりたいこととしては、メールの文字コードをUTF-8で送信したいと考えている のですが、7bitのメールサーバにも対応できるように、メールのbodyをbase64 して送信したいいため、MimeMessageでの送信を利用できるかと思い、 試しているのですが、上記でエラーになってしまいます。 他にUTF-8をbase64で送信できる方法などもあったら、教えていただけると助かります。