【问题标题】:javax.mail.AuthenticationFailedException: 535 5.7.3 Authentication unsuccessfuljavax.mail.AuthenticationFailedException: 535 5.7.3 身份验证不成功
【发布时间】:2016-01-19 12:20:03
【问题描述】:

我正在使用 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();
        }
    }

}

错误是

调试 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)

【问题讨论】:

    标签: java email


    【解决方案1】:

    转到您的 Microsoft 管理员帐户并关闭多重身份验证

    默认情况下它是启用的。禁用多因素身份验证后,它对我来说就可以了。

    【讨论】:

      【解决方案2】:

      通过在 Outlook 邮件管理员的 Exchange 控制面板 (ECP) 中启用发件人电子邮件帐户的 IMAP 解决了同样的问题。

      【讨论】:

        【解决方案3】:

        您好,我过去也遇到过同样的问题。 所以要解决它,我必须连接到我的 Outlook 或 exchage 的网络邮件,我注意到这些连接被服务器停止了,所以在里面我确认这些交易是我的。 所以在我的情况下,你通常也必须每 2 个月做一次。

        问题不在代码中。出现问题是因为我相信的邮箱配置有问题。

        【讨论】:

          【解决方案4】:

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

          这与Java端的配置问题无关。

          【讨论】:

            【解决方案5】:

            看起来你如何做会话部分的问题......

            尝试这样做:

            private Properties emailPorperties;
            

            ... ...

                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);
                        }
            
                    });
            

            【讨论】:

            • 我已经尝试过了,我得到了同样的错误,即线程“main”中的异常 javax.mail.AuthenticationFailedException: 535 5.7.3 Authentication unsuccessful
            • 再次将 auth 设置为 true...@MukeshKumar 并添加 props.setProperty("mail.smtp.starttls.enable", "true");
            • 非常感谢您的及时回复。我添加了你提到的内容。我收到错误 220 2.0.0 SMTP server ready 线程“main”javax.mail.MessagingException 中的异常:无法将套接字转换为 TLS;嵌套异常是:javax.net.ssl.SSLHandshakeException:sun.security.validator.ValidatorException:PKIX 路径构建失败:sun.security.provider.certpath.SunCertPathBuilderException:无法在 com.sun.mail 中找到请求目标的有效证书路径.smtp.SMTPTransport.startTLS(SMTPTransport.java:1907)at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:666)
            • 我没有设置邮件服务器的SSL证书,邮件服务器也不需要
            • 您使用的是哪个版本的邮件 jar? @MukeshKumar
            猜你喜欢
            • 1970-01-01
            • 2019-01-26
            • 2011-10-11
            • 1970-01-01
            • 2021-10-13
            • 1970-01-01
            • 1970-01-01
            • 2018-01-07
            • 2022-11-22
            相关资源
            最近更新 更多