我可以从雅虎和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的工作就像一个魅力,但不是这个..
它也没有给我任何错误..
答案 0 :(得分:1)
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所必需的基本配置参数。