Java Mail异常错误;

时间:2012-04-10 09:03:53

标签: java javamail

mycode的:

import java.util.Properties;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
public class SendMailTLS {
public static void main(String[] args) {
    final String username = "myemailid@gmail.com";
    final String password = "myemailpassword";
    Properties props = new Properties();
    props.put("mail.smtp.auth", "true");
    props.put("mail.smtp.starttls.enable", "true");
    props.put("mail.smtp.host", "smtp.gmail.com");
    props.put("mail.smtp.port", "587");
    Session session = Session.getInstance(props,
      new javax.mail.Authenticator() {
        protected PasswordAuthentication getPasswordAuthentication() {
            return new PasswordAuthentication(username, password);
        }
      });

    try {
        Message message = new MimeMessage(session);
        message.setFrom(new InternetAddress("myemailid@gmail.com"));
        message.setRecipients(Message.RecipientType.TO,
            InternetAddress.parse("myfriedemail@ymail.com"));
        message.setSubject("Testing Subject");
        message.setText("Dear Mail Crawler,"+
 "\n\n No spam to my email,please!"); 
        Transport.send(message);
        System.out.println("Done");
    } catch (MessagingException e) {
        throw new RuntimeException(e);
    }
}
}

我的错误:

  
    

线程“main”中的异常java.lang.RuntimeException:javax.mail.MessagingException:
未知的SMTP主机:smtp.gmail.com;
      嵌套异常是:
        java.net.UnknownHostException:smtp.gmail.com
        在Mail.SendMailTLS.main(SendMailTLS.java:56)
    引起:javax.mail.MessagingException:未知的SMTP主机:smtp.gmail.com;
      嵌套异常是:
        java.net.UnknownHostException:smtp.gmail.com
        at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1970)
        at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:642)
        在javax.mail.Service.connect(Service.java:317)
        在javax.mail.Service.connect(Service.java:176)
        在javax.mail.Service.connect(Service.java:125)
        在javax.mail.Transport.send0(Transport.java:194)
        在javax.mail.Transport.send(Transport.java:124)
        在Mail.SendMailTLS.main(SendMailTLS.java:51)
    引起:java.net.UnknownHostException:smtp.gmail.com
        在java.net.PlainSocketImpl.connect(PlainSocketImpl.java:177)
        在java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
        在java.net.Socket.connect(Socket.java:525)
        在java.net.Socket.connect(Socket.java:475)
        在com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:319)
        在com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:233)
        在com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1938)
        ... 7更多
    Java结果:1

  

我的本地代理为172.17.0.4:8080 用户名为: user1 ,密码为: user2
解决方案请等?

5 个答案:

答案 0 :(得分:10)

试试这个服务器:

smtp.googlemail.com

答案 1 :(得分:9)

如果您在代理服务器下,我认为您无法使用Java Mail。

来自:oracle.com

  

问:如何配置JavaMail以使用我的代理服务器?

     

答:JavaMail目前不支持通过Web代理服务器访问邮件服务器。使用代理服务器的一个主要原因是允许来自公司网络内的HTTP请求通过公司防火墙。防火墙通常会阻止对Internet的大多数访问,但允许来自代理服务器的请求通过。此外,公司网络内的邮件服务器将执行类似的电子邮件功能,通过SMTP接收邮件并将其转发到Internet上的最终目的地,并接受传入邮件并将其发送到相应的内部邮件服务器。

答案 2 :(得分:2)

这是因为Gmail安全性... 只需通过应用访问您的Gmail帐户即可转到您的帐户下: https://www.google.com/settings/security/lesssecureapps 它会工作.. smtp.gmail.com是正确的。不需要改变它。

另外请不要忘记检查互联网连接。

答案 3 :(得分:1)

你可以试试props.put("mail.smtp.host", "gmail.com");没有smtp.gmail.com

答案 4 :(得分:1)

仅出于开发目的,您可以尝试通过代理打开隧道到smtp.gmail.com

proxytunnel -q -p proxy_host:proxy_port -d smtp.gmail.com:465 -a local_port

并在您的代码中使用

props.put("mail.smtp.host", "localhost");
props.put("mail.smtp.port", "local_port");