2015-04-17 16 views
6

Ricevo continuamente il seguente messaggio di errore durante il tentativo di configurare il plugin di posta Grails (https://grails.org/plugin/mail) per il plugin di sicurezza Spring Grails.Il client non ha le autorizzazioni per l'invio come questo mittente (ufficio 365, grails)

Ecco la mia configurazione sembra così lontano,

 

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

    grails.mail.default.from = "[email protected]" 

E qui è il mio stack trace.

 

    .......| 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 

Nota: il problema si trova solo nel plugin di sicurezza Spring di Grails.

risposta

6

Mi sono imbattuto nello stesso identico problema. Il problema sembra sorgere a causa della sicurezza di primavera che tenta di impostare l'attributo "from" nell'e-mail come no-reply @ localhost. Prova ad aggiungere queste righe al file di configurazione

grails.plugin.springsecurity.ui.register.emailFrom = '[email protected]' 
grails.plugin.springsecurity.ui.forgotPassword.emailFrom = '[email protected]' 

nota: [email protected] è la vostra e-mail Office365

+0

Questa soluzione funziona per me. Grazie. – Balkrishna

+1

dovresti aggiungere anche grails.plugin.springsecurity.ui.forgotPassword.emailFrom = riga '[email protected]' – Aasiz

+0

Non ho bisogno delle 2 righe precedenti per "springsecurity". Mi mancava solo la parte "grails.mail.default.from" per accedere a office365.com. (Nota: non era necessario utilizzare un account mittente GMail) –

3

username = "[email protected]"

grails.mail.default.from = "[email protected]"

nome utente e-mail deve essere uguale a da e-mail.

+0

Spiacente, questo non è il caso. So che entrambe le email dovrebbero essere uguali. Qui c'è solo un errore di battitura mentre si cambia l'e-mail originale. – Balkrishna

3

ho ricevuto Grails l'invio di e-mail piuttosto facilmente utilizzando un account di prova GMail, ma il codice si è schiantato con la errore quando ho provato a mandare da un conto outlook.office365.com:

messaggi non riusciti: com.sun.mail.smtp.SMTPSendFailedException: 550 5.7.60 SMTP; Client non dispone di autorizzazioni per inviare come questo mittente

Si scopre Stavo solo perdendo questa linea:

grails.mail.default.from = "[email protected]" 

Annotare l'indirizzo e-mail specificato nella grails.mail.default.from deve corrispondere a quello in grails.mail.username.

Ecco la configurazione che ha funzionato per me. Esempio di base è l'esempio Hubbub dai Grails libro in azione (2nd Ed):

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

e qui è la corrispondente funzione di invio e-mail:

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