Відправка електроної почити із сервера
- 06.08.12, 20:28
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