无法连接smtp问题
Cannot connect to smtp problems
我尝试使用 java 创建一些自动发送邮件
但是在构建项目时出现了一些错误。
这是代码。
package sendmail2;
import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.mail.internet.MimeMessage;
public class SendMail2 {
public static void main(String[] args) {
try{
String host ="smtp.gmail.com" ;
String user = "myemail@gmail.com";
String pass = "mypassword";
String to = "my reciever";
String from = "myemail@gmail.com";
String subject = "Test App";
String messageText = "Congrats";
boolean sessionDebug = false;
Properties props = System.getProperties();
props.put("mail.smtp.starttls.enable", "true");
props.put("mail.smtp.host", host);
props.put("mail.smtp.port", "587");
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.starttls.required", "true");
java.security.Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
Session mailSession = Session.getDefaultInstance(props, null);
mailSession.setDebug(sessionDebug);
Message msg = new MimeMessage(mailSession);
msg.setFrom(new InternetAddress(from));
InternetAddress[] address = {new InternetAddress(to)};
msg.setRecipients(Message.RecipientType.TO, address);
msg.setSubject(subject); msg.setSentDate(new Date());
msg.setText(messageText);
Transport transport=mailSession.getTransport("smtp");
transport.connect(host, user, pass);
transport.sendMessage(msg, msg.getAllRecipients());
transport.close();
System.out.println("message send successfully");
}
catch(Exception ex)
{
System.out.println(ex);
}
}
}
错误是
javax.mail.MessagingException: Could not connect to SMTP host: smtp.gmail.com, port: 587;
nested exception is:
java.net.ConnectException: Connection timed out: connect
BUILD SUCCESSFUL (total time: 21 seconds)
我已经在库中添加了 activation.jar 和 mail.jar。并在 gmail 帐户中打开不太安全的应用程序访问权限。
问题是我不知道我的代码是否有问题,也不知道如何解决
这是我第一次使用堆栈溢出,所以如果我的问题不清楚或难以阅读。请告诉我,很抱歉给您带来不便。
JavaMail 常见问题解答有 tips for debugging connection problems。
很可能有防火墙阻止您直接连接。 JavaMAil FAQ 还描述了如何 connect through a proxy server.
我尝试使用 java 创建一些自动发送邮件 但是在构建项目时出现了一些错误。 这是代码。
package sendmail2;
import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.mail.internet.MimeMessage;
public class SendMail2 {
public static void main(String[] args) {
try{
String host ="smtp.gmail.com" ;
String user = "myemail@gmail.com";
String pass = "mypassword";
String to = "my reciever";
String from = "myemail@gmail.com";
String subject = "Test App";
String messageText = "Congrats";
boolean sessionDebug = false;
Properties props = System.getProperties();
props.put("mail.smtp.starttls.enable", "true");
props.put("mail.smtp.host", host);
props.put("mail.smtp.port", "587");
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.starttls.required", "true");
java.security.Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
Session mailSession = Session.getDefaultInstance(props, null);
mailSession.setDebug(sessionDebug);
Message msg = new MimeMessage(mailSession);
msg.setFrom(new InternetAddress(from));
InternetAddress[] address = {new InternetAddress(to)};
msg.setRecipients(Message.RecipientType.TO, address);
msg.setSubject(subject); msg.setSentDate(new Date());
msg.setText(messageText);
Transport transport=mailSession.getTransport("smtp");
transport.connect(host, user, pass);
transport.sendMessage(msg, msg.getAllRecipients());
transport.close();
System.out.println("message send successfully");
}
catch(Exception ex)
{
System.out.println(ex);
}
}
}
错误是
javax.mail.MessagingException: Could not connect to SMTP host: smtp.gmail.com, port: 587; nested exception is: java.net.ConnectException: Connection timed out: connect BUILD SUCCESSFUL (total time: 21 seconds)
我已经在库中添加了 activation.jar 和 mail.jar。并在 gmail 帐户中打开不太安全的应用程序访问权限。
问题是我不知道我的代码是否有问题,也不知道如何解决
这是我第一次使用堆栈溢出,所以如果我的问题不清楚或难以阅读。请告诉我,很抱歉给您带来不便。
JavaMail 常见问题解答有 tips for debugging connection problems。
很可能有防火墙阻止您直接连接。 JavaMAil FAQ 还描述了如何 connect through a proxy server.