无法从Java应用程序发送邮件

时间:2009-07-05 09:38:11

标签: java email

在我的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

有人能告诉我,我在这里做错了吗?

3 个答案:

答案 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。