我正在尝试在eclipse中使用javamail通过gmail发送电子邮件。每次我得到javax.mail.MessagingException
异常
DEBUG: successfully loaded resource: /META-INF/javamail.default.address.map
DEBUG: getProvider() returning javax.mail.Provider[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.gmail.com", port 587, isSSL false
javax.mail.MessagingException: Could not connect to SMTP host:
smtp.gmail.com, port: 587;
nested exception is:
java.net.ConnectException: Connection timed out: connect
代码
package org.itc.utility;
import java.util.Properties;
import javax.mail.Message;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import org.itc.model.User;
public class SendEmail {
public User sendingEmail(User user)
{
Properties props = new Properties();
props.put("mail.smtp.host", "smtp.gmail.com");
props.put("mail.smtp.auth", "true");
props.put("mail.debug", "true");
props.put("mail.smtp.port", 587);
props.put("mail.smtp.socketFactory.port", 587);
props.put("mail.smtp.starttls.enable", "true");
props.put("mail.transport.protocol", "smtp");
Session mailSession = null;
mailSession = Session.getInstance(props,
new javax.mail.Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("<yogeshvbhat@gmail.com>", "<zc516z918>");
}
});
try {
Transport transport = mailSession.getTransport();
MimeMessage message = new MimeMessage(mailSession);
message.setSubject("Sample Subject");
message.setFrom(new InternetAddress("yogeshvbhat@gmail.com"));
String []to = new String[]{"yogeshyvb@gmail.com"};
message.addRecipient(Message.RecipientType.TO, new InternetAddress(to[0]));
String body = "Sample text";
message.setContent(body,"text/html");
transport.connect();
transport.sendMessage(message,message.getRecipients(Message.RecipientType.TO));
transport.close();
} catch (Exception exception) {
System.out.println(exception);
}
return user;
}
}
每次跳过try块我都会得到异常。对此有何帮助?
答案 0 :(得分:0)
通常,连接超时可能有几个原因,包括服务器脱机,网络链路故障和网络路由问题 1 。
但在这种情况下,最可能的解释是防火墙阻止您对gmail邮件服务器的外出访问。这通常是作为监视/控制组织的外发电子邮件的一种手段,或作为一种防止被攻陷机器故意进行垃圾邮件或垃圾邮件的方式。
禁用防火墙
可能不是您的计算机防火墙或您的(家庭)网络防火墙正在执行阻止。您的组织的网络管理员或您的ISP管理员可能会阻止它。
1 - 一般情况下,这些事情可能会破坏从您的机器到服务器的所有网络流量,因此值得用&#34; ping&#34;,&#34; traceroute&#进行一些探测。 34;,&#34; tcptraceroute&#34;,etcetera。
答案 1 :(得分:0)
仅添加以下属性:
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");
props.put("mail.smtp.socketFactory.class",
"javax.net.ssl.SSLSocketFactory");
另外,请检查您的Gmail设置:
希望这会有所帮助。