Клиент не имеет разрешений для отправки в качестве этого отправителя (office 365, grails)

Я постоянно получаю следующее сообщение об ошибке при попытке настроить плагин grails mail (https://grails.org/plugin/mail) для плагина безопасности Grails spring.

вот моя конфигурация выглядит до сих пор,


    grails {
        mail {
            host = "smtp.office365.com"
            port = 587
            username = "info@email.com"
            password = "password"
            props = ["mail.smtp.starttls.enable":"true",
                     "mail.smtp.port":"587"]
        }
    }

    grails.mail.default.from = "info@email.com"

и вот моя трассировка стека.


    .......| Error 2015-04-17 11:59:39,184 [http-bio-8080-exec-8] ERROR errors.GrailsExceptionResolver  - MailSendException occurred when processing request: [POST] /retouch/register/forgotPassword - parameters:
    username: customer
    Failed messages: com.sun.mail.smtp.SMTPSendFailedException: 550 5.7.60 SMTP; Client does not have permissions to send as this sender
    . Stacktrace follows:
    Message: Failed messages: com.sun.mail.smtp.SMTPSendFailedException: 550 5.7.60 SMTP; Client does not have permissions to send as this sender
        Line | Method
    ->>  131 | sendMessage    in grails.plugin.mail.MailMessageBuilder
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
    |     55 | sendMail       in grails.plugin.mail.MailService
    |     59 | sendMail . . . in     ''
    |    156 | forgotPassword in grails.plugin.springsecurity.ui.RegisterController
    |    198 | doFilter . . . in grails.plugin.cache.web.filter.PageFragmentCachingFilter
    |     63 | doFilter       in grails.plugin.cache.web.filter.AbstractFilter
    |     53 | doFilter . . . in grails.plugin.springsecurity.web.filter.GrailsAnonymousAuthenticationFilter
    |     49 | doFilter       in grails.plugin.springsecurity.web.authentication.RequestHolderAuthenticationFilter
    |     82 | doFilter . . . in grails.plugin.springsecurity.web.authentication.logout.MutableLogoutFilter
    |   1145 | runWorker      in java.util.concurrent.ThreadPoolExecutor
    |    615 | run . . . . .  in java.util.concurrent.ThreadPoolExecutor$Worker
    ^    745 | run            in java.lang.Thread

Примечание: проблема только в плагине безопасности Grails spring.

3 ответов


я столкнулся с той же проблемой. Проблема, похоже, возникает из-за spring security, пытающейся установить атрибут "from" в письме как no-reply@localhost. Попробуйте добавить эти строки в конфигурационный файл

 grails.plugin.springsecurity.ui.register.emailFrom = 'info@email.com'
 grails.plugin.springsecurity.ui.forgotPassword.emailFrom = 'info@email.com'

Примечание: info@email.com ваш адрес электронной почты office365


имя пользователя ="info@emal.com"

граалей.почта.по умолчанию.от = "info@email.com"

имя пользователя email должно быть равно from email.


Я получил граали отправки электронной почты довольно легко с помощью тестовой учетной записи GMail, но код разбился с ошибкой, когда я пытался отправить из outlook.office365.com счет:

неудачные сообщения: com.солнце.почта.протокол SMTP.SMTPSendFailedException: 550 5.7.60 SMTP; клиент не имеет разрешений на отправку в качестве этого отправителя

оказывается, мне не хватало только этой строки:

grails.mail.default.from = "sample@somewhere.com"

обратите внимание на адрес электронной почты, указанный в grails.mail.default.from должен соответствовать один в grails.mail.username .

вот конфигурация, которая работала для меня. Базовый пример-пример Hubbub из книги Grails in Action (2nd Ed):

grails.mail.default.from = "sample@somewhere.com"
grails {
  mail {  
      host = "outlook.office365.com"
      port = 587
      username = "sample@somewhere.com"
      password = "secret"
      props = [ "mail.smtp.starttls.enable" : "true",
                "mail.smtp.port"            : "587",
                "mail.smtp.debug"           : "true" ]
  }

и вот соответствующая функция отправки по электронной почте:

def email() {
  println( "Sending email.." );
  sendMail {
      to "test@gmail.com"
      subject "[mail-test]"
      body ("This is a test email, time: " + new Date() )
  }
  println( "  success!!!" );
  flash.message = "Successfully sent email"
  redirect( uri: "/" );
}