javax.mail.AuthenticationFailedException:535 5.7.3身份验证失败

Muk*_*mar 5 java email

我正在使用SMTP错误发送电子邮件。我无法获得身份验证。用户名和密码正确。难道我做错了什么。

错误日志是

import java.util.Properties;

import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

public class EmailSender{

    public static void main(String args[]) {
        String to = "ssss@xxx.om";            // sender email
        String from = "dddd@xxx.com";       // receiver email
        String host = "dkdkdd.xxx.com";                   // mail server host

        String login="dkkdkd";
        String pass="dkkdkd";
       Properties properties = System.getProperties();
        properties.setProperty("mail.smtp.host", host);
        properties.setProperty("mail.smtp.user", login);
        properties.setProperty("mail.smtp.password", pass);
        properties.setProperty("mail.smtps.ssl.enable", "true");
       // properties.setProperty("mail.smtp.auth", "true"); 

        Session session = Session.getDefaultInstance(properties); // default session

        try {
            MimeMessage message = new MimeMessage(session);        // email message
            message.setFrom(new InternetAddress(from));                    // setting header fields
            message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
            message.setSubject("Test Mail from Java Program"); // subject line

            // actual mail body
            message.setText("You can send mail from Java program by using");

            // Send message
            Transport transport = session.getTransport("smtp");
            transport.connect(host, login, pass);
            Transport.send(message);
            System.out.println("Email Sent successfully....");
        } catch (MessagingException mex) {
            mex.printStackTrace();
        }
    }

}
Run Code Online (Sandbox Code Playgroud)

错误是

调试SMTP:AUTH NTLM失败线程“主”中的异常javax.mail.AuthenticationFailedException:535 5.7.3身份验证失败

at com.sun.mail.smtp.SMTPTransport$Authenticator.authenticate(SMTPTransport.java:826)
at com.sun.mail.smtp.SMTPTransport.authenticate(SMTPTransport.java:761)
at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:685)
at javax.mail.Service.connect(Service.java:317)
at javax.mail.Service.connect(Service.java:176)
at javax.mail.Service.connect(Service.java:125)
at javax.mail.Transport.send0(Transport.java:194)
at javax.mail.Transport.send(Transport.java:124)
Run Code Online (Sandbox Code Playgroud)

小智 6

有同样的问题。这是您收到的MS Exchange错误。您可能不被允许使用您的电子邮件通过中继发送电子邮件。Exchange服务器的管理员需要授予这样做的权限。

它与Java方面的配置问题无关。


ΦXo*_*a ツ 0

看起来问题在于你如何进行会话部分......

尝试这样做:

private Properties emailPorperties;
Run Code Online (Sandbox Code Playgroud)

……

    emailPorperties = new Properties();
    emailPorperties.put("mail.smtp.host", "your host");
    emailPorperties.put("mail.smtp.socketFactory.port", "your port");
    emailPorperties.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
    emailPorperties.put("mail.smtp.auth", "true");
    emailPorperties.put("mail.smtp.port", "your port");
    emailPorperties.put("mail.smtp.ssl.enable", "true");
    emailSession = Session.getInstance(emailPorperties, new Authenticator() {

            @Override
            protected PasswordAuthentication getPasswordAuthentication() {
                System.out.println("Authenticating");
                return new PasswordAuthentication(USER_NAME, PASSWORD);
            }

        });
Run Code Online (Sandbox Code Playgroud)