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
解决方案请等?
答案 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");