ошибка: пакет sun.net.smtp не виден - PullRequest
0 голосов
/ 20 июня 2019

Мы перемещаем старый код на java11. Мы создаем SMTP-клиент. Компиляция коэффициентов завершается неудачно, когда мы используем java11.

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

Ответы [ 2 ]

1 голос
/ 20 июня 2019

Вы можете использовать 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

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");
0 голосов
/ 20 июня 2019

Вы должны использовать JavaMail, Java API для отправки и получения электронной почты через SMTP, POP3 и IMAP.

Во-первых, посмотрите документы Oracle об отправке почты на Java здесь

Пример кода, приведенный ниже, извлечен из документации 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-сервер и учетная запись на этом сервере.

...