0

我正在尝试使用javax.mailhotmail帐户发送邮件。
到目前为止,我还使用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 等其他邮件服务器不同,它认为用户名作为完整的电子邮件地址。因此,当我登录时,我总是收到错误消息。

最后它起作用了。谢谢你们。

4

3 回答 3

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 表示客户端未通过身份验证。(我用谷歌搜索“SMTP 错误状态代码 530”来得到这个)

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

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

于 2013-07-02T11:55:11.637 回答
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);
于 2013-07-02T11:45:49.287 回答
0

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

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

于 2013-07-02T11:13:40.423 回答