Ошибка отправителя почты транспорта Java
Мне нужно отправить электронное письмо после сохранения объекта в моем проекте JAVA, я использую этот код
public static void sendMail(String protocol, String host, String port, final String userName, final String password,
String subject, byte[] content, String para, String cc, String co) {
Properties props = getServerProperties(protocol, host, port);
Session session = Session.getDefaultInstance(props, new javax.mail.Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(userName, password);
}
});
try {
final Message message = new MimeMessage(session);
message.setFrom(new InternetAddress(userName));
message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(para));
message.setRecipients(Message.RecipientType.CC, InternetAddress.parse(cc));
message.setRecipients(Message.RecipientType.BCC, InternetAddress.parse(co));
message.setSubject(subject);
message.setText(content.toString());
Transport.send(message);
} catch (MessagingException e) {
throw new RuntimeException(e);
}
}
private static Properties getServerProperties(String protocol, String host, String port) {
Properties properties = new Properties();
properties.put(String.format("mail.%s.host", protocol), host);
properties.put(String.format("mail.%s.port", protocol), port);
properties.setProperty(String.format("mail.%s.socketFactory.class", protocol), "javax.net.ssl.SSLSocketFactory");
properties.setProperty(String.format("mail.%s.socketFactory.fallback", protocol), "false");
properties.setProperty(String.format("mail.%s.socketFactory.port", protocol), String.valueOf(port));
return properties;
}
но когда я звоню Transport.send(сообщение); возвращает мне сообщение об ошибке
Невозможно вызвать API вызов mail.Отправить в поток, который не является ни потоком исходного запроса, ни потоком, созданным ThreadManager
Что я делаю не так на почтовике?