没有smtp的提供者

时间:2011-05-03 13:05:08

标签: tomcat smtp javamail alfresco

我在Tomcat v.6.0.32上运行Alfresco v3.4.0E。除了通过出站SMTP服务器发送电子邮件外,一切正常。这是我得到的堆栈跟踪的相关部分:

Caused by: org.springframework.mail.MailSendException: Mail server connection failed; nested exception is javax.mail.NoSuchProviderException: No provider for smtp 
    at org.springframework.mail.javamail.JavaMailSenderImpl.doSend(JavaMailSenderImpl.java:418)
    at org.springframework.mail.javamail.JavaMailSenderImpl.send(JavaMailSenderImpl.java:341)
    at org.springframework.mail.javamail.JavaMailSenderImpl.send(JavaMailSenderImpl.java:356)
    at org.springframework.mail.javamail.JavaMailSenderImpl.send(JavaMailSenderImpl.java:345)
    at org.alfresco.repo.action.executer.MailActionExecuter.executeImpl(MailActionExecuter.java:439)
    ... 144 more
Caused by: javax.mail.NoSuchProviderException: No provider for smtp 
    at javax.mail.Session.getProvider(Session.java:455)
    at javax.mail.Session.getTransport(Session.java:650)
    at javax.mail.Session.getTransport(Session.java:631)
    at org.springframework.mail.javamail.JavaMailSenderImpl.getTransport(JavaMailSenderImpl.java:433)
    at org.springframework.mail.javamail.JavaMailSenderImpl.doSend(JavaMailSenderImpl.java:387)
    ... 148 more

我已经确定mail.jar和activation.jar都包含在类路径中:

[root tomcat]$ ll webapps/alfresco/WEB-INF/lib/ | grep mail.jar
-rw-rw-r-- 1 alfresco alfresco   356519 Jan 17 20:38 mail.jar
[root tomcat]$ ll webapps/alfresco/WEB-INF/lib/ | grep activation.jar
-rw-rw-r-- 1 alfresco alfresco    55932 Jan 17 20:38 activation.jar

以下是我的alfresco-global.properties的摘录:

# Outbound SMTP -- sending emails from Alfresco to the outside world
mail.from.default=noreply@domain.local
mail.port=25 
mail.protocol=smtp 
mail.encoding=UTF-8
mail.header=
mail.smtp.auth=false
mail.smtp.timeout=30000
mail.host=smtp.domain.local

我已成功通过Alfresco服务器上的telnet使用相同的SMTP服务器发送电子邮件。

我错过了什么?


更新

事实证明(感谢,zaphgod!)这些都是由一些配置问题引起的:注释掉一些属性解决了这个问题:

# Outbound SMTP -- sending emails from Alfresco to the outside world
mail.from.default=noreply@domain.local
#mail.port=25 
#mail.protocol=smtp 
mail.encoding=UTF-8
#mail.header=
#mail.smtp.auth=false
#mail.smtp.timeout=30000
mail.host=smtp.domain.local

现在的问题是,为什么会出现这种情况?我很确定我首先使用的属性是默认值..

3 个答案:

答案 0 :(得分:4)

我的猜测是,错误是由邮件行中的尾随空格字符引起的.protocol = smtp

至少在您发布的配置和堆栈跟踪中存在空格。

答案 1 :(得分:0)

我希望你做了以下事情: Outbound email configuration

答案 2 :(得分:0)

邮件或激活jar可能会损坏吗?你得到的错误确实看起来没有两个中的一个,所以如果你认为他们在那里,那么其中一个不正确/腐败看起来像下一个最可能的解释

尝试解压缩它们(jar是带有元数据的zip文件),并尝试使用类似md5sum的内容来确保它们是您期望的那样。