我们正在将一些旧代码移至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中删除。任何建议都会有所帮助。
关于, Akj
答案 0 :(得分:1)
您可以使用JavaMail API发送电子邮件进行排序。转到下面的链接并下载.jar文件,并将其添加到您的项目中。如果没有,您可以将其添加为Maven依赖项。 https://mvnrepository.com/artifact/javax.mail/mail/1.4.7
按照以下示例与SMTP服务器进行对话并发送电子邮件的示例代码。
Message message = new MimeMessage(session);
message.setFrom(new InternetAddress("abc@abcmail.com"));
message.setRecipients(
Message.RecipientType.TO, InternetAddress.parse("to@abcmail.com"));
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");
答案 1 :(得分:0)
您应该使用JavaMail,这是一种Java API,用于通过SMTP,POP3和IMAP发送和接收电子邮件。
首先,看看有关使用Java here
发送邮件的Oracle文档。以下示例代码摘自Oracle文档,并说明了如何使用JavaMail API发送电子邮件。
Properties props = new Properties();
props.put("mail.smtp.host", "my-mail-server");
Session session = Session.getInstance(props, null);
try {
MimeMessage msg = new MimeMessage(session);
msg.setFrom("me@example.com");
msg.setRecipients(Message.RecipientType.TO,
"you@example.com");
msg.setSubject("JavaMail hello world example");
msg.setSentDate(new Date());
msg.setText("Hello, world!\n");
Transport.send(msg, "me@example.com", "my-password");
} catch (MessagingException mex) {
System.out.println("send failed, exception: " + mex);
}
另外,请注意,要使用Java Mail发送邮件,您需要有效的SMTP服务器和该服务器中的帐户。