【问题标题】:No provider for smtp没有 smtp 提供者
【发布时间】:2011-05-04 22:53:26
【问题描述】:

我在 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

我已经使用同一个 SMTP 服务器通过 telnet 从 Alfresco 服务器成功发送了一封电子邮件。

我错过了什么?


更新

事实证明(感谢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

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

【问题讨论】:

    标签: tomcat smtp jakarta-mail alfresco


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢弗洛里安,我现在无法检查,但我敢打赌你是绝对正确的。我会尽快通知您。
    【解决方案2】:

    我希望你做到了以下几点: Outbound email configuration

    【讨论】:

    • 是的,我用我的出站电子邮件配置更新了原始问题
    【解决方案3】:

    邮件或激活 jar 是否已损坏?您遇到的错误看起来确实没有这两者之一,所以如果您认为它们在那里,那么其中一个不正确/损坏看起来是下一个最有可能的解释

    尝试解压缩它们(jar 是带有元数据的 zip 文件),并尝试使用 md5sum 之类的东西来确保它们是您所期望的。

    【讨论】:

    • MD5 告诉我,我使用的 jar 文件在互联网上已经众所周知,虽然不是特别受欢迎:[tomcat]$ md5sum webapps/alfresco/WEB-INF/lib/mail.jar 0bacd591fbd2ce1a5e0d0062be15ff8e webapps/alfresco/WEB-INF/lib/mail.jar [tomcat]$ md5sum webapps/alfresco/WEB-INF/lib/activation.jar d5dd655f6056a72116f6a0666745a386 webapps/alfresco/WEB-INF/lib/activation.jar
    • 我有:0bacd591fbd2ce1a5e0d0062be15ff8e mail.jar 3109d42266e2b4d7c94fabcc63346504 activation-1.1.jar 您是否检查过在您的 tomcat 安装的其他地方是否有这些 jar 的任何不同副本(例如公共或共享)?跨度>
    • 是的,我检查了 CLASSPATH 中每个 jar 的内容,以避免错误命名的 JAR。只有 webapp 中包含的 JAR 才提供 javamail 类/提供程序配置。感谢您的支持,顺便说一句。
    • 你可以试试这个技巧来识别 javax.mail 类的来源:poi.apache.org/faq.html#faq-N10006 - 确保它来自你期望的 jar
    猜你喜欢
    • 2011-02-28
    • 2017-08-13
    • 2021-05-06
    • 2019-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多