在公司使用outlook的Javamail



我是第一次使用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以阻止垃圾邮件病毒/特洛伊木马。禁用访问保护属性的"防病毒标准防护"部分中的"防止群发邮件蠕虫发送邮件"设置。

最新更新