使用Javamail从hotmail发送?
我可以从雅虎和Gmail发送邮件,但无论我做什么,我都不能从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
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常见问题解答调试提示?