2012-02-16 84 views
0

我可以从雅虎和Gmail发送,但无论我做什么,我都不能从Hotmail发送。从hotmail与Javamail发送?

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的工作就像一个魅力,但不是这个..

它不给我任何错误,要么..

+0

它的不幸,因为我们的客户。所以我们需要实现它。并且其证明困难... – VicVu 2012-02-16 18:58:51

+0

可以找到一个更好的答案[这里](http://stackoverflow.com/questions/9086420/using-javamail-to-send-from-hotmail)。 – VicVu 2013-06-21 14:30:50

回答

1

是否this JavaMail FAQ entry帮助?

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

我们假设你的Hotmail用户名是“[email protected]”,密码是“passwd”。

从您的Hotmail收件箱中阅读邮件,调用msgshow如下:

java msgshow -D -T pop3s -H pop3.live.com -U [email protected] -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 [email protected] -P passwd 
    -A [email protected] 

(请注意,我在三行显示分割命令,但应该在一行键入。)

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

smtpsend程序将提示输入主题和消息正文文本。使用UNIX上的^ D或Windows上的^ Z结束消息正文。

同样,您可以阅读smtpsend.java源代码以查看JavaMail API中如何使用命令行参数。上面显示的用于连接到Gmail的代码片段也可以通过更改主机名并将连接呼叫更改为t.connect(主机,587,用户名,密码)来连接到Hotmail。当然,有多种方法可以使用JavaMail API来实现相同的目标。这应该有助于您了解使用Hotmail所必需的基本配置参数。

+0

我以前经历过那个。它没有解释任何明确帮助我的东西...... – VicVu 2012-02-16 19:16:42

+0

您的代码仍然包含您不需要的套接字工厂内容,而且您仍然使用getDefaultInstance而不是getInstance。协议跟踪显示什么?您是否阅读过JavaMail FAQ调试技巧? – 2012-02-16 23:42:08