我想使用gmail作为smtp服务器发送电子邮件。
这是我的代码,我没有让它工作...运行testSettings()后,我得到了调试输出,然后它停止了。没有超时,没有错误,什么都没有。
public void testSettings() {
final String username = Settings.get("benutzername");
final String password = Settings.get("passwort");
Properties props = new Properties();
props.put("mail.transport.protocol", "smtps");
props.put("mail.smtp.starttls.enable", "true");
props.put("mail.smtp.socketFactory.port", Settings.get("port"));
props.put("mail.smtp.socketFactory.class",
"javax.net.ssl.SSLSocketFactory");
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.host", Settings.get("server"));
props.put("mail.smtp.port", Settings.get("port"));
props.put("mail.smtp.timeout", "10000");
props.put("mail.smtp.ssl.checkserveridentity", "false");
props.put("mail.smtp.ssl.trust", "*");
props.put("mail.smtp.connectiontimeout", "10000");
props.put("mail.smtp.debug", "true");
props.put("mail.smtp.socketFactory.fallback", "false");
Session session = Session.getInstance(props,
new javax.mail.Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username, password);
}
});
session.setDebug(true);
try {
Message message = new MimeMessage(session);
message.setFrom(new InternetAddress("[email protected]"));
message.setRecipients(Message.RecipientType.TO,
InternetAddress.parse("[email protected]"));
message.setSubject("Testing Subject");
message.setText("test");
Transport transport = session.getTransport("smtps");
transport.send(message);
// Transport.send(message);
System.out.println("Done");
} catch (MessagingException e) {
// throw new RuntimeException(e);
}
}
DEBUG: setDebug: JavaMail version 1.4.7
DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtps,com.sun.mail.smtp.SMTPSSLTransport,Oracle]
DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Oracle]
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
代替
props.put(“ mail.transport.protocol”,“ smtps”);
运输运输= session.getTransport(“ smtps”);
使用
props.put(“ mail.transport.protocol”,“ smtp”);
运输运输= session.getTransport(“ smtp”);
使用smtp而不是smtps
我使用了JDK 8,Netbeans 8,JavaMail 1.5.2,该示例运行良好:
public static void main(String[] args) {
Properties props = new Properties();
props.put("mail.smtp.host", "smtp.gmail.com");
props.put("mail.smtp.socketFactory.port", "465");
props.put("mail.smtp.socketFactory.class",
"javax.net.ssl.SSLSocketFactory");
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.port", "465");
Session session = Session.getDefaultInstance(props,
new javax.mail.Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("[email protected]","password");
}
});
try {
Message message = new MimeMessage(session);
message.setFrom(new InternetAddress("[email protected]"));
message.setRecipients(Message.RecipientType.TO,
InternetAddress.parse("[email protected]"));
message.setSubject("Testing Subject");
message.setText("Test Mail");
Transport.send(message);
System.out.println("Done");
} catch (MessagingException e) {
throw new RuntimeException(e);
}
}
如果您无法连接端口465,请尝试端口587
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句