Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > отправление почты


Автор: katala 24.4.2006, 16:07
народ помогите!!!!
суть вот в чем:
необходимо просто отправлять пистьма по указанному мылу. я вот тут использовал код 
SimpleEmail email = new SimpleEmail();    
        email.setHostName("stmp.list.ru");    
        email.addTo("[email protected]", "sanya_tnu");    
        email.setFrom("[email protected]", "katala86");    
        email.setSubject("Test message");    
        email.setMsg("This is a simple test of commons-email");    
        email.send();
        }
        catch(EmailException e){
            e.printStackTrace();
        }
но ничего не выходит. может подскажете что сдесь не верно или может как-то по другому написать??? 

Автор: tux 24.4.2006, 16:20
Вот так не было бы в тексте сообщения commons-email, можно было бы долго гадать что это такое. 
А что именно не выходит? Исключение выкидывается или просто письмо не доходит? Если исключение, приведи stackTrace. 

Автор: katala 24.4.2006, 16:25
org.apache.commons.mail.EmailException: Sending the email to the following server failed : stmp.list.ru:25 

Автор: ALKS 24.4.2006, 16:43
ну если предположить что у тебя нету проблемм с фаерволами для доступа к  stmp.list.ru:25, то
все smtp сервера на www.mail.ru требуют аунтификации, чего в твоем примере естественно не реализовано.
не знаю каким библиотеками ты пользуешся, но разберись как там врубить DEBUG мод. тогда увидиш что конкретно рпоизходит 

Автор: tux 24.4.2006, 17:00
Действительно, проблема скорее всего в аутентикации. Добавь перед отправкой сообщения такой метод:
Код

email.setAuthentication("name", "password");

Должно сработать. Если не получится, попробуй с другими серверами. В общем-то в остальном в коде все правильно. 

Автор: ALKS 24.4.2006, 17:05
Цитата(tux @ 24.4.2006,  17:00)
Действительно, проблема скорее всего в аутентикации. Добавь перед отправкой сообщения такой метод:
Код

email.setAuthentication("name", "password");

Должно сработать. Если не получится, попробуй с другими серверами. В общем-то в остальном в коде все правильно.

Не... это зависит какой именно способ  аутентикации ожидает SMTP сервер. если например это POP-before-SMTP то твой пример не прокатит. если это RFC-2554 то может быть. завити опять же от умолчальной конфигурации java.mail... 

Автор: tux 24.4.2006, 17:09
Цитата(ALKS @  24.4.2006,  22:05 Найти цитируемый пост)
Не... это зависит какой именно способ  аутентикации ожидает SMTP сервер. если например это POP-before-SMTP то твой пример не прокатит. если это RFC-2554 то может быть. завити опять же от умолчальной конфигурации java.mail...  

Это-то понятно, это я попробовал успокоить smile Да и Commons-Email практически больше ничего не умеет. 

Автор: ALKS 24.4.2006, 17:17
Но опять же, настоятельно рекомендуеться врубить DEBUG mode. Тогда будет четко видно в чем проблемма.
при использовании java.mail, DEBUG mode врубаеться путем вызова метода setDebug(true ) из javax.mail.Session. как в ваших коммонcах - хз, ройте доку smile 

Автор: tux 24.4.2006, 17:23
Код

email.setDebug(true);
 

Автор: katala 24.4.2006, 17:46
и какие ошибки появились 
DEBUG: JavaMail version 1.4ea
DEBUG: java.io.FileNotFoundException: E:\j2sdk1.4.2\jre\lib\javamail.providers (Не удается найти указанный файл)
DEBUG: !anyLoaded
DEBUG: not loading resource: /META-INF/javamail.providers
DEBUG: successfully loaded resource: /META-INF/javamail.default.providers
DEBUG: Tables of loaded providers
DEBUG: Providers Listed By Class Name: {com.sun.mail.smtp.SMTPSSLTransport=javax.mail.Provider[TRANSPORT,smtps,com.sun.mail.smtp.SMTPSSLTransport,Sun Microsystems, Inc], com.sun.mail.smtp.SMTPTransport=javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc], com.sun.mail.imap.IMAPSSLStore=javax.mail.Provider[STORE,imaps,com.sun.mail.imap.IMAPSSLStore,Sun Microsystems, Inc], com.sun.mail.pop3.POP3SSLStore=javax.mail.Provider[STORE,pop3s,com.sun.mail.pop3.POP3SSLStore,Sun Microsystems, Inc], com.sun.mail.imap.IMAPStore=javax.mail.Provider[STORE,imap,com.sun.mail.imap.IMAPStore,Sun Microsystems, Inc], com.sun.mail.pop3.POP3Store=javax.mail.Provider[STORE,pop3,com.sun.mail.pop3.POP3Store,Sun Microsystems, Inc]}
DEBUG: Providers Listed By Protocol: {imaps=javax.mail.Provider[STORE,imaps,com.sun.mail.imap.IMAPSSLStore,Sun Microsystems, Inc], imap=javax.mail.Provider[STORE,imap,com.sun.mail.imap.IMAPStore,Sun Microsystems, Inc], smtps=javax.mail.Provider[TRANSPORT,smtps,com.sun.mail.smtp.SMTPSSLTransport,Sun Microsystems, Inc], pop3=javax.mail.Provider[STORE,pop3,com.sun.mail.pop3.POP3Store,Sun Microsystems, Inc], pop3s=javax.mail.Provider[STORE,pop3s,com.sun.mail.pop3.POP3SSLStore,Sun Microsystems, Inc], smtp=javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc]}
DEBUG: successfully loaded resource: /META-INF/javamail.default.address.map
DEBUG: !anyLoaded
DEBUG: not loading resource: /META-INF/javamail.address.map
DEBUG: java.io.FileNotFoundException: E:\j2sdk1.4.2\jre\lib\javamail.address.map (Не удается найти указанный файл)
DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc]
DEBUG SMTP: useEhlo true, useAuth true
DEBUG SMTP: useEhlo true, useAuth true 

Автор: ALKS 24.4.2006, 18:05
Эмм.... E:\j2sdk1.4.2\jre\lib\javamail.address.map - а у тебя есть это фаил?

и где попытка отсылки почты вообще? я её не вижу... похоже все грохаеться еще до какой бы то нибыло попытки коннекта к SMTP 

Автор: katala 24.4.2006, 21:12
вот именно нет ни E:\j2sdk1.4.2\jre\lib\javamail.providers ни  E:\j2sdk1.4.2\jre\lib\javamail.address.map!!!! но я не могу их найти. может кно нибудь даст сылку. а лучше киньте плиз мне их на мыло[email protected] 

Автор: tux 25.4.2006, 02:08
Цитата(ALKS @  24.4.2006,  23:05 Найти цитируемый пост)
и где попытка отсылки почты вообще? я её не вижу... похоже все грохаеться еще до какой бы то нибыло попытки коннекта к SMTP  

не... просто katala не привел лог целиком. Отсутствие javamail.address.map - это не ошибка, а фича. Ждем полного лога. 

Автор: katala 25.4.2006, 18:16
дальше 
DEBUG SMTP: trying to connect to host "stmp.list.ru", port 25, isSSL false
org.apache.commons.mail.EmailException: Sending the email to the following server failed : stmp.list.ru:25
    at org.apache.commons.mail.Email.sendMimeMessage(Email.java:873)
    at org.apache.commons.mail.Email.send(Email.java:898) ....... 

Автор: tux 26.4.2006, 01:46
Нет такого хоста stmp.list.ru, есть smtp.list.ru. Еще можно попробовать его реальный IP поставить - 194.67.23.115. 

Автор: tux 26.4.2006, 04:15
katala, просьба более внимательно относиться к задаваемым вопросам и приводить всю информацию, относящуюся к вопросу. Для того, чтобы тебе ответить пришлось запускать твой код и искать причину. В конце лога говориться следующее:
Код

Caused by: javax.mail.SendFailedException: Sending failed;
  nested exception is:
    class javax.mail.MessagingException: Unknown SMTP host: stmp.list.ru;
  nested exception is:
    java.net.UnknownHostException: stmp.list.ru
    at javax.mail.Transport.send0(Transport.java:218)
    at javax.mail.Transport.send(Transport.java:80)
    at org.apache.commons.mail.Email.sendMimeMessage(Email.java:863)
    ... 2 more

- неизвестное имя хоста. Если бы сразу привел название библиотеки и что выдается в логе, ответили бы еще два дня назад. 

Автор: ALKS 26.4.2006, 11:31
однако telnet stmp.list.ru 25 у меня вполне работает. tux неужно у тебя таки firewall? smile 

Автор: tux 26.4.2006, 12:29
Дак таки нет. Ничего не понимаю, что за stmp.list.ru.
Код

bash-3.00$ telnet stmp.list.ru 25
telnet: stmp.list.ru: Name or service not known
stmp.list.ru: Unknown host
bash-3.00$ telnet smtp.list.ru 25
Trying 194.67.23.115...
Connected to smtp.list.ru.
Escape character is '^]'.
220 mail.ru ESMTP Wed, 26 Apr 2006 13:19:45 +0400
 

Автор: ALKS 26.4.2006, 13:00
стоп 
220 mail.ru ESMTP Wed, 26 Apr 2006 13:19:45 +0400 
Unknown host, Unknown host-ом но телнетом-то ты зашел... 

Автор: tux 26.4.2006, 15:13
Это на smtp.list.ru зашел, в листинге два сеанса telnet. 

Автор: katala 26.4.2006, 15:36
все я исправил. спасибо за помощь!!!в следующий раз буду более внимательно проверять перед тем как спрашивать 

Автор: ALKS 26.4.2006, 16:04
DEBUG mode, рулит... сколько раз убеждался уже smile 

Автор: katala 28.4.2006, 18:11
пишу письма на русском а приходят одни иероглифы
поменял кодировку
email.setCharset("Windows-1251");
но все равно  приходят иероглифы . в чем поблема????7 

Автор: powerOn 28.4.2006, 20:35
Цитата

пишу письма на русском а приходят одни иероглифы
поменял кодировку
email.setCharset("Windows-1251");
но все равно  приходят иероглифы . в чем поблема????7  


значит не на ту поменял...  smile  попробую другую кодировку.
И лучше менять её в средстве просмотра, а не отправки писем....  

Автор: _Spirit_ 18.6.2009, 09:59
Подскажите пожалуйста, скачала либу commons-email-1.0.jar с http://commons.apache.org а у меня выкидывает ошибку что не может найти класс BASE64EncoderStream, а в джарнике пакета util вообще нет :( Не могу понять в чем проблема и для чего ему этот энкодер

Код

SimpleEmail email = new SimpleEmail();
        email.setHostName("smtp.gmail.com");
        email.setAuthentication("[email protected]", "password");
        email.setDebug(true);
        email.setSmtpPort(465);
        try {
            email.addTo("[email protected]", "Some user");
            email.setFrom("[email protected]", "Me");
            email.setSubject("Test message");
            email.setMsg("This is a simple test of commons-email");
            email.send();
        } catch (EmailException e) {
            e.printStackTrace();
        }


ошибка:
Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/mail/util/BASE64EncoderStream
    at javax.mail.internet.InternetAddress.setPersonal(InternetAddress.java:216)
    at org.apache.commons.mail.Email.createInternetAddress(Email.java:422)
    at org.apache.commons.mail.Email.addTo(Email.java:490)

Автор: tux 18.6.2009, 10:49
commons-email сам по себе не умеет ничего, это просто надстройка над JavaMail (что написано у него в документации, кстати). Поэтому тебе и JavaMail нужен, можно скачать на сайте Sun.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)