javax.mail无法发送邮件到hotmail

时间:2013-07-02 11:10:03

标签: java javax.mail

我正在尝试使用 hotmail帐户中的javax.mail发送邮件。
到目前为止,我还使用 gmail帐户测试了我的代码,一切正常,但是 使用hotmail没有任何作用,我收到MailConnectException 这是我用来发送邮件的代码:

props.put("mail.starttls.enable", true);
props.put("mail.smtp.host", "smtp.live.com");
props.put("mail.smtp.port", "25");
props.put("mail.debug", true);
props.put("mail.smtp.auth", true);

正如您所看到的,我已经创建了一个PropertiesFactory,以便为我使用的每个特定邮件主机创建Properties对象的特定实例。在代码中有HotmailProperties结构的工厂。

启动调试会话我已经检查过useAuth选项和isSSL都等于false 我在属性配置中更改了什么?也许代码中还有其他一些错误?

这是我程序的调试结果: http://ideone.com/SDu4JG

解决 我用hotmail服务器解决了我的问题。 期待这个页面:http://windows.microsoft.com/en-us/windows/outlook/send-receive-from-app 我知道hotmail与gmail和yahoo等其他邮件服务器不同,它将用户名视为完整的电子邮件地址。因此,当我登录时,我总是收到错误。

最后它有效。谢谢大家。

3 个答案:

答案 0 :(得分:1)

这对我有用。当然它会对你有用 : -

端口587: -

        props.setProperty("mail.transport.protocol", "smtp");   
        props.setProperty("mail.smtp.host", "smtp.live.com");   
        props.put("mail.smtp.auth", "true");   
        props.put("mail.smtp.port", "587");   
        props.setProperty("mail.smtp.quitwait", "false");  
        props.put("mail.smtp.starttls.enable", "true");

    Session smtpSession = Session.getInstance(props1, authenticator);
        smtpSession.setDebug(true);

答案 1 :(得分:1)

从您的调试输出:

MAIL FROM:<shadowtemplate@hotmail.com>
530 5.7.0 Must issue a STARTTLS command first
DEBUG SMTP: got response code 530, with response: 530 5.7.0 Must issue a STARTTLS command first

状态码530表示客户端未经过身份验证。 (我用Google搜索“SMTP错误状态代码530”来获取此信息)

上面的消息表明需要TLS(传输层安全性:加密)

显然,Hotmail要求您通过smtps发送邮件,默认端口为587。

答案 2 :(得分:0)

您将属性命名为mail.smtp s 而不是mail.smtp

已经有一个问题已经解决,请看一下:Java Mail over TLS