smtp - 我的代码导致 STARTTLS 出现错误,我该如何解决?
问题描述
我编写了整个代码并导入了邮件、激活、com.sun.mail 和 smtp jar,但它仍然在 starttls 中给我一个错误,这是错误:javax.mail.MessagingException: STARTTLS is required but host does not support STARTTLS ,
boolean sessionDebug=false;
Properties props=System.getProperties();
props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
props.put("mail.smtp.starttls.enable", "true");
props.put("mail.smtp.host", host);
props.put("mail.smtp.port", "465");
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.starttls.required", "true");
final javax.mail.Session mailSession = javax.mail.Session.getInstance(props);
java.security.Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
props.put("mail.smtp.debug", "true");
//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(msgText);
Transport transport =mailSession.getTransport("smtp");
System.out.println("smtp");
transport.connect(host,user,pass);
System.out.println("smtp connection");
transport.sendMessage(msg,msg.getAllRecipients());
System.out.println("smtp message");
transport.close();
解决方案
如果您的邮件服务器不支持 STARTTLS,则无法使用它。尝试设置mail.smtp.ssl.enable
。
此外,修复所有这些常见的 JavaMail 错误。
推荐阅读
- python - python 2和3之间的depot_tools冲突
- python - Dash 数据表下载到 Excel
- c# - 在 Jetbrains Rider 上构建时 Blazor App CS0103 错误,当使用 VisualStudio 时没有错误
- php - PHP Wordpress复选框问题
- java - 使用自定义键创建 KTable 时出错
- javascript - 更改类名称的函数的问题
- html - 完全滚动后粘页脚
- c - Objective C 运行时中的子类化
- php - nginx重写层次结构到不同的文件
- jquery - 为什么这个 bootstrap 4 下拉菜单不隐藏同级子菜单