eclipseでjavaを使い動的webプロジェクトの開発を志している者です。
開発しているアプリにメール機能が必要なので、まずは試しに送れるか試しています。
調べながら修正しておりますが、Could not convert socket to TLS;とTLSを使えていないエラーが出てしまします。
以下に該当コードとエラー、環境を記載しますのでおかしな所があればご指摘お願いします。
java
1package mail; 2 3import java.util.Date; 4import java.util.Properties; 5 6import javax.mail.Message; 7import javax.mail.Session; 8import javax.mail.internet.InternetAddress; 9import javax.mail.internet.MimeMessage; 10 11import com.sun.mail.smtp.SMTPTransport; 12 13public class SendMail { 14 public static void main(String[] argv) { 15 mailSend("タイトル", "本文", "発信先@gmail.com", "発信元@gmail.com", "発信元パス"); 16 } 17 18 public static void mailSend(String title, String text, String toAddress, 19 String fromAddress, String password) { 20 21 try { 22 // プロパティの設定 23 Properties props = System.getProperties(); 24 props.put("mail.smtp.host", "smtp.gmail.com"); 25 props.put("mail.smtp.auth", "true"); 26 props.put("mail.smtp.starttls.enable", "true"); 27 props.put("mail.smtp.host", "smtp.gmail.com"); 28 props.put("mail.smtp.port", "587"); 29 props.put("mail.smtp.debug", "true"); 30 31 Session session = Session.getInstance(props); 32 Message msg = new MimeMessage(session); 33 34 // 送信元メールアドレスのセット 35 msg.setFrom(new InternetAddress(fromAddress)); 36 37 // 送信先メールアドレスのセット 38 msg.setRecipients(Message.RecipientType.TO, 39 InternetAddress.parse(toAddress, false)); 40 41 // メールタイトル 42 msg.setSubject(title); 43 44 // メール本文 45 msg.setText(text); 46 47 // 送信日 48 msg.setSentDate(new Date()); 49 50 // メール送信 51 SMTPTransport t = (SMTPTransport) session.getTransport("smtp"); 52 try { 53 t.connect("smtp.gmail.com", fromAddress, password); 54 t.sendMessage(msg, msg.getAllRecipients()); 55 } finally { 56 t.close(); 57 } 58 59 } catch (Exception e) { 60 e.printStackTrace(); 61 } 62 } 63} 64
javax.mail.MessagingException: Could not convert socket to TLS; nested exception is: javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate) at com.sun.mail.smtp.SMTPTransport.startTLS(SMTPTransport.java:1918) at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:652) at javax.mail.Service.connect(Service.java:295) at javax.mail.Service.connect(Service.java:176) at mail.SendMail.mailSend(SendMail.java:53) at mail.SendMail.main(SendMail.java:15) Caused by: javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate) at java.base/sun.security.ssl.HandshakeContext.<init>(HandshakeContext.java:170) at java.base/sun.security.ssl.ClientHandshakeContext.<init>(ClientHandshakeContext.java:98) at java.base/sun.security.ssl.TransportContext.kickstart(TransportContext.java:221) at java.base/sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:433) at java.base/sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:411) at com.sun.mail.util.SocketFetcher.configureSSLSocket(SocketFetcher.java:548) at com.sun.mail.util.SocketFetcher.startTLS(SocketFetcher.java:485) at com.sun.mail.smtp.SMTPTransport.startTLS(SMTPTransport.java:1913) ... 5 more
環境
JAVA11
「mail.jar」,「activation.jar」はクラスパスを通しています
「javaアプリケーションで実行」で実行しています。
gmailの「安全性の低いアプリケーションへのアクセス」はONにしています。
あなたの回答
tips
プレビュー