Java Mailexception错误;

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”中的exceptionjava.lang.RuntimeException:javax.mail.MessagingException:
未知的SMTP主机:smtp.gmail.com;
嵌套exception是:
java.net.UnknownHostException:smtp.gmail.com
在Mail.SendMailTLS.main(SendMailTLS.java:56)
引起:javax.mail.MessagingException:未知的SMTP主机:smtp.gmail.com;
嵌套exception是:
java.net.UnknownHostException:smtp.gmail.com
在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)
at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:233)
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1938)
……还有7个
Java结果:1

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

如果您在代理下,我认为您不能使用Java Mail。

来自: oracle.com

问:如何配置JavaMail以通过我的代理服务器工作?

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

试试这个服务器:

smtp.googlemail.com

这是因为Gmail的安全性…只允许通过应用程序访问您的Gmail帐户,请访问您的帐户: https : //www.google.com/settings/security/lesssecureapps并且它可以正常运行.. smtp.gmail.com是正确的。不需要改变它。

另外,别忘了检查互联网连接。

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

仅出于开发目的,您可以尝试通过代理打开隧道到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");