客户端未通过身份验证,以便在MAIL FROM [MA1PR01CA0086.INDPRD01.PROD.OUTLOOK.COM]期间发送匿名邮件

时间:2017-10-25 09:48:01

标签: java office365

我正在尝试使用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] 

1 个答案:

答案 0 :(得分:0)

在执行java程序时添加-Dmail.smtp.starttls.enable=true的vm参数。例如:

java -Dmail.smtp.starttls.enable=true -cp send_mail.jar package_name.class_name