我在尝试通过Office365使用javax.mail (1.4.4)
发送邮件时,遇到了SMTP设置方面的问题,因此我想在这里发布属性以供其他人参考。
我在尝试通过Office365使用javax.mail (1.4.4)
发送邮件时,遇到了SMTP设置方面的问题,因此我想在这里发布属性以供其他人参考。
private static Properties props;
private static Session session;
static {
props = new Properties();
props.put("mail.smtp.starttls.enable", "true");
props.put("mail.smtp.port", "587");
props.put("mail.smtp.host", "m.outlook.com");
props.put("mail.smtp.auth", "true");
session = Session.getInstance(props, new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("office365 email address",
"office365 password");
}
});
}
使用spring-boot,你只需要将以下内容添加到你的application.properties
文件中:
spring.mail.host = smtp.office365.com
spring.mail.username = mathieu.pousse@headquarter.com
spring.mail.password = s3cr3t
spring.mail.port = 587
spring.mail.properties.mail.smtp.auth = true
spring.mail.properties.mail.smtp.starttls.enable = true
Email email = new SimpleEmail();
email.setHostName("smtp.office365.com");
email.setSmtpPort(587);
email.setAuthenticator(new DefaultAuthenticator("a@b.com", "****"));
email.setStartTLSEnabled(true);
try {
email.setFrom("a@b.com");
email.setSubject("Job Failure");
email.setDebug(true);
email.setMsg("This is a test mail ... :-)" );
email.addTo("a@y.com");
email.send();
} catch (EmailException e) {
e.printStackTrace();
}
我在你的代码中唯一注意到的错误是不正确的主机名
javaMailProperties.setProperty("mail.smtp.from", "abc@c.com");
javaMailProperties.setProperty("mail.smtp.user", "abc@c.com");
javaMailProperties.setProperty("mail.smtp.password","Password");
javaMailProperties.setProperty("mail.smtp.host", "smtp.office365.com");
javaMailProperties.setProperty("mail.smtp.port", "587");
javaMailProperties.setProperty("mail.smtp.auth", "true");
javaMailProperties.setProperty("mail.smtp.starttls.enable", "true");
更改主机,一切都会好起来。
587
更改为"587"
后才能正常运行。否则,JavaMail 将尝试通过端口 25 连接。 - Glorfindelconnect(server, user, password)
之后使用Transport
实例上的transport.sendMessage(...)
,则不需要使用Authenticator。 - JBert