Я сейчас работаю летом программистом на Java.У нас есть приложение, в которое люди могут вводить свои задачи, повестку дня и т. Д. Программа представляет собой программу клиент-сервер, поэтому все данные хранятся на сервере.
Мой начальник попросил меня создать систему почтовых уведомлений.Например, когда крайний срок выполнения задачи близок, он отправляет электронное письмо лицу, назначенному для этой задачи.
Я внедрил эту систему на сервере (который работает 24/24) с использованием JavaMail, и он работает оченьЧто ж.Но через некоторое время (не знаю, как долго) JavaMail прекращает отправку писем.Это исключение, которое я получаю:
...
[Mailer] enqueuing mail
[Mailer] enqueuing mail
[Mailer] enqueuing mail
[Mailer] enqueuing mail
[Mailer] enqueuing mail
[Mailer] enqueuing mail
[Mailer] enqueuing mail
...
[Mailer] flushing mail queue (10 mails)
[Mailer] exception
javax.mail.SendFailedException: Invalid Addresses;
nested exception is:
com.sun.mail.smtp.SMTPAddressFailedException: 553 sorry, that domain isn't in my list of allowed rcpthosts (#5.7.1)
at com.sun.mail.smtp.SMTPTransport.rcptTo(SMTPTransport.java:1446)
at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:736)
at javax.mail.Transport.send0(Transport.java:191)
at javax.mail.Transport.send(Transport.java:120)
at Server.Mailer.send(Mailer.java:119)
at Server.Mailer.flush(Mailer.java:84)
at Server.Mailer.run(Mailer.java:103)
at java.util.TimerThread.mainLoop(Unknown Source)
at java.util.TimerThread.run(Unknown Source)
Caused by: com.sun.mail.smtp.SMTPAddressFailedException: 553 sorry, that domain isn't in my list of allowed rcpthosts (#5.7.1)
at com.sun.mail.smtp.SMTPTransport.rcptTo(SMTPTransport.java:1297)
... 8 more
При работе более X часов он продолжает выдавать эти исключения.Поэтому я подумал, что это произошло из-за превышения времени ожидания соединения с SMTP-сервером.Поэтому я изменил этот код:
Session session = Session.getDefaultInstance(properties, authenticator);
на:
Session session = Session.getInstance(properties, authenticator);
, чтобы он каждый раз создавал новый сеанс.Я думал, что это заставит JavaMail повторно подключиться к SMTP-серверу, и тогда проблема будет решена.Но это не решило проблему, я все еще получаю эти исключения ...
Кто-нибудь знает, как это исправить?
PS: Это код моей отправки функция
Session session = Session.getInstance(properties, authenticator);
MimeMessage message = new MimeMessage(session);
message.setSubject(mail.getSubject());
message.setContent(mail.getHTML().toString(), "text/html");
message.setFrom(mail.getSender());
message.setRecipients(javax.mail.Message.RecipientType.TO, mail.getRecipients());
Transport.send(message);