我正在尝试使用office365通过java mail api发送邮件。我的代码是 -
public void sendMail() {
String to = abc@companyName.com;
String subject = "subject";
String msg ="email text....";
final String from = xyz@companyName.com;
final String password = "password";
Properties props = new Properties();
props.setProperty("mail.transport.protocol", "smtp");
props.setProperty("mail.host", "smtp.office365.com");
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.port", "587");
props.put("mail.debug", "true");
props.put("mail.smtp.starttls.enable", "true");
props.put("mail.smtp.socketFactory.fallback", "false");
Session session = Session.getDefaultInstance(props,
new javax.mail.Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(from,password);
}
});
Transport transport = null;
try {
transport = session.getTransport("smtp");
} catch (NoSuchProviderException e) {
e.printStackTrace();
}
InternetAddress addressFrom = null;
try {
addressFrom = new InternetAddress(from);
} catch (AddressException e) {
e.printStackTrace();
}
try {
MimeMessage message1 = new MimeMessage(session);
message1.setSender(addressFrom);
message1.setSubject(subject);
message1.setContent(msg, "text/plain");
message1.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
transport.connect();
Transport.send(message1);
transport.close();
} catch(Exception e) {
e.printStackTrace();
}
}
我在pom中添加了对邮件和激活的依赖性:
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4.5</version>
</dependency>
<dependency>
<groupId>javax.activation</groupId>
<artifactId>activation</artifactId>
<version>1.1.1</version>
</dependency>
但我得到了这个例外。
com.sun.mail.smtp.SMTPSendFailedException: 530 5.7.57 SMTP;
Client was not authenticated to send anonymous mail during MAIL FROM [MA1PR01CA0086.INDPRD01.PROD.OUTLOOK.COM]
答案 0 :(得分:0)
在执行java程序时添加-Dmail.smtp.starttls.enable=true
的vm参数。例如:
java -Dmail.smtp.starttls.enable=true -cp send_mail.jar package_name.class_name