在发布之前,我在互联网上阅读了很多东西和建议的问题,但找不到任何适合我的东西。
- 关于使用 gmail 的 JavaMail 常见问题解答
- 堆栈溢出问题
- JavaMail 教程
- 谷歌搜索的任何其他结果
在过去的 5 天里,我一直在寻找解决方案,但找不到。
相关代码:
private void sendMail(){
final String username = "foo";
final String password = "bar";
Properties props = System.getProperties();
props.put("mail.smtp.starttls.enable", true); // added this line
props.put("mail.smtp.host", "smtp.gmail.com");
props.put("mail.smtp.user", username);
props.put("mail.smtp.password", password);
props.put("mail.smtp.port", "587");
props.put("mail.smtp.auth", true);
props.put("mail.debug", "true");
Session session = Session.getInstance(props,null);
MimeMessage message = new MimeMessage(session);
System.out.println("Port: "+session.getProperty("mail.smtp.port"));
// Create the email addresses involved
try {
InternetAddress from = new InternetAddress(username);
message.setSubject("Yes we can");
message.setFrom(from);
message.addRecipients(Message.RecipientType.TO, InternetAddress.parse("ardilgulez@gmail.com"));
// Create a multi-part to combine the parts
Multipart multipart = new MimeMultipart("alternative");
// Create your text message part
BodyPart messageBodyPart = new MimeBodyPart();
String htmlMessage = "Our html text";
messageBodyPart.setContent(htmlMessage, "text/html");
// Add html part to multi part
multipart.addBodyPart(messageBodyPart);
// Associate multi-part with message
message.setContent(multipart);
// Send message
Transport transport = session.getTransport("smtp");
transport.connect("smtp.gmail.com", username, password);
System.out.println("Transport: "+transport.toString());
transport.sendMessage(message, message.getAllRecipients());
} catch (MessagingException e) {
e.printStackTrace();
}
}
邮件调试日志文件:
调试:JavaMail 版本 1.4.1 ..... 调试:!anyLoaded
调试:未加载资源:/META-INF/javamail.address.map
调试:未加载文件:C:\Java\JDK16~1.0_4\jre\lib\javamail.address.map
DEBUG: java.io.FileNotFoundException: C:\Java\JDK16~1.0_4\jre\lib\javamail.address.map (系统找不到指定的文件)
港口:587
调试:getProvider() 返回 javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc]
调试 SMTP:useEhlo true,useAuth false
调试 SMTP:尝试连接到主机“smtp.gmail.com”,端口 587,isSSL false 220 smtp.gmail.com ESMTP t2sm2978726wme.0 - gsmtp
调试 SMTP:连接到主机“smtp.gmail.com”,端口:587
埃洛福
250-smtp.gmail.com 为您服务,[212.156.0.126]
250 尺寸 35882577
250-8BITMIME
250-STARTTLS
250 增强状态代码
250-流水线
250 分块
250 SMTPUTF8
调试 SMTP:找到扩展名“SIZE”,arg“35882577”
调试 SMTP:找到扩展名“8BITMIME”,arg“”
调试 SMTP:找到扩展“STARTTLS”,arg“”
调试 SMTP:找到扩展“ENHANCEDSTATUSCODES”,arg“”
调试 SMTP:找到扩展“管道”,arg“”
调试 SMTP:找到扩展名“CHUNKING”,arg“”
调试 SMTP:找到扩展名“SMTPUTF8”,arg“”
运输:smtp://foo@smtp.gmail.com
调试 SMTP:use8bit false
发件人:< foo >
530 5.7.0 必须先发出 STARTTLS 命令。t2sm2978726wme.0 - gsmtp
调试 SMTP:得到响应代码 530,响应:530 5.7.0 必须先发出 STARTTLS 命令。t2sm2978726wme.0 - gsmtp