- ベストアンサー
javamailでメール送信ができません
javamailでメールを送信しようとすると エラーが表示されます。 コードとエラー内容http://okwave.jp/qa/q6678667.html いったい何が原因なのかさっぱりわかりません パソコンのセキュリティソフトはすべて削除しましたし ファイアーウォールも無効にしています。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
No3の回答が何故「調査中」なのか不明なのですが(単にjavaのプログラムなのに・・・)、 http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1443229334 に似たようなプログラムがありますので、見てみてください。
その他の回答 (3)
- mintia007
- ベストアンサー率59% (16/27)
import java.util.*; import javax.mail.*; import javax.mail.internet.*; public class MailTransfer{ public static void main(String[] args) { try { // SMTPサーバー設定 Properties props = System.getProperties(); props.setProperty( "mail.smtp.port", "587"); props.setProperty("mail.smtp.socketFactory.port", "587"); props.put( "mail.smtp.host", "smtp.mail.yahoo.co.jp" ); props.setProperty("mail.smtp.auth", "true"); Session session = Session.getInstance(props, new Authenticator(){ protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication( "ユーザー名", "パスワード" ); } }); MimeMessage mimeMessage=new MimeMessage( session ); // 送信元メールアドレスと送信者名を指定 mimeMessage.setFrom( new InternetAddress( "ユーザー名@yahoo.co.jp", "ユーザー名", "ISO-2022-JP" ) ); // 送信先メールアドレスを指定 mimeMessage.setRecipients( Message.RecipientType.TO, "送信先@yahoo.co.jp" ); // メールのタイトルを指定 mimeMessage.setSubject( "メールテスト", "ISO-2022-JP" ); // メールの内容を指定 mimeMessage.setText( "こんにちは\n", "ISO-2022-JP" ); // メールの形式を指定 mimeMessage.setHeader( "Content-Type", "text/html" ); // 送信日付を指定 mimeMessage.setSentDate( new Date() ); // 送信します Transport.send( mimeMessage ); } catch (Exception e) { e.printStackTrace(); } } } PasswordAuthenticationのところで指定する、ユーザー名は取得したアカウントでyahooの場合「@yahoo.co.jp」は不要ですので気をつけてください。 ex. xxxxx@yahoo.co.jpというメールアドレスなら、"xxxxx","パスワード" // 送信元メールアドレスと送信者名を指定 の部分ですが、送信元の "メールアドレス","送信した人の名前" を指定します。 ex. 送る人が山田なら、 "yamada@yahoo.co.jp","山田" あと、別に無くても良い部分がありますが、カスタマイズしてください。 ちなみに、初回送ると届くのに数分かかる場合があります。
- mintia007
- ベストアンサー率59% (16/27)
hotmailはちょっと工夫が必要かもしれません。若しくはサーバーの指定が違うのかもしれません。一応、yahoo、so-net、nifty、OCN、.biglobe等では上手く送受信の実績ありますが。。。 他の回答者様からの回答を待ってください。私はココまでで。 PS. yahooのメールサーバーではダメなのでしょうか? OKなら解説できるのですが・・・
お礼
ご回答ありがとうございます。 yahooのメールアドレスを作成しましたのでyahooのメールサーバでの 接続方法を教えていただけませんでしょうか。 よろしくお願いいたします。
- mintia007
- ベストアンサー率59% (16/27)
hotamilのサーバーが、どのような設定になってるか分かりません。参考までという事で。 1.PopBeforeSMTPな場合。 >>Session session=Session.getDefaultInstance(objPrp,null); の下の行に、 Store store = session.getStore("pop3"); store.connect(pop3Host, "ユーザー名", "パスワード" ); を追加。 2.hotamilのSMTPサーバーがサブミッション・ポートを使用している場合。 >>Properties objPrp=new Properties(); の下の行に、 objPrp.setProperty( "mail.smtp.port", "587"); を追加。 >>Session session=Session.getDefaultInstance(objPrp,null); を、 Session session = Session.getInstance(objPrp, new Authenticator(){ protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication( "ユーザー名", "パスワード" ); } }); に変更。 尚、ユーザー名とパスワードは取得したアカウントのものを用います。 ちなみにJakarta Commons-Emailを使うと少々、楽にできますけどね。
お礼
ご回答ありがとうございます。解答どうりにコードを修正した結果以下のエラーがでました。 1.のコードの場合 javax.mail.MessagingException: Connect failed; nested exception is: java.net.ConnectException: Connection refused: connect javax.mail.MessagingException: Could not connect to SMTP host: smtp.email.msn.com, port: 25; nested exception is: java.net.ConnectException: Connection timed out: connect というエラーが直ぐに帰ってきた。 2.のコードの場合 javax.mail.MessagingException: Could not connect to SMTP host: smtp.email.msn.com, port: 587; というエラー お忙しいところ申し訳ありませんが再度解決策を考えていただけませんでしょうか。
お礼
ご回答ありがとうございました。 解答の手順どうりに行ったところメール送信を行うことができました。 jakarta-comons-emailでもメール送信を行うことができました。 ちょっと感動しています。 msnのメール送信ではoutlookからも送信できなかったのでそれがおそらく原因 なのかなと思っています。 ありがとうございました。