Модераторы: LSD, AntonSaburov

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> отправить email из JSP и сервлета, нужен пример 
:(
    Опции темы
Altar
Дата 2.10.2005, 11:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 71
Регистрация: 10.7.2005

Репутация: нет
Всего: нет



Подскажите пожалуйста как это можно сделать кто знает smile
PM MAIL   Вверх
tux
Дата 2.10.2005, 14:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Летатель
***


Профиль
Группа: Участник Клуба
Сообщений: 1853
Регистрация: 10.2.2005
Где: msk.ru

Репутация: 74
Всего: 132



Из JSP или сервлетов email отправляется точно также, как и из любого другого Java-приложения.

Недавно Stampede для этой цели рекомендовал библиотеку Commons-Email, вот ее и будет проще всего использовать. Скачать можно, например, здесь. Домашняя страница, включающая документацию, списки рассылки и т.п. находится здесь. Использование библиотеки - проще не бывает.

В простейшем случае, если отправляется простой текст, то отправка сообщения выглядит так:
Код

SimpleEmail email = new SimpleEmail();
email.setHostName("pop.mail.ru");
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();

Здесь метод setHostName() задает имя SMTP-сервера, addTo() - адресата сообшения, setFrom() - отправителя, setSubject() - тему сообщения, setMsg() - тело сообщения. Или, если необходимо задать имя и пароль пользователя для сервера SMTP, перед отправкой добавится еще один метод:
Код

email.setAuthentication("altar", "some_password");

Работа с вложениями не намного сложнее. Другие примеры использования можно посмотреть здесь.

Внимание! Для работы нужна библиотека JavaMail, которую для отправки электронной почты можно использовать и саму по себе, только это будет несколько сложнее. Хотя если придется отправлять что-то относительное сложное, так и придется сделать. Скачать JavaMail можно здесь - http://java.sun.com/products/javamail/downloads/index.html.
И если интересно до кучи еще ссылочки по JavaMail: простая вводная статья по работе с JavaMail, cтатьи от Sun Microsystems.

Это сообщение отредактировал(а) tux - 2.10.2005, 14:19
PM MAIL Skype GTalk Jabber YIM   Вверх
Maksym
Дата 10.10.2005, 12:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


.
***


Профиль
Группа: Участник Клуба
Сообщений: 1456
Регистрация: 19.8.2005
Где: Odessa, Black Sea

Репутация: 24
Всего: 62



Круто tux все рассказал smile
Добавлю только, что на форуме в этой и этой темах можно найти много работающих примеров с обсуждением (JavaMail)
И вот еще документ полезный, кажется, выше не было.
PM MAIL   Вверх
Hidrag
Дата 27.1.2007, 22:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 877
Регистрация: 9.4.2005
Где: JDK

Репутация: 2
Всего: 25



tux, а как встроить этот код в jsp страницу, чтобы отправлять мыло, при этом не создавая для обработки сервлет, то есть жму на странице "отправить" и страница отправляет, а не передает данные на сервер сервлету например, или все равно нужно сервлет для обработки написать?


--------------------
user posted image
PM WWW ICQ   Вверх
tux
Дата 27.1.2007, 23:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Летатель
***


Профиль
Группа: Участник Клуба
Сообщений: 1853
Регистрация: 10.2.2005
Где: msk.ru

Репутация: 74
Всего: 132



Цитата(Hidrag @  27.1.2007,  22:49 Найти цитируемый пост)
tux, а как встроить этот код в jsp страницу

А чем JSP принципиально отличается от сервлета? JSP в конечном счете парсится в сервлет и как сервлет и запускается. Пишешь тоже самое в скриплете и все. 
PM MAIL Skype GTalk Jabber YIM   Вверх
Hidrag
Дата 27.1.2007, 23:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 877
Регистрация: 9.4.2005
Где: JDK

Репутация: 2
Всего: 25



tux, я понимаю, но когда нажимаю кнопку submit в странице она ведь начнет методом get или post слать данные на сервер и как это обработать я знаю, а вот обойти это как? или же при субмите слать данные в эту же jsp а в ней обработчик сделать...

...а что есть скриплет?  smile 


--------------------
user posted image
PM WWW ICQ   Вверх
tux
Дата 28.1.2007, 00:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Летатель
***


Профиль
Группа: Участник Клуба
Сообщений: 1853
Регистрация: 10.2.2005
Где: msk.ru

Репутация: 74
Всего: 132



Цитата(Hidrag @  27.1.2007,  23:12 Найти цитируемый пост)
tux, я понимаю, но когда нажимаю кнопку submit в странице она ведь начнет методом get или post слать данные на сервер и как это обработать я знаю, а вот обойти это как? или же при субмите слать данные в эту же jsp а в ней обработчик сделать...

А с сервлетами что-то по-другому? Ну поставь в action формы ту же самую JSP если надо. 

Цитата(Hidrag @  27.1.2007,  23:12 Найти цитируемый пост)
...а что есть скриплет?  

Это вот:
Код

<%
SimpleEmail email = new SimpleEmail();
email.setHostName("pop.mail.ru");
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();
%>

PM MAIL Skype GTalk Jabber YIM   Вверх
Hidrag
Дата 29.1.2007, 17:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 877
Регистрация: 9.4.2005
Где: JDK

Репутация: 2
Всего: 25



Цитата(tux @  28.1.2007,  00:44 Найти цитируемый пост)
Ну поставь в action формы ту же самую JSP если надо. 

хорошо, а как мне обработать в ней пост запрос? если в сервлете я пишу в методе doPost а как в jsp? Есть какой нибудь "перобразователь" сервлета в jsp, чтобы посмотреть? smile


--------------------
user posted image
PM WWW ICQ   Вверх
Greg
Дата 30.1.2007, 21:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 158
Регистрация: 16.9.2006
Где: Беларусь, г.Минск

Репутация: 5
Всего: 7



Цитата(Hidrag @  27.1.2007,  22:49 Найти цитируемый пост)
tux, а как встроить этот код в jsp страницу, чтобы отправлять мыло, при этом не создавая для обработки сервлет, то есть жму на странице "отправить" и страница отправляет, а не передает данные на сервер сервлету например, или все равно нужно сервлет для обработки написать?

Данные,которые не передаются на сервер для обработки,могут быть обработаны на стороне тонкого клиента (браузера),посредством JavaScript.Попробуйте разместить этот вопрос в топике по JavaScript.

--------------------
Страх перед возможностью ошибки не должен отвращать нас от поисков истины.
PM MAIL   Вверх
Foo
Дата 31.1.2007, 00:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 164
Регистрация: 20.10.2006

Репутация: 1
Всего: 3



Цитата(Hidrag @ 29.1.2007,  17:58)
Цитата(tux @  28.1.2007,  00:44 Найти цитируемый пост)
Ну поставь в action формы ту же самую JSP если надо. 

хорошо, а как мне обработать в ней пост запрос? если в сервлете я пишу в методе doPost а как в jsp? Есть какой нибудь "перобразователь" сервлета в jsp, чтобы посмотреть? smile

я в таких случаях делаю так:

MyJsp.jsp
Код


<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'MyJsp.jsp' starting page</title>
    
    <!--
    <link rel="stylesheet" type="text/css" href="styles.css">
    -->
  </head>
  
  <body>
  <Form method="post" action="MyJsp.jsp">
    <%
     if (session.getAttribute("sendMail") != null && "true".equals(session.getAttribute("sendMail"))){
         //do something for send mail
             //SimpleEmail email = new SimpleEmail();
                //email.setHostName("pop.mail.ru");
                //email.addTo(request.getParameter("emailAdress"), "Some user");
                //email.setFrom("[email protected]", "Me");
                //email.setSubject("Test message");
                //email.setMsg(request.getParameter("emailAdress"));
                //email.send();
            //etc.
            session.setAttribute("sendMail","false");
            %>
                <a href="MyJsp.jsp">back</a>
            <%
        }else{
     session.setAttribute("sendMail","true");
         %>
             Input email data there
             Adress (for example [email protected]) <input name="emailAdress"/><br>
             Text of message <input name="emailText"/><br>
                <input type="submit"/>
         <%
     }
    %>
  </Form>
  </body>
</html>



хотя наверняка есть более правильные пути решения этой проблемы...

Это сообщение отредактировал(а) Foo - 31.1.2007, 00:31
--------------------
qip
PM MAIL   Вверх
Hidrag
Дата 1.2.2007, 23:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 877
Регистрация: 9.4.2005
Где: JDK

Репутация: 2
Всего: 25



Написал в jsp:
Код

                                <form action = SendMail method="POST"> 
                                    <input type="text" name="Adres" value="" />
                                    <br>
                                    <br>
                                    <textarea name="Message" rows="4" cols="20">
                                    </textarea>
                                    <br>
                                    <br>
                                    <input type="submit" value="Send" name="Sendbut" />
                                </form>



вот метод пост сервлета который это обрабатывает
Код

            String adres = request.getParameter("Adres");
            String mess = request.getParameter("Message");

            try {
                SimpleEmail email = new SimpleEmail();
                email.setHostName("pop.mail.ru");
                email.addTo(adres, "Some user");
                email.setFrom("[email protected]", "Me");
                email.setSubject("Test message");
                email.setMsg(mess);
                email.setAuthentication("juniorproject", "parolnedam");
                email.send();
            } catch (EmailException mes) {
                out.println(err.getErrorHTML("Error"+mes.getMessage()));
            }


получаю:
Код

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: Servlet execution threw an exception
    org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:368)

root cause

java.lang.NoClassDefFoundError: javax/activation/DataSource
    org.apache.commons.mail.Email.buildMimeMessage(Email.java:749)
    org.apache.commons.mail.Email.send(Email.java:897)
    ru.juga.dev.junior.SendMail.doPost(SendMail.java:44)
    ru.juga.dev.junior.SendMail.service(SendMail.java:21)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:368)

note The full stack trace of the root cause is available in the Apache Tomcat/5.5.17 logs.

сервер приложений - томкат,  идущий вместе с нетбинсом 5.5
все время был в интернете, и еще 
Код

            } catch (EmailException mes) {
                out.println(err.getErrorHTML("Error"+mes.getMessage()));
            }

сдесь у меня шел мой перехватчик ошибок, но он ничего не словил...

Что не так?


--------------------
user posted image
PM WWW ICQ   Вверх
Hidrag
Дата 1.2.2007, 23:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 877
Регистрация: 9.4.2005
Где: JDK

Репутация: 2
Всего: 25



на всякий случай залил на хостинг
там вот такой эксепшн вывалился:
Код

500 Servlet Exception
java.lang.NoClassDefFoundError: javax/activation/DataSource
    at org.apache.commons.mail.Email.buildMimeMessage(Email.java:749)
    at org.apache.commons.mail.Email.send(Email.java:897)
    at ru.juga.dev.junior.SendMail.doPost(SendMail.java:44)
    at ru.juga.dev.junior.SendMail.service(SendMail.java:21)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:103)
    at com.caucho.server.http.FilterChainServlet.doFilter(FilterChainServlet.java:96)
    at com.caucho.server.http.Invocation.service(Invocation.java:315)
    at com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:246)
    at com.caucho.server.http.HttpRequest.handleConnection(HttpRequest.java:163)
    at com.caucho.server.TcpConnection.run(TcpConnection.java:139)
    at java.lang.Thread.run(Thread.java:536)
Resin 2.1.14 (built Thu Jul 1 18:39:55 PDT 2004)



--------------------
user posted image
PM WWW ICQ   Вверх
tux
Дата 2.2.2007, 00:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Летатель
***


Профиль
Группа: Участник Клуба
Сообщений: 1853
Регистрация: 10.2.2005
Где: msk.ru

Репутация: 74
Всего: 132



Для работы JavaMail нужен еще activation.jar.
PM MAIL Skype GTalk Jabber YIM   Вверх
Hidrag
Дата 2.2.2007, 00:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 877
Регистрация: 9.4.2005
Где: JDK

Репутация: 2
Всего: 25



в архиве JavaMail не нашел, где можно взять?


--------------------
user posted image
PM WWW ICQ   Вверх
tux
Дата 2.2.2007, 01:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Летатель
***


Профиль
Группа: Участник Клуба
Сообщений: 1853
Регистрация: 10.2.2005
Где: msk.ru

Репутация: 74
Всего: 132



PM MAIL Skype GTalk Jabber YIM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.1060 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.