![](/img/trans.png)
[英]java.lang.RuntimeException: javax.mail.MessagingException: Could not connect to SMTP host: smtp.gmail.com, port: 465
[英]Exception in thread “main” java.lang.RuntimeException: javax.mail.MessagingException: Could not connect to SMTP host: smtp.gmail.com, port: 578;
我是Java新手。 我想构建一个将电子邮件发送给我的客户的应用程序。 我搜索了stackoverflow,但没有得到任何想要的解决方案。 我在某个地方看到这可能是防火墙的问题,但没有得到解决它的解决方案。 我正在使用Ubuntu 14.10
//这是我的代码。
public class sendMail {
public void send(String from, String to, String subject, String body) {
Properties props = new Properties();
props.put("mail.smtp.host", "smtp.gmail.com");
props.put("mail.smtp.socketFactory.port", "587");
props.put("mail.smtp.socketFactory.class",
"javax.net.ssl.SSLSocketFactory");
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.port", "587");
Session session = Session.getDefaultInstance(props,
new javax.mail.Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("xxxxxxx@gmail.com","xxxxx");
}
});
try {
Message message = new MimeMessage(session);
message.setFrom(new InternetAddress("xxxxxx@gmail.com"));
message.setRecipients(Message.RecipientType.TO,
InternetAddress.parse("xxxx@domain.com"));
message.setSubject("Testing Subject");
message.setText("Hello this is not spam," +
"\n\n This is a JavaMail test...!");
Transport.send(message);
System.out.println("Done");
} catch (MessagingException e) {
throw new RuntimeException(e);
}
}
}
我的错误是:
Exception in thread "main" java.lang.RuntimeException: javax.mail.MessagingException: Could not connect to SMTP host: smtp.gmail.com, port: 587;
nested exception is:
java.net.ConnectException: Connection timed out
at dbdemo.sendMail.send(sendMail.java:54)
at dbdemo.DBDemo.main(DBDemo.java:62)
Caused by: javax.mail.MessagingException: Could not connect to SMTP host: smtp.gmail.com, port: 587;
nested exception is:
java.net.ConnectException: Connection timed out
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1706)
at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:525)
at javax.mail.Service.connect(Service.java:313)
at javax.mail.Service.connect(Service.java:172)
at javax.mail.Service.connect(Service.java:121)
at javax.mail.Transport.send0(Transport.java:190)
at javax.mail.Transport.send(Transport.java:120)
at dbdemo.sendMail.send(sendMail.java:49)
... 1 more
Caused by: java.net.ConnectException: Connection timed out
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:579)
at java.net.Socket.connect(Socket.java:528)
at com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:284)
at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:227)
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1672)
... 8 more
Java Result: 1
任何帮助,将不胜感激。 请帮我。
丢弃那些不懂JavaMail的人剪切和粘贴的代码,并使用JavaMail FAQ中的代码连接到Gmail 。
如果对您不起作用,请遵循JavaMail FAQ中的调试提示 。
如果仍然无法解决问题,并且在JavaMail FAQ中找不到答案,请在此处发布JavaMail调试输出。
这段代码对我有用
import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;
public class Email {
private static String USER_NAME = "xxxx"; // GMail user name (just the part before "@gmail.com")
private static String PASSWORD = "xxxx"; // GMail password
private static String RECIPIENT = "xxx@gmail.com";
public static void main(String[] args) {
String from = USER_NAME;
String pass = PASSWORD;
String[] to = { RECIPIENT }; // list of recipient email addresses
String subject = "Java send mail example";
String body = "Welcome to JavaMail!";
sendFromGMail(from, pass, to, subject, body);
}
private static void sendFromGMail(String from, String pass, String[] to, String subject, String body) {
Properties props = System.getProperties();
String host = "smtp.gmail.com";
// String host="localhost";
// props.put("mail.smtp.ssl.trust", "smtp.gmail.com");
props.put("mail.smtp.starttls.enable", "true");
// props.put("mail.smtp.host", host);
props.put("mail.smtp.ssl.trust", host);
props.put("mail.smtp.user", from);
props.put("mail.smtp.password", pass);
props.put("mail.smtp.port", "587");//587
props.put("mail.smtp.auth", "true");
//System.out.println("success point 1");
Session session = Session.getDefaultInstance(props);
MimeMessage message = new MimeMessage(session);
try {
//System.out.println("success point 2");
message.setFrom(new InternetAddress(from));
InternetAddress[] toAddress = new InternetAddress[to.length];
// To get the array of addresses
for( int i = 0; i < to.length; i++ ) {
toAddress[i] = new InternetAddress(to[i]);
}
for( int i = 0; i < toAddress.length; i++) {
message.addRecipient(Message.RecipientType.TO, toAddress[i]);
}
//System.out.println("success point 3");
message.setSubject(subject);
message.setText(body);
// System.out.println("success point 4");
Transport transport = session.getTransport("smtp");
// System.out.println("success point 5");
transport.connect(host, from, pass);
transport.sendMessage(message, message.getAllRecipients());
transport.close();
//System.out.println("success 6");
}
catch (AddressException ae) {
ae.printStackTrace();
}
catch (MessagingException me) {
me.printStackTrace();
}
}
}
我曾经使用过一些jar文件进行激活,java-mail-1.4.4,javamail-smtp-1.4.2,pop3,mail-6.0.0-sources
连接超时通常是由于
如果这样不起作用,请尝试更改props.put("mail.smtp.port", "587");
到props.put("mail.smtp.port", "465");
或props.put("mail.smtp.port", "25");
建立连接后,一些其他信息(与超时无关):
不要忘记再次检查您的登录凭据。 因为如果提供不正确,它们可能会导致Authentication Failed Exception
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.