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

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

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

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

Q&A

2回答

10228閲覧

JavaMailを使ってGmailのSMTPでメールを送信する

plue

総合スコア71

Java

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

0グッド

0クリップ

投稿2015/12/29 03:01

このサイト(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)

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

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

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

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

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

guest

回答2

0

認証情報が間違っていなければ、GMail側でブロックされているかもしれません。GMailののsmtpは、外部アプリケーションから呼び出して使っていると、「安全性の低いアプリ」とみなしてアクセスをブロックしてしまうことがあります。

Googleの設定

上のURLから、「安全性の低いアプリ」のブロック設定を無効にして、試して見てはいかがでしょうか。

投稿2015/12/29 07:00

shanxia

総合スコア1038

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

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

0

とりあえず、他のメーラーなどで接続できるか試してみてはどうでしょうか?

投稿2015/12/29 03:29

kozuchi

総合スコア1193

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問