Нет поставщика для smtp

#tomcat #smtp #jakarta-mail #alfresco

#tomcat #smtp #джакарта-почта #на свежем воздухе

Вопрос:

Я запускаю Alfresco v3.4.0E на Tomcat v.6.0.32. Все работает нормально, за исключением отправки электронных писем через исходящий 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 и активации.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
  

Теперь вопрос в том, почему такое поведение? Я почти уверен, что свойства, которые я использовал первыми, имеют значения по умолчанию..

Ответ №1:

Я предполагаю, что ошибка была вызвана символом пробела в конце строки mail.protocol = smtp

По крайней мере, в вашей опубликованной конфигурации и трассировке стека присутствует пробел.

Комментарии:

1. Спасибо, Флориан, я не могу проверить прямо сейчас, но держу пари, ты абсолютно прав. Я дам вам знать, как только смогу перепроверить.

Ответ №2:

Я надеюсь, что вы выполнили следующее: Настройка исходящей электронной почты

Комментарии:

1. Да, я обновил исходный вопрос с моей конфигурацией исходящей электронной почты

Ответ №3:

Может ли почта или jar активации быть поврежден? Ошибка, с которой вы столкнулись, выглядит так, как будто у вас нет одного из двух, поэтому, если вы думаете, что они есть, то одно из них, являющееся неправильным / поврежденным, выглядит следующим наиболее вероятным объяснением

Попробуйте разархивировать их (jar — это zip-файлы с метаданными), а также попробуйте использовать что-то вроде md5sum, чтобы убедиться, что они соответствуют вашим ожиданиям.

Комментарии:

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

2. У меня есть: 0bacd591fbd2ce1a5e0d0062be15ff8e mail.jar 3109d42266e2b4d7c94fabcc63346504 activation-1.1.jar Вы проверили, есть ли у вас какие-либо другие копии этих jar в другом месте вашей установки tomcat (например, в common или совместно используемом)?

3. Да, я проверил содержимое каждого jar в CLASSPATH, просто чтобы избежать неправильного названия JAR. Только JAR-файлы, содержащиеся в веб-приложении, предоставляют конфигурацию классов javamail / поставщиков. Спасибо за вашу поддержку, кстати.

4. Вы могли бы попробовать этот трюк для определения, откуда берутся классы javax.mail: poi.apache.org/faq.html#faq-N10006 — убедитесь, что он поступает из ожидаемого jar