我第一次使用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,"
+ "\n\n 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);
}
}
错误日志是
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)
任何非常感谢的帮助
答案 0 :(得分:3)
代码工作正常它给出错误的原因是因为我没有获得SMTP服务器的权限,因此显示异常,在配置访问后发送邮件。
答案 1 :(得分:2)
看起来JavaMail是"不同步"与服务器,例如,服务器发送无效响应,或只是一个意外的空行。
你可以发布整个调试输出吗?
另外,尝试设置属性" mail.debug.quote"到"真&#34 ;;它将提供有关协议通信的更多细节。
您是否安装了防病毒或防火墙产品?也许某些东西插入与服务器的SMTP协议通信并以某种方式破坏协议。
答案 2 :(得分:2)
我认为您的邮件服务器是交换机,它使用NTLM身份验证(250-AUTH NTLM行),因此您应该以“domain \ username”格式发送用户名进行身份验证。
此外,mcafee默认阻止传出端口25以阻止垃圾邮件发送者virüs/ trojans。禁用“访问保护”属性的“防病毒标准保护”部分中的“防止群发邮件蠕虫发送邮件”设置。