Я создаю более крупную программу, которая будет отправлять электронные письма в учетную запись пользователя всякий раз, когда происходит событие, и сейчас я просто концентрируюсь на том, чтобы заставить отправку электронной почты работать.
Прямо сейчас у меня все отлично работает в IDE
(IntelliJ) без ошибок и предупреждений, но после того, как я jar
запустил файл и запустил его в terminal
, я получаю ошибку каждый раз, когда программа пытается отправить электронное письмо.
Я предполагаю, что файл неправильно дрогнул, так как он прекрасно работает в IDE
, но я не слишком уверен. Я искал похожие проблемы с моими, но не нашел работающего решения.
Это файл, который имеет проблемы в terminal
package handler;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMessage.RecipientType;
import java.util.Properties;
public class Sender {
private Sender(){}
private static final String SENDERS_GMAIL = "myemail@email.com";
private static final String SENDERS_PASSWORD = "mypassword";
private static final String RECEIEVES_EMAIL = "myemail@email.com";
private static Properties mailServerProperties;
private static Session mailSession;
private static MimeMessage mailMessage;
public static void sendMail(String emailBody) throws Throwable
{
mailServerProperties = System.getProperties();
mailServerProperties.put("mail.smtp.port", "587");
mailServerProperties.put("mail.smtp.auth", "true");
mailServerProperties.put("mail.smtp.starttls.enable", "true");
mailSession = Session.getDefaultInstance(mailServerProperties);
mailMessage = new MimeMessage(mailSession);
mailMessage.addRecipient(RecipientType.BCC, new InternetAddress(RECEIEVES_EMAIL));
mailMessage.setSubject("Test Email");
mailMessage.setContent(emailBody, "text/html");
Transport transport = mailSession.getTransport("smtp");
transport.connect("smtp.gmail.com", SENDERS_GMAIL, SENDERS_PASSWORD);
transport.sendMessage(mailMessage, mailMessage.getAllRecipients());
transport.close();
}
}
И всякий раз, когда я запускаю .jar
в terminal
, я получаю такую ошибку:
C:\Users\genlap\EmailSender>java -jar SendEmail.jar
javax.mail.NoSuchProviderException: No provider for smtp
at javax.mail.Session.getProvider(Session.java:460)
at javax.mail.Session.getTransport(Session.java:655)
at javax.mail.Session.getTransport(Session.java:636)
at handler.Sender.sendMail(Sender.java:37)
at handler.ManageService.run(ManageService.java:32)
at java.lang.Thread.run(Unknown Source)
Message failed to be sent.
Строка в файле Sender
, вызываемая по ошибке:
Transport transport = mailSession.getTransport("smtp");
Кто-нибудь знает, как я могу это решить?