#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