Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javax.mail无法向hotmail发送邮件_Java_Jakarta Mail - Fatal编程技术网

javax.mail无法向hotmail发送邮件

javax.mail无法向hotmail发送邮件,java,jakarta-mail,Java,Jakarta 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");

我正在尝试从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。
我应该在属性配置中更改什么?也许代码中还有其他错误

这是我的程序的调试结果:

已解决 我已经解决了hotmail服务器的问题。 请参阅本页: 我知道hotmail与gmail和yahoo等其他邮件服务器不同,它将用户名视为完整的电子邮件地址。因此,当我登录时,我总是收到一个错误


最后它成功了。谢谢大家。

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


已经有一个问题解决了,看一看:

它对我有用。它肯定会对你有用 :--

使用端口587:--


从调试输出:

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 5.7.0必须首先发出STARTTLS命令
调试SMTP:Get响应代码530,响应为530 5.7.0必须首先发出STARTTLS命令
状态代码530表示客户端未经过身份验证。(我在谷歌上搜索了“SMTP错误状态代码530”以获取此信息)

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


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

请跟踪异常堆栈?这就是我在执行程序.props.put(“mail.smtps.port”,“487”)时得到的结果?端口不正确吗?我不使用“mail.smtp.port”吗?如果端口正确,您必须查看hotmail的帮助站点,。但是您的调试消息表明主机使用530 5.7.0进行响应,必须首先发出STARTTLS命令,以便端口正确。我敢肯定,在配置时属性名为false;)但这种操作应该能够实现这一点。还是不?是的(我知道你不想用它)。在这种情况下,还必须设置身份验证凭据(username/passwort),否则它将无法工作。props.put(“mail.starttls.enable”,true);put(“mail.smtp.host”、“smtp.live.com”);props.put(“mail.smtp.port”,“25”);props.put(“mail.debug”,true);put(“mail.smtp.auth”,true);我应该使用这个配置吗?足够了吗?这和props.put(“mail.smtp.user”,“USERNAME”);和道具。put(“mail.password”、“password”);协议是smtp而不是smtps?调试:setDebug:JavaMail版本1.5.0调试:getProvider()返回javax.mail.Provider[TRANSPORT,smtps,com.sun.mail.smtp.smtpsslttransport,Oracle]调试smtp:useEhlo true,useAuth true调试smtp:尝试连接到主机“smtp.live.com”,端口587,isSSL true这是我使用的协议SMTPS在身份验证中可能存在问题。我从最后两行开始维护会话&这对megood有用:)所以为其他人发布答案也可以获得努力:)
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