- - PR -
JavaMailでのSMTP送信時の553エラーについて
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2006-09-12 15:58
JavaMail(API)を利用してSMTPでメール送信をしようとしています。
その際、下記エラーが発生します。 ------------------------------------------------------------------------------ javax.mail.SendFailedException: Invalid Addresses; nested exception is: com.sun.mail.smtp.SMTPAddressFailedException: 553 sorry, that domain isn't in my list of allowed rcpthosts (#5.7.1) at com.sun.mail.smtp.SMTPTransport.rcptTo(SMTPTransport.java:1196) at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:584) at javax.mail.Transport.send0(Transport.java:169) at javax.mail.Transport.send(Transport.java:98) at eip.admin.ActEmlSendHen.send_mail(ActEmlSendHen.java:112) at eip.admin.EmlsendHen.doPost(EmlsendHen.java:53) at javax.servlet.http.HttpServlet.service(HttpServlet.java) at javax.servlet.http.HttpServlet.service(HttpServlet.java) at org.apache.tomcat.facade.ServletHandler.doService(ServletHandler.java:534) at org.apache.tomcat.core.Handler.invoke(Handler.java:280) at org.apache.tomcat.core.Handler.service(Handler.java:193) at org.apache.tomcat.facade.ServletHandler.service(ServletHandler.java:445) at org.apache.tomcat.core.ContextManager.internalService(ContextManager.java:874) at org.apache.tomcat.core.ContextManager.service(ContextManager.java:790) at org.apache.coyote.tomcat3.Tomcat3Adapter.service(Tomcat3Adapter.java:64) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:793) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:702) at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:571) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:644) at java.lang.Thread.run(Thread.java:534) Caused by: com.sun.mail.smtp.SMTPAddressFailedException: 553 sorry, that domain isn't in my list of allowed rcpthosts (#5.7.1) at com.sun.mail.smtp.SMTPTransport.rcptTo(SMTPTransport.java:1047) ... 19 more ------------------------------------------------------------------------------ 認証の関係で先に受信をしないとだめなのかと思い、受信(pop3)をしてから送信(SMTP)にしてみました。 しかし、受信ではエラーとなっていないようなのですが、 ●Transport.send(mimeMessage); で上記のようなエラーとなってしまいます。 ------------------------------------------------------------------------------ try { // 初期設定 Properties props = new Properties(); props.put("mail.smtp.host", "mail.xxxxx.co.jp"); props.put("mail.smtp.port", String.valueOf("25")); props.put("mail.host","mail.xxxxx.co.jp"); // 接続するホスト名 Session sess = Session.getDefaultInstance(props, null); // 接続 Store store; store = sess.getStore("pop3"); try { //ホスト・プロトコル・ユーザ名・パスワード store.connect("mail.xxxxx.co.jp", 110, "xxxxx", "xxxxx"); Folder rootFolder = store.getDefaultFolder(); Folder inbox = rootFolder.getFolder("INBOX"); // これのみ inbox.open(Folder.READ_ONLY); Message[] messages = inbox.getMessages(); // 全部取得 inbox.close(false); // メールは消さない //store.close(); } catch(MessagingException e){ e.printStackTrace(); return false; } // まずSMTPサーバを設定してメール送信を初期化します。 // Session session = Session.getDefaultInstance(props, null); MimeMessage mimeMessage = new MimeMessage(sess); // 送信元メールアドレスと送信者名を指定 mimeMessage.setFrom(new InternetAddress("xxxx@xxxxx.co.jp", "らいむ","iso-2022-jp")); // 送信先メールアドレスを指定 mimeMessage.setRecipients(Message.RecipientType.TO, "xxxx@xxxx.co.jp"); // メールのタイトルを指定 mimeMessage.setSubject("SendMailでファイル添付!" , "iso-2022-jp"); // 件名 mimeMessage.setSubject("メールテスト","ISO-2022-JP"); // 本文 mimeMessage.setText("こんにちは","ISO-2022-JP"); // メール送信 Transport.send(mimeMessage); } catch (Exception e) { e.printStackTrace(); //例外処理 ls_msg = "システム例外発生"; eipz920e z920e = new eipz920e(this.getClass().getName() ,ls_msg , "none", request); // システムエラー画面(apply_err.html)へ String encodedURL = response.encodeRedirectURL(HttpsDetail.getHttpsURL("apply_err.html")); return false; } ------------------------------------------------------------------------------ メールアドレス・アカウント名・パスワードは受信時にはエラーがないのですが、 SMTPでエラーとなっています。 今回の使用しているSMTPの場合は送信時にもアカウント名・パスワードの認証が必要との ことなのですが、受信時の設定はSroreで可能だとわかったのですが、送信時にはMimeMessageの何を使えば アカウント名・パスワードを設定できるのでしょうか? どなたかご教授をよろしくお願い致します。 [ メッセージ編集済み 編集者: らいむ 編集日時 2006-09-12 16:26 ] [ メッセージ編集済み 編集者: らいむ 編集日時 2006-09-12 18:15 ] |
|
投稿日時: 2006-09-12 16:44
"mail.smtp.auth"プロパティかな?
とか適当に言ってみる。 |
|
投稿日時: 2006-09-13 12:27
[quote]
Caused by: com.sun.mail.smtp.SMTPAddressFailedException: 553 sorry, that domain isn't in my list of allowed rcpthosts (#5.7.1) [quote] SMTPサーバの設定で、リストに無いSMTPサーバにメール転送しようとすると発生した ことが昔ありまして、どこにでも転送できる設定にしたらでエラーが出なくなった 経験がありましたよ。 |
|
投稿日時: 2006-09-13 12:51
ご教授、大変にありがとうございます。
みなさんに戴いたヒントを元に試したら送信できました。 ●props.put("mail.smtp.auth","true"); ●Transport認証用ユーザ名とパスワードを設定しコネクト xxx.connect(null,"xxxx(アカウント名)","xxxxxx(パスワード)"); ●send → sendMessageへの変更 xxx.sendMessage( mimeMessage,mimeMessage.getFrom()); にすることでPOP3の受信をしなくてもOKでした。 ------------------------------------------------------------------ // 初期設定 Properties props = new Properties(); // 接続するSMTP props.put("mail.smtp.host", "xxxx.xxxx.co.jp"); // SMTP before POP3対応 props.put("mail.smtp.auth","true"); // JavaMailのデバッグモード props.put("mail.debug", "true"); // ポートの設定 props.put("mail.smtp.port", String.valueOf("25")); // 接続するホスト名 props.put("mail.host","xxxx.xxxx.co.jp"); Session sess = Session.getInstance (props); MimeMessage mimeMessage = new MimeMessage(sess); // 送信元メールアドレスと送信者名を指定 mimeMessage.setFrom(new InternetAddress("xxxx@xxxx.co.jp", "○○○○","iso-2022-jp")); // 送信先メールアドレスを指定 mimeMessage.setRecipients(Message.RecipientType.TO, "xxxxxx@xxxx.co.jp"); // 件名 mimeMessage.setSubject("メールテスト","iso-2022-jp"); // 送信日時 mimeMessage.setSentDate( new Date()); // 本文 mimeMessage.setText("こんにちは、テスト送信。\n改行される?\n","iso-2022-jp"); Transport transport = sess.getTransport("smtp"); // 認証用ユーザ名とパスワードを設定しコネクト transport.connect(null,"xxxx(アカウント名)","xxxxxx(パスワード)"); // メール送信 //transport.sendMessage( mimeMessage,mimeMessage.getFrom()); <--- 間違い ToとBccに届かない transport.sendMessage( mimeMessage,mimeMessage.getAllRecipients()); // クローズ transport.close(); ------------------------------------------------------------------ ご教授、ありがとうございました<(_ _)> [ メッセージ編集済み 編集者: らいむ 編集日時 2006-09-15 14:44 ] |
1