2012-10-03 101 views
1

grails项目。我使用电子邮件插件,并得到一个异常时,尝试调用的方法 '的sendmail'grails邮件不能正常工作

错误:

Caused by: org.springframework.mail.MailSendException: Mail server connection failed; nested exception is javax.mail.NoSuchProviderException: Unable to locate provider for protocol: smtp. Failed messages: javax.mail.NoSuchProviderException: Unable to locate provider for protocol: smtp; message exceptions (1) are: 
Failed message 1: javax.mail.NoSuchProviderException: Unable to locate provider for protocol: smtp 

Config.groovy中发送

sendMail { 
        to "[email protected]" 
        subject "Hello Fred" 
        body 'How are you?' 
       } 

什么时许

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

例子我做错了?

solution

回答

1

错误说Unable to locate provider for protocol: smtp。看起来你错过了一些smtp协议的依赖,这看起来很奇怪,显然你错过了javamail(?)。因为代码对我来说似乎很好。

+1

Grails的用户库中包含“Geronimo的javamail_1.4_spec-1.7.1.jar” – MaksiK

0

你有没有试图删除

  "mail.smtp.port":"465", 
      "mail.debug":"true", 
从你的配置

?这是我在代码和官方示例之间唯一的区别。

更新:正如GalmWing所述,它似乎是您的java.mail jar文件的问题。请检查此解决方案:Using Java to send emails on gmail account。这听起来像你有同样的问题。你使用哪个Java版本?

+1

我试了一下,并没有帮助 – MaksiK

+0

请检查我的更新 – rdmueller

+0

感谢,它帮助 – MaksiK

0

添加到Config.groovy中

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

使用此代码来发送邮件

def sendEmail(){ 

    mailService.sendMail { 
     to "email","**email**" 
     from "email" 
     subject "Hi" 
     body 'Hi' 
    } 
} 

也不要忘记在你的类注入MailService的

def mailService 

这将注入服务给你的班级

,该配置将足以发送邮件