我正在尝试用Java发送邮件,我用谷歌搜索它,我发现了一些代码,我试图运行它,但它给了我这个例外:
javax.mail.MessagingException: Could not connect to SMTP host: smtp.gmail.com, port: 587;
nested exception is:
java.net.ConnectException: Connection timed out: connect
这是我的代码:
public class SendMail {
public static void Send(String username, String email) {
Properties props = System.getProperties();
props.put("mail.smtp.starttls.enable", true); // added this line
props.put("mail.smtp.host", "smtp.gmail.com");
props.put("mail.smtp.user", "username@gmail.com");
props.put("mail.smtp.password", "password");
props.put("mail.smtp.port", "587");
props.put("mail.smtp.auth", true);
Session session = Session.getInstance(props, null);
MimeMessage message = new MimeMessage(session);
System.out.println("Port: " + session.getProperty("mail.smtp.port"));
try {
InternetAddress from = new InternetAddress("username");
message.setSubject("Yes we can");
message.setFrom(from);
message.addRecipients(Message.RecipientType.TO, InternetAddress.parse(email));
Multipart multipart = new MimeMultipart("alternative");
BodyPart messageBodyPart = new MimeBodyPart();
messageBodyPart.setText("your username :" + username);
multipart.addBodyPart(messageBodyPart);
messageBodyPart = new MimeBodyPart();
String htmlMessage = "Our html text";
messageBodyPart.setContent(htmlMessage, "text/html");
multipart.addBodyPart(messageBodyPart);
message.setContent(multipart);
Transport transport = session.getTransport("smtp");
transport.connect("smtp.gmail.com", "username@gmail.com", "password");
System.out.println("Transport: " + transport.toString());
transport.sendMessage(message, message.getAllRecipients());
} catch (AddressException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (MessagingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
答案 0 :(得分:0)
这里我使用的配置对我来说没问题
mail.from = myMail
mail.transport.protocol = smtp
mail.smtp.host = smtp.gmail.com
mail.smtp.timeout = 30000
mail.smtp.starttls.enable = true
mail.smtp.auth = true
mail.debug = false
当我发送消息时
Authenticator auth = new MailAuthenticator(myMail , myPass);
Session session = Session.getDefaultInstance(properties, auth);
答案 1 :(得分:0)
以下是一些适用于我的Gmail设置:
//these are fed into the Properties object below:
mail.smtp.starttls.enable = true
mail.transport.protocol = smtp
mail.smtp.auth = true
和一些Java:
Properties properties = ...
javax.mail.Session session = javax.mail.Session.getInstance(properties, null);
Transport transport = session.getTransport("smtp");
transport.connect("smtp.gmail.com", username, password);
答案 2 :(得分:0)
这对我有用。
public class SendEmail
{
public static void main(String [] args)
{
String to = "to@gmail.com";
String from = "from@gmail.com";
String host = "localhost";
Properties properties = System.getProperties();
properties.setProperty("mail.smtp.host", host);
Session session = Session.getDefaultInstance(properties);
try{
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress(from));
message.addRecipient(Message.RecipientType.TO,
new InternetAddress(to));
message.setSubject("Subject");
message.setText("Message");
Transport.send(message);
System.out.println("Message sent.");
}catch (MessagingException mex) {
mex.printStackTrace();
}
}
}