2015-10-20 1681 views
0

我正在使用SMTP错误发送电子邮件。我正在验证不成功。用户名和密码是正确的。难道我做错了什么。javax.mail.AuthenticationFailedException:535 5.7.3身份验证失败

错误日志

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 = "[email protected]";   // sender email 
     String from = "[email protected]";  // 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(); 
     } 
    } 

} 

的错误是

DEBUG 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) 

回答

-1

它看起来像你如何做会议部分的问题...

尝试这样做:

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

     }); 
+0

我已经试过这个,并且我得到了同样的错误ie异常在线程“main”javax.mail.AuthenticationFailedException:535 5.7.3身份验证失败 –

+0

再次将auth设置为true ... @ MukeshKumar并添加 道具。 setProperty(“mail.smtp.starttls.enable”,“true”); –

+0

非常感谢您的提示回复。我添加了你提到的内容。我得到错误220 2.0.0 SMTP服务器准备好 线程“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) –

2

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

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