このサイト(http://qiita.com/yoh-nak/items/bff51637fa4f558b37ac)を参考に、
JavaMailを使ってGmailのSMTPでメールを送信する機能を作っています。
コードは以下のようにしました。
java
1 private static void sendmail() { 2 try { 3 // メールの件名 4 String title = "Test"; 5 // メール本文 6 String message = "This is test mail."; 7 8 // 宛先のメールアドレスと宛先の名前 9 String toAddress = "to@gmail.com"; 10 String toName = "to_user"; 11 12 // 送信元のメールアドレスと名前。とりあえず同じにした。 13 String fromAddress = "from@gmail.com"; 14 String fromName = "from_user"; 15 16 // 送信用セッションのプロパティ 17 Properties property = new Properties(); 18 19 property.put("mail.smtp.host", "smtp.gmail.com"); 20 21 // GmailのSMTPを使う場合 22 property.put("mail.smtp.auth", "true"); 23 property.put("mail.smtp.starttls.enable", "true"); 24 property.put("mail.smtp.host", "smtp.gmail.com"); 25 property.put("mail.smtp.port", "587"); 26 property.put("mail.smtp.debug", "true"); 27 28 // gmailに接続するセッションを取得 29 // TODO: gmailにログインするユーザ名とパスワードが必要 30 final String gmailUser = "from@gmail.com"; 31 final String gmailPass = "password"; 32 33 Session session = Session.getInstance(property, new javax.mail.Authenticator() { 34 protected PasswordAuthentication getPasswordAuthentication() { 35 return new PasswordAuthentication(gmailUser, gmailPass); 36 } 37 }); 38 39 MimeMessage mimeMessage = new MimeMessage(session); 40 41 InternetAddress to = new InternetAddress(toAddress, toName); 42 43 mimeMessage.setRecipient(Message.RecipientType.TO, to); 44 45 InternetAddress from = new InternetAddress(fromAddress, fromName); 46 47 mimeMessage.setFrom(from); 48 49 mimeMessage.setSubject(title, "ISO-2022-JP"); 50 51 mimeMessage.setText(message, "ISO-2022-JP"); 52 53 // メール送信 54 Transport.send(mimeMessage); 55 56 } catch (UnsupportedEncodingException | MessagingException e) { 57 e.printStackTrace(); 58 } 59 60 System.out.println("■■■■■メール送信完了■■■■■"); 61 }
しかし以下のエラーによりメールが送れず、タイムアウトによる接続できないということは
なんとなく分かるのですが、原因が分かりませんでした。
どなたか分かる方がいらっしゃいましたら、ご教授お願い致します。
javax.mail.MessagingException: Could not connect to SMTP host: smtp.gmail.com, port: 587; nested exception is: java.net.ConnectException: Connection timed out: connect at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1282) at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:370) at javax.mail.Service.connect(Service.java:297) at javax.mail.Service.connect(Service.java:156) at javax.mail.Service.connect(Service.java:105) at javax.mail.Transport.send0(Transport.java:168) at javax.mail.Transport.send(Transport.java:98) ・・・ Caused by: java.net.ConnectException: Connection timed out: connect at java.net.DualStackPlainSocketImpl.connect0(Native Method) at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:79) at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339) at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200) at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182) at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172) at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) at java.net.Socket.connect(Socket.java:579) at java.net.Socket.connect(Socket.java:528) at com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:232) at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:189) at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1250)
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。