javax.mail.AuthenticationFailedException:535 5.7.3无法发送邮件

时间:2018-08-24 18:50:01

标签: java email authentication

我遇到了错误

  

javax.mail.AuthenticationFailedException:535 5.7.3

尝试发送电子邮件时的身份验证。我尝试使用两个不同的电子邮件帐户。一个使用 Office365服务器详细信息,另一个使用 Gmail服务器详细信息。

在两种情况下,我都会遇到相同的错误。我的代码如下。在我的代码之外,电子邮件地址可以成功发送和接收电子邮件,而不会出现问题。这是我的电子邮件课程,因为它不起作用。我程序的所有其他方面都在工作。非常感谢您提供的帮助。

    public class SPUREMAIL{

//CONSTANTS - Things that will never change
private static final String HOST = "smtp.office365.com";
private static final String PORT = "587";
private static final String SENDER = "EMAIL";
private static final String PASSWORD = "PASSWORD";
private static final String SUBJECT = "Spur Design has shared a file with you";
private static final String MESSAGE = "This email message was sent from an unmonitored address. Please contact your Spur Design representative for any questions or concerns";

//this item will change, its the direct link to the file
private String URLToFile;
private String recipient;

public SPUREMAIL(String URLToFile, String recipient){
    this.URLToFile = URLToFile;
    this.recipient = recipient;
}

//Properties for email
private Properties getProperties(){
    Properties properties = new Properties();
    properties.put("mail.smtp.auth", "true");
    properties.put("mail.smtp.starttls.enable", "true");
    properties.put("mail.smtp.host", HOST);
    properties.put("mail.smtp.port", PORT);
    properties.put("mail.smtp.user", SENDER);
    properties.put("mail.smtp.password", PASSWORD);
    return properties;
}


//Creating an email session so I can authenticate to server
Session session = Session.getInstance(getProperties(), new javax.mail.Authenticator(){ 
    protected PasswordAuthentication getPasswordAuthentication(){
        return new PasswordAuthentication(SENDER, PASSWORD);
    }
});

public void sendMail(){//This will actually attempt to send the email successfully
    try{
        Message message = new MimeMessage(session);
        message.setFrom(new InternetAddress(SENDER));
        message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(recipient));
        message.setSubject(SUBJECT);
        message.setText(MESSAGE);
        Transport.getTransport("smtp");
        Transport.connect(HOST, SENDER, PASSWORD, pass);
        Transport.sendMessage(MESSAGE, message.getAllRecipients());
    }
    catch(MessagingException e){
        System.out.println("send failed, exception: " + e);
    }
    System.out.println("Sent!!!!");
}

}

4 个答案:

答案 0 :(得分:0)

您是否已检查此链接- javax.mail.AuthenticationFailedException: 535 5.7.3 Authentication unsuccessful

它说这可能是贵组织的邮件服务器配置问题,因为您的电子邮件ID不允许通过代码发送邮件。可能是您的邮件服务器管理员可以在这里提供帮助。

此外,此链接-https://confluence.atlassian.com/confkb/unable-to-send-email-due-to-javax-mail-authenticationfailedexception-error-message-151519398.html表示原因可能是邮件服务器配置不正确。

答案 1 :(得分:0)

很少有建议可以尝试检查它们是否对您有用。

  1. 如果您尝试使用Outlook,我假设您正在尝试连接内部组织的电子邮件服务器。尝试使用端口25,并检查将mail.smtp.starttls.enable设置为false是否有帮助。
  2. 我认为您不需要使用用户名和密码。您可以将其删除以防万一。如果要使用gmail,则需要使用它。
  3. 您可能希望防火墙小组将您的IP地址列入白名单。他们必须允许您的计算机进行连接。
  4. 尝试安装本地电子邮件服务器,我已经使用过剪纸,它的工作原理很简单。
  5. 在使用gmail发送电子邮件之前,您必须允许不安全的应用访问gmail,您可以通过转到gmail设置来做到这一点。 enter image description here

祝你好运。

答案 2 :(得分:0)

我的代码有两个问题。第一,当我编译整个项目时,电子邮件类没有被编译。这导致我的传输呼叫无法检查。将Transport调用更改为下面的块,并且在成功手动编译电子邮件类之后,我可以发送电子邮件了。所有的功劳归功于Bill Shannon,他为我指明了正确的方向。

<div class="container">
  <div class="item col-md-3"></div>
  <div class="item col-md-3 col-md-offset-1"></div>
  <div class="item col-md-3 col-md-offset-1"></div>
  <div class="item col-md-3"></div>
  <div class="item col-md-3 col-md-offset-1"></div>
  <div class="item col-md-3 col-md-offset-1"></div>
  <div class="item col-md-6">this is text content and again and again this is text content and again and again</div>
  <div class="item col-md-3 col-md-offset-1"></div>
</div>

答案 3 :(得分:0)

有时候,一个相当大的变化会做出巨大的反应,这种情况也是如此。您必须使用用户名提供完整的邮件地址。发件人的邮件ID的用户名应使用@ domain.com

用户名:******_****@domain.com