使用Javamail从hotmail发送?

时间:2012-02-16 18:48:30

标签: java android javamail

我可以从雅虎和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的东西,使用端口25而不是587 ......没什么。

我做错了吗?就像我说的那样,雅虎和gmail的工作就像一个魅力,但不是这个..

它也没有给我任何错误..

1 个答案:

答案 0 :(得分:1)

this JavaMail FAQ entry有帮助吗?

  

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
     

通过阅读msgshow.java源代码,您可以看到JavaMail API中如何使用这些命令行参数。您应该首先尝试使用如上所示的msgshow,并且一旦工作继续编写和配置您自己的程序以使用Hotmail。上面显示的用于连接Gmail的代码片段也可以通过更改主机名来连接到Hotmail。

     

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

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,只需更改主机名并将连接调用更改为t.connect(host,587,username,password)即可。当然,使用JavaMail API实现相同目标的方法不止一种。这可以帮助您了解使用Hotmail所必需的基本配置参数。