Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/373.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
使用Javamail从hotmail发送?_Java_Android_Jakarta Mail - Fatal编程技术网

使用Javamail从hotmail发送?

使用Javamail从hotmail发送?,java,android,jakarta-mail,Java,Android,Jakarta Mail,我可以从雅虎和Gmail发送邮件,但无论我做什么,我都不能从hotmail发送 public class LiveSenderActivity extends javax.mail.Authenticator { private String mailhost = "smtp.live.com"; private String user; private String password; private Session session; static { Security.addPro

我可以从雅虎和Gmail发送邮件,但无论我做什么,我都不能从hotmail发送

public class LiveSenderActivity extends javax.mail.Authenticator {
private String mailhost = "smtp.live.com";
private String user;
private String password;
private Session session;

static {
    Security.addProvider(new com.provider.JSSEProvider());
}

public LiveSenderActivity(String user, String password) {
    this.user = user;
    this.password = password;

    // This connects to the actual mailserver
    Properties props = new Properties();
    props.setProperty("mail.transport.protocol", "smtp");
    props.setProperty("mail.host", mailhost);
    props.put("mail.smtp.port", "587");
    props.put("mail.smtp.starttls.enable", "true");
    props.put("mail.smtp.auth", "true");

    props.put("mail.smtp.socketFactory.port", "587");
    props.put("mail.smtp.socketFactory.class",
            "javax.net.ssl.SSLSocketFactory");
    props.put("mail.smtp.socketFactory.fallback", "false");
    props.setProperty("mail.smtp.quitwait", "false");

    session = Session.getDefaultInstance(props, this);
}
我试过使用SSL和不使用SSL,使用端口25而不是587。。。没什么

我做错什么了吗?就像我说的,雅虎和gmail就像一个魔咒,但不是这个

它也不会给我任何错误。

有帮助吗

JavaMail 1.4能够使用Hotmail发送和读取消息。所需的只是正确配置JavaMail。我将使用JavaMail-msgshow.java和smtpsend.java附带的演示程序来说明正确的配置

假设您的Hotmail用户名为“user@hotmail.com您的密码是“passwd”

要从Hotmail收件箱中读取邮件,请按如下方式调用msgshow:

java msgshow -D -T pop3s -H pop3.live.com -U user@hotmail.com -P passwd
java -Dmail.smtp.starttls.enable=true -Dmail.smtp.port=587 smtpsend
     -d -M smtp.live.com -U user@hotmail.com -P passwd
     -A someotheruser@hotmail.com
通过阅读msgshow.java源代码,您可以看到这些命令行参数是如何在JavaMail API中使用的。您应该首先尝试使用如上所示的msgshow,一旦成功,就可以编写并配置自己的程序来使用Hotmail。上面显示的连接到Gmail的代码片段也可以通过简单地更改主机名来连接到Hotmail

要通过Hotmail发送消息,请按如下方式调用smtpsend:

java msgshow -D -T pop3s -H pop3.live.com -U user@hotmail.com -P passwd
java -Dmail.smtp.starttls.enable=true -Dmail.smtp.port=587 smtpsend
     -d -M smtp.live.com -U user@hotmail.com -P passwd
     -A someotheruser@hotmail.com
(请注意,我将命令拆分为三行以显示,但您应该在一行中键入它。)

smtpsend程序在创建JavaMail会话时使用系统属性,因此命令行上设置的属性将可用于JavaMail会话

smtpsend程序将提示输入主题和消息正文文本。在UNIX上以^D结束邮件正文,在Windows上以^Z结束邮件正文

同样,您可以阅读smtpsend.java源代码,以了解在JavaMail API中如何使用命令行参数。上面显示的用于连接Gmail的代码片段也可以用于连接Hotmail,只需更改主机名并将connect调用更改为t.connect(主机,587,用户名,密码)。当然,使用JavaMail API实现相同目标的方法不止一种。这将帮助您了解使用Hotmail所需的基本配置参数


这很不幸,因为我们的客户确实如此。所以我们需要实施它。事实证明很难找到更好的答案。我以前也经历过。它没有解释任何对我有帮助的东西……您的代码仍然包含您不需要的套接字工厂内容,并且您仍然使用getDefaultInstance而不是getInstance。协议跟踪显示了什么?您是否阅读了JavaMail常见问题解答调试提示?