2015-06-14 2 views
2

Наша система отправляет по электронной почте внутри Работы с использованием asynchronousMailServiceGrails ошибки асинхронной почтовой службы

log.debug 'Sending email to ' + emailTo 
asynchronousMailService.sendMail { 
    multipart true 
    to emailTo.split("[,;]") 
    bcc "[email protected]" 
    from "[email protected]" 
    subject "test subject" 
    html(view:'/email/testTemplate', model: [test: test]) 
    attachBytes testId +".pdf" , 'application/pdf', invoiceBytes 
} 
log.debug("Invoice email sent.") 

со следующим Grails конфигурацией:

grails { 
    mail { 
     host = "smtp.gmail.com" 
     port = 465 
     username = "[email protected]" 
     password = "password" 
     props = ["mail.smtp.auth":"true", 
       "mail.smtp.socketFactory.port":"465", 
       "mail.smtp.socketFactory.class":"javax.net.ssl.SSLSocketFactory", 
       "mail.smtp.socketFactory.fallback":"false"] 

    } 
} 

asynchronous.mail.default.attempt.interval = 300000l  // Five minutes 
asynchronous.mail.default.max.attempts.count = 1 
asynchronous.mail.send.repeat.interval = 60000l   // One minute 
asynchronous.mail.expired.collector.repeat.interval = 607000l 
asynchronous.mail.messages.at.once = 100 
asynchronous.mail.send.immediately = true 
asynchronous.mail.override = false 
asynchronous.mail.clear.after.sent = false 
asynchronous.mail.disable = false 
asynchronous.mail.useFlushOnSave = true 
asynchronous.mail.persistence.provider = 'hibernate4'  // Possible values are 'hibernate', 'hibernate4', 'mongodb' 
asynchronous.mail.gparsPoolSize = 1 
asynchronous.mail.newSessionOnImmediateSend = false 

Я вижу эти журналы, когда он успешно отправляет сообщения:

2015-06-14 12:04:11,107 [ForkJoinPool-4071-worker-1] DEBUG asyncmail.AsynchronousMailProcessService - Open new session. 
2015-06-14 12:04:17,101 [ForkJoinPool-4071-worker-1] DEBUG asyncmail.AsynchronousMailProcessService - Flush the session. 
2015-06-14 12:04:17,101 [ForkJoinPool-4071-worker-1] DEBUG asyncmail.AsynchronousMailProcessService - Destroy the session. 
2015-06-14 12:04:17,101 [ForkJoinPool-4071-worker-1] DEBUG asyncmail.AsynchronousMailProcessService - Open new session. 
2015-06-14 12:04:23,125 [ForkJoinPool-4071-worker-1] DEBUG asyncmail.AsynchronousMailProcessService - Flush the session. 
2015-06-14 12:04:23,125 [ForkJoinPool-4071-worker-1] DEBUG asyncmail.AsynchronousMailProcessService - Destroy the session. 

Однако в некоторых случаях он не отправляет электронное письмо, и нет открытого/f lush/destroy в журналах.

Когда я смотрю таблицу async_mail_mess в базе данных, я вижу, что в элементе электронной почты есть ОШИБКА.

Я не уверен, что вызывает эту прерывистую ошибку и не видит стек из журналов. Должен ли я увеличить максимальное количество попыток? Как поймать эти ошибки?

ответ

0

Плагин изменяет статус сообщения на ERROR перед отправкой сообщения после этого, после чего он изменяет STATUS на SENT. Это необходимо для предотвращения двойной отправки в случае дробления системы. Похоже, вы видите сообщения, которые отправляются прямо сейчас.

Смежные вопросы