В моей текущей реализации метод sendEmail
вызывается много раз в цикле для отправки писем на каждый отдельный адрес электронной почты. В результате около 95 электронных писем отправляются успешно, но затем приложение завершается с ошибкой:
javax.mail.AuthenticationFailedException: слишком много попыток входа в систему, повторите попытку позже
Как мне изменить метод sendEmail
, чтобы исправить это?
val EMAIL_FROM = "metricsEmail@gmail.com"
def sendEmail(text: String, recipient: String): Unit = {
val properties = createProperties(HOST, PORT)
val session: Session = Session.getInstance(properties)
val message = createEmailMessage(EMAIL_FROM, properties, session, recipient, text)
val transport: Transport = session.getTransport("smtp")
transport.connect(EMAIL_FROM, PASSWORD)
transport.sendMessage(message, message.getAllRecipients)
}
UPD: После рефакторинга кода, как это предлагается в комментариях, я получаю следующее исключение:
com.sun.mail.smtp.SMTPSendFailedException: 421 4.7.0 Повторите попытку позже, закрыв соединение. (ПОЧТА)
val properties: Properties = System.getProperties
properties.setProperty("mail.smtp.host", HOST)
properties.setProperty("mail.smtp.port", PORT)
properties.setProperty("mail.smtp.starttls.enable", "true")
properties.setProperty("mail.smtp.auth", "true")
val session: Session = Session.getDefaultInstance(properties)
val transport: Transport = session.getTransport("smtp")
transport.connect(DEFAULT_EMAIL_FROM, SENDER_PASSWORD)
def sendEmail(text: String, recipient: String): Unit = {
val message = createEmailMessage(EMAIL_FROM, properties, session, recipient, text)
transport.sendMessage(message, message.getAllRecipients)
}