我是第一次使用javamail,并且有一些我不理解的异常,我在这里也看到了其他问题中的一些错误,但是对它们的答案并没有帮助我。这是我的代码。
final String username = "imsan1@cdcpk.com";
final String password = "**********";
Properties props = System.getProperties();
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.host", "10.1.136.26");
props.put("mail.smtp.port", "25");
props.put( "mail.smtp.user" , username );
props.put( "mail.smtp.password" , password );
Session session = Session.getInstance(props,
new SmtpAuthenticator(username, password)
);
try {
Message message = new MimeMessage(session);
message.setFrom(new InternetAddress("imsan1@cdcpk.com"));
message.setRecipients(Message.RecipientType.TO,
InternetAddress.parse("immni1@cdcpk.com"));
message.setSubject("Testing Subject");
message.setText("Dear Mail Crawler,"
+ "nn No spam to my email, please!");
Transport.send(message);
System.out.println("Done");
} catch (MessagingException e) {
throw new RuntimeException(e);
}
}
SmtpAuthenticator
import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication;
class SmtpAuthenticator extends Authenticator {
String user;
String pw;
public SmtpAuthenticator (String username, String password)
{
super();
this.user = username;
this.pw = password;
}
public PasswordAuthentication getPasswordAuthentication()
{
return new PasswordAuthentication(user, pw);
}
}
错误日志 is
Exception in thread "main" java.lang.RuntimeException: javax.mail.AuthenticationFailedException: 250-CDC-HO-CAS1.cdcpk.com Hello [10.1.34.74]
250-SIZE 37748736
250-PIPELINING
250-DSN
250-ENHANCEDSTATUSCODES
250-STARTTLS
250-X-ANONYMOUSTLS
250-AUTH NTLM
250-X-EXPS GSSAPI NTLM
250-8BITMIME
250-BINARYMIME
250-CHUNKING
250 XRDST
at org.cdc.eipo.bean.investorsetup.EmailController.main(EmailController.java:64)
Caused by: javax.mail.AuthenticationFailedException: 250-CDC-HO-CAS1.cdcpk.com Hello [10.1.34.74]
250-SIZE 37748736
250-PIPELINING
250-DSN
250-ENHANCEDSTATUSCODES
250-STARTTLS
250-X-ANONYMOUSTLS
250-AUTH NTLM
250-X-EXPS GSSAPI NTLM
250-8BITMIME
250-BINARYMIME
250-CHUNKING
250 XRDST
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)
at org.cdc.eipo.bean.investorsetup.EmailController.main(EmailController.java:59)
任何帮助都非常感谢
代码工作正常,它给出错误的原因是因为我没有给予SMTP服务器权限,因此显示的异常,在提供访问后发送邮件。
JavaMail似乎与服务器"不同步",例如,服务器发送了一个无效的响应,或者只是一个意外的空白行。
你能发布整个调试输出吗?
另外,试着将属性"mail.debug.quote"设置为"true";它将提供关于协议通信的更多细节。
您是否安装了防病毒或防火墙产品?可能有什么东西干扰了与服务器的SMTP协议通信,并以某种方式破坏了协议
我认为你的邮件服务器是exchange,它使用NTLM认证(250-AUTH NTLM行),所以你应该发送用户名以"domainusername"格式进行认证。
另外,mcafee默认情况下阻止发送端口25以阻止垃圾邮件病毒