我使javamail可以处理用户,加密和身份验证。这是我设置系统属性并在存在身份验证和加密时进行连接的方式。
mailServerProperties = System.getProperties();
mailServerProperties.put("mail.smtp.auth", "true");
if (encryption.equals(TLS_ENCRYPTION)) {
mailServerProperties.put("mail.smtp.starttls.enable", "true");
} else {
mailServerProperties.put("mail.smtp.ssl.enable", "true");
mailServerProperties.put("mail.smtp.socketFactory.port", ei.getSMTPPort());
mailServerProperties.put("mail.smtp.socketFactory.class",
"javax.net.ssl.SSLSocketFactory");
}
mailServerProperties.put("mail.smtp.auth.mechanisms", "auto");
// Connect
getMailSession = Session.getDefaultInstance(mailServerProperties, null);
generateMailMessage = new MimeMessage(getMailSession);
generateMailMessage.addRecipient(Message.RecipientType.TO, new InternetAddress(ei.getToaddr()));
generateMailMessage.setFrom(new InternetAddress(ei.getUser()));
generateMailMessage.setSubject(ei.getSubject());
generateMailMessage.setText(ei.getMessage());
Transport transport = getMailSession.getTransport("smtp");
transport.connect(server, user, pass);
transport.sendMessage(generateMailMessage, generateMailMessage.getAllRecipients());
transport.close();
transport.connect方法需要密码。当SMTP没有任何用户名和密码时,如何连接?我必须使用虚拟用户和虚拟密码吗?
不存在身份验证时,我必须更改哪些系统属性?这就是我的想法。
mailServerProperties.put(“ mail.smtp.auth”,“ true”); ->更改为 false mailServerProperties.put(“ mail.smtp.auth.mechanisms”,“ auto”); ->未设置此属性
非常感谢。
TMH