Відправка електроної почити із сервера
- 06.08.12, 20:28
Створемо просто JSP - сторінку index.jsp в якії буде форма з такими полями:
From - адрес відправника .
To - адрес отримувача.
Subject - тема повідомлення.
Text - тело повідомлення.
Username - логін для вашого почтового клієнта.
Password - пароль до нього.
Сама JSP - сторінка буде виглядати так:
Код:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Send Message</title>
</head>
<body>
<form action="SendMessageServlet" method="POST">
<pre>
From: <input type="text" name="from">
To: <input type="text" name="to">
Subject: <input type="text" name="subject">
Text: <input type="text" name="text">
User authentication
Username: <input type="text" name="username">
Password: <input type="password" name="userpass">
<input type="submit" value="Send message">
</pre>
</form>
</body>
</html>
Для того щоб все розпочати нам потрібен буде акаунт від почтового клієнта. Наприклад gmail.com
ще нам потрібно буде IP і DMS нашого почтового серверу і порт відправки.
Приклад для gmail.com (хост smtp.gmail.com і порт 465). Якщо ви буде використовувати якийсь інший почтовий сервер потрібно дізнатися у адміністратора чи в налаштуваннях сервера.
Ось код сервлета який буде відповідати за віправку повідомлення:
Код:
package servlets;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Properties;
import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMessage.RecipientType;
public class SendMessageServlet extends HttpServlet {
private Properties config = new Properties();
private String host = "smtp.gmail.com";
private String port = "465";
private String factoryClass = "javax.net.ssl.SSLSocketFactory";
private String authenticate = "true";
private String userName;
private String userPassword;
@Override
public void init() {
config.put("mail.smtp.host", host);
config.put("mail.smtp.port", port);
config.put("mail.smtp.socketFactory.port", port);
config.put("mail.smtp.socketFactory.class", factoryClass);
config.put("mail.smtp.auth", authenticate);
}
private Authenticator authenticate(final String userName, final String userPassword){
Authenticator authenticator = new javax.mail.Authenticator()
{
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(userName, userPassword);
}
};
return authenticator;
}
public void sendMessage(String from, String to, String subject, String text) {
try {
Session mailSession = Session.getInstance(config, authenticate(userName,userPassword));
MimeMessage mimeMessage = new MimeMessage(mailSession);
InternetAddress senderAddress = new InternetAddress(from);
InternetAddress targetAddress = new InternetAddress(to);
mimeMessage.setFrom(senderAddress);
mimeMessage.setRecipient(RecipientType.TO, targetAddress);
mimeMessage.setSubject(subject);
mimeMessage.setText(text);
Transport.send(mimeMessage);
} catch (Exception ex) {
System.err.println(ex.toString());
}
}
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
String from = request.getParameter("from");
String to = request.getParameter("to");
String subject = request.getParameter("subject");
String text = request.getParameter("text");
userName = request.getParameter("username");
userPassword = request.getParameter("userpass");
sendMessage(from,to,subject,text);
}
}
Бібліотеку можна взяти на сайті Oracle
Дана бібліотека mail.jar дозволяє нам обмінюватися емейл повідомленнями. Більш детальну інформацію можна прочитати на сайті oracle про те що ще можна зробити в данії бібліотеці.WebServlet;
import javaxsmtpsmtp
From - адрес відправника .
To - адрес отримувача.
Subject - тема повідомлення.
Text - тело повідомлення.
Username - логін для вашого почтового клієнта.
Password - пароль до нього.
Сама JSP - сторінка буде виглядати так:
Код:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Send Message</title>
</head>
<body>
<form action="SendMessageServlet" method="POST">
<pre>
From: <input type="text" name="from">
To: <input type="text" name="to">
Subject: <input type="text" name="subject">
Text: <input type="text" name="text">
User authentication
Username: <input type="text" name="username">
Password: <input type="password" name="userpass">
<input type="submit" value="Send message">
</pre>
</form>
</body>
</html>
Для того щоб все розпочати нам потрібен буде акаунт від почтового клієнта. Наприклад gmail.com
ще нам потрібно буде IP і DMS нашого почтового серверу і порт відправки.
Приклад для gmail.com (хост smtp.gmail.com і порт 465). Якщо ви буде використовувати якийсь інший почтовий сервер потрібно дізнатися у адміністратора чи в налаштуваннях сервера.
Ось код сервлета який буде відповідати за віправку повідомлення:
Код:
package servlets;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Properties;
import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMessage.RecipientType;
public class SendMessageServlet extends HttpServlet {
private Properties config = new Properties();
private String host = "smtp.gmail.com";
private String port = "465";
private String factoryClass = "javax.net.ssl.SSLSocketFactory";
private String authenticate = "true";
private String userName;
private String userPassword;
@Override
public void init() {
config.put("mail.smtp.host", host);
config.put("mail.smtp.port", port);
config.put("mail.smtp.socketFactory.port", port);
config.put("mail.smtp.socketFactory.class", factoryClass);
config.put("mail.smtp.auth", authenticate);
}
private Authenticator authenticate(final String userName, final String userPassword){
Authenticator authenticator = new javax.mail.Authenticator()
{
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(userName, userPassword);
}
};
return authenticator;
}
public void sendMessage(String from, String to, String subject, String text) {
try {
Session mailSession = Session.getInstance(config, authenticate(userName,userPassword));
MimeMessage mimeMessage = new MimeMessage(mailSession);
InternetAddress senderAddress = new InternetAddress(from);
InternetAddress targetAddress = new InternetAddress(to);
mimeMessage.setFrom(senderAddress);
mimeMessage.setRecipient(RecipientType.TO, targetAddress);
mimeMessage.setSubject(subject);
mimeMessage.setText(text);
Transport.send(mimeMessage);
} catch (Exception ex) {
System.err.println(ex.toString());
}
}
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
String from = request.getParameter("from");
String to = request.getParameter("to");
String subject = request.getParameter("subject");
String text = request.getParameter("text");
userName = request.getParameter("username");
userPassword = request.getParameter("userpass");
sendMessage(from,to,subject,text);
}
}
Бібліотеку можна взяти на сайті Oracle
Дана бібліотека mail.jar дозволяє нам обмінюватися емейл повідомленнями. Більш детальну інформацію можна прочитати на сайті oracle про те що ще можна зробити в данії бібліотеці.WebServlet;
import javaxsmtpsmtp
Оригінал даної статі:http://forum.levik.org.ua/viewtopic.php?f=14&t=22&p=27#p27
0
Коментарі
Гість: Leaving Dry
16.08.12, 21:20
Ладно, но чем вам не угодила обычная отправка сообщений?
Тем более gmail?
levik666
27.08.12, 19:16
ну наприклад на підприємстві є різні програми і дії яки виконує користувач.. наприклад він повинен заповнити якусь форму по клієнту дані.. Деякі дані відправляються користувачю на мило це все реалізовано програмно. Ніхто не каже що gmail це погано. Просто потрібно було щось подібне реалізовати вирішив викласти.
Гість: Bayda
329.05.13, 16:27
Дякую за приклад. Потрібний для побудові тестового фреймоврку