我们正在将一些旧代码移至java11。我们正在创建一个smtp客户端。使用java11时,coe编译失败。

error: package sun.net.smtp is not visible
[javac]  sun.net.smtp.SmtpClient SMTP = new sun.net.smtp.SmtpClient(SMTP_SERVER);
[javac]                            ^
[javac]   (package sun.net.smtp is declared in module java.base, which
does not export it)


看起来smtp软件包支持已从java11中删除。任何建议都会有所帮助。

问候,
阿克

最佳答案

您可以使用JavaMail API发送电子邮件进行排序。转到下面的链接并下载.jar文件,并将其添加到您的项目中。如果没有,您可以将其添加为Maven依赖项。
https://mvnrepository.com/artifact/javax.mail/mail/1.4.7

与SMTP服务器对话并按以下方式发送电子邮件的示例代码。

Message message = new MimeMessage(session);
message.setFrom(new InternetAddress("[email protected]"));
message.setRecipients(
  Message.RecipientType.TO, InternetAddress.parse("[email protected]"));
message.setSubject("Mail Subject");

String msg = "This is a sample email ";

MimeBodyPart mimeBodyPart = new MimeBodyPart();
mimeBodyPart.setContent(msg, "text/html");

Multipart multipart = new MimeMultipart();
multipart.addBodyPart(mimeBodyPart);

message.setContent(multipart);

Transport.send(message);


您的配置可以通过Java属性对象完成

Properties prop = new Properties();
prop.put("mail.smtp.auth", true);
prop.put("mail.smtp.starttls.enable", "true");
prop.put("mail.smtp.host", "smtp.abcmail.com");
prop.put("mail.smtp.port", "25");
prop.put("mail.smtp.ssl.trust", "smtp.abcmail.com");

关于java - 错误:看不到软件包sun.net.smtp,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56683641/

10-14 12:42