在我的java应用程序中,我需要将邮件发送到不同的邮件地址。我正在使用下一段代码,但由于某种原因它不起作用。
public class main {
public static void main(String[] args) {
Properties props = new Properties();
props.put("mail.smtp.host", "mail.yahoo.com.");
props.put("mail.smtp.auth", "true");
props.put("mail.debug", "true");
Session session = Session.getInstance(props, new MyAuth());
try {
Message msg = new MimeMessage(session);
msg.setFrom(new InternetAddress("giginnho@yahoo.com"));
InternetAddress[] address = {new InternetAddress("rantravee@yahoo.com")};
msg.setRecipients(Message.RecipientType.TO, address);
msg.setSubject("subject ");
msg.setSentDate(new Date());
msg.setText("Message here ");
Transport.send(msg);
} catch (MessagingException e) {}
}
}
class MyAuth extends Authenticator {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("my username","my password");
}
}
我从以下文件中得到了以下文字:
[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc] DEBUG SMTP: useEhlo true, useAuth true DEBUG SMTP: useEhlo true, useAuth true DEBUG SMTP: trying to connect to host "smtp.mail.yahoo.com.au.", port 25, isSSL false
有人能告诉我,我在这里做错了吗?
答案 0 :(得分:2)
雅虎!邮件SMTP服务器地址:smtp.mail.yahoo.com
雅虎邮件SMTP用户名:您的完整Yahoo!邮件地址(包括“@ yahoo.com”)
雅虎邮件SMTP密码:您的Yahoo!邮件密码
雅虎邮件SMTP端口:465
雅虎需要邮件SMTP TLS / SSL:是
类似的设置适用于gmail。对于雅虎,你可能需要雅虎加帐户
答案 1 :(得分:1)
我不确定,但是在使用gmail id发送邮件时遇到了同样的问题,你使用的是雅虎。问题是gmail使用ssl层保护,我认为雅虎的情况也是如此,所以你需要使用
mail.smtps.host instead of mail.smtp.host
和其他属性一样。
并且isSSL为true。
一旦我到办公室并使用办公室的机器,我就可以发布完整的代码片段。现在你可以查看http://www.rgagnon.com/javadetails/java-0570.html
答案 2 :(得分:0)
这可能是您的ISP阻止端口25流量的问题(并不罕见!)
来自http://help.yahoo.com/l/us/yahoo/smallbusiness/bizmail/pop/pop-32.html:
为了控制未经请求的电子邮件(垃圾邮件),某些Internet服务提供商现在会阻止端口25,这意味着您在发送电子邮件时可能会遇到技术问题。如果您在发送电子邮件时遇到问题,可能需要在通过Yahoo!的SMTP服务器发送电子邮件时使用端口465(推荐)或587。