2013-10-01 118 views
21

我正在使用javax.mail发送Java中的邮件。 现在,我的项目的一部分概念发生了变化,我必须发送邮件而无需身份验证。我将不得不改变我的了createSession()方法:未经身份验证在javax.mail中发送邮件

private void createSession() { 
    properties.put("mail.smtp.auth", "true"); 
    properties.put("mail.smtp.starttls.enable", "true"); 
    properties.put("mail.smtp.host", server); 
    properties.put("mail.smtp.port", port); 

    session = Session.getInstance(properties, new javax.mail.Authenticator() { 
     protected PasswordAuthentication getPasswordAuthentication() { 
      return new PasswordAuthentication(username, password); 
     } 
    }); 
} 

这是相当明显的是,我应该改变mail.smtp.authfalse,但我还需要改变?

+2

不要把'user'和'password'加到''属性'上,''把用户'和'密码'''连接到'' –

回答

17
private void createSession() { 
    properties.put("mail.smtp.auth", "false"); 
    //Put below to false, if no https is needed 
    properties.put("mail.smtp.starttls.enable", "true"); 
    properties.put("mail.smtp.host", server); 
    properties.put("mail.smtp.port", port); 

    session = Session.getInstance(properties); 
} 

我认为,这就足够了。

+3

当然这取决于你的服务器被配置为允许你先发送邮件而不进行身份验证。这可能在Intranet内正常工作,否则就是垃圾邮件的邀请。 –

+0

仍然说'需要验证。请联系支持部门' – Sami

+1

认证是服务器策略。如果服务器需要认证 - 你必须提供它! – Kris

相关问题