我正在尝试使用 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等其他邮件服务器不同,它将用户名视为完整的电子邮件地址。因此,当我登录时,我总是收到错误。
最后它有效。谢谢大家。
答案 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