发送电子邮件时遇到问题。我有很好的SMTP和端口,但由于此错误,无法发送消息:
Exception in thread "AWT-EventQueue-0" java.lang.RuntimeException: javax.mail.MessagingException: Could not connect to SMTP host: smtp.gmail.com, port: 465, response: -1
以下是代码:
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
final String username = "stefanrafaa@gmail.com";
final String password = "my password";
Properties props = System.getProperties();
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", "465");
Session session;
session = Session.getInstance(props,
new javax.mail.Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username, password);
}
});
try {
// Create a default MimeMessage object.
MimeMessage message = new MimeMessage(session);
// Set From: header field of the header.
message.setFrom(new InternetAddress("stefanrafa0@gmail.com"));
// Set To: header field of the header.
message.setRecipient(Message.RecipientType.TO,
new InternetAddress("stefanrafaa@gmail.com"));
//subject message
message.setSubject("Help Needed");
// Now set the actual message
message.setText("I need help please help me with this program");
message.setContent("<h:body style=background-color :white;font-family:verdana;color:#0066CC;>"
+ "If you are seeing this its OK !!!<br/><br/>"
+ "</body>", "text/html; charset=utf-8");
// Send message
Transport.send(message);
System.out.println("Sent message successfully...");
} catch (MessagingException e) {
throw new RuntimeException(e);
//System.out.println("MessagingException: "+mex.getMessage());
//JOptionPane.showMessageDialog(null, "[!]Cant connect to the database.");
}
}
如果你知道我在daniweb问过,请回复,但没有快速回复...... 感谢
答案 0 :(得分:1)
您可能希望这样做:
Properties props = new Properties();
props.put("mail.smtp.auth", "true");
而不是:
Properties props = System.getProperties();
props.put("mail.smtp.auth.", "true");
mail.smtp.auth
末尾有一个点,并且使用所有系统属性似乎是一个坏主意。
以下是一个示例http://www.mkyong.com/java/javamail-api-sending-email-via-gmail-smtp-example/
答案 1 :(得分:1)
我也有这个问题,解决了禁用avast
并对我的代码进行了一些更改,如下所示:
public void simpleEmail2(String to, String subject, String message){
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 mmessage = new MimeMessage(session);
mmessage.setFrom(new InternetAddress(username));
mmessage.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to));
mmessage.setSubject("Testing Subject");
mmessage.setText("Dear Mail Crawler,"
+ "\n\n No spam to my email, please!");
Transport.send(mmessage);
System.out.println("Done");
} catch (MessagingException e) {
throw new RuntimeException(e);
}
}