Відправка електроної почити із сервера

Створемо просто 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

Оригінал даної статі:http://forum.levik.org.ua/viewtopic.php?f=14&t=22&p=27#p27


Відправка Пост запиту (Sending a POST Request Using a URL)

Відправка Пост запиту (Sending a POST Request Using a URL) на forum.levik.org.ua

try { // Construct data String data = URLEncoder.encode("key1", "UTF-8") + "=" + URLEncoder.encode("value1", "UTF-8"); data += "&" + URLEncoder.encode("key2", "UTF-8") + "=" + URLEncoder.encode("value2", "UTF-8"); // Send data URL url = new URL("http://hostname:80/cgi"); URLConnection conn = url.openConnection(); conn.setDoOutput(true); OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream()); wr.write(data); wr.flush(); // Get the response BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream())); String line; while ((line = rd.readLine()) != null) { // Process line... } wr.close(); rd.close(); } catch (Exception e) { }

Оригінал даної статі: http://forum.levik.org.ua/viewtopic.php?f=14&t=18

Відправка Пост запиту (Sending a POST Request Using a URL)

Відправка Пост запиту (Sending a POST Request Using a URL) на forum.levik.org.ua

try { // Construct data String data = URLEncoder.encode("key1", "UTF-8") + "=" + URLEncoder.encode("value1", "UTF-8"); data += "&" + URLEncoder.encode("key2", "UTF-8") + "=" + URLEncoder.encode("value2", "UTF-8"); // Send data URL url = new URL("http://hostname:80/cgi"); URLConnection conn = url.openConnection(); conn.setDoOutput(true); OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream()); wr.write(data); wr.flush(); // Get the response BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream())); String line; while ((line = rd.readLine()) != null) { // Process line... } wr.close(); rd.close(); } catch (Exception e) { }

Оригінал даної статі: http://forum.levik.org.ua/viewtopic.php?f=14&t=18

Відправка Пост запиту (Send Post Request whis attachment) : JAVA

Відправка Пост запиту (Send Post Request whis attachment) : JAVA на forum.levik.org.ua

import java.io.*; import java.net.HttpURLConnection; import java.net.URL; import java.util.List; public class HTTPMultipartRequest { public static class Param { private String name; private String value; public Param(String name, String value) { this.name = name; this.value = value; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getValue() { return value; } public void setValue(String value) { this.value = value; } } public static class FileParam { private String fileFieldName; private File file; private String fileName; private String contentType; public FileParam(String fileFieldName, String fileName, File file, String contentType) { this.fileFieldName = fileFieldName; this.file = file; this.fileName = fileName; this.contentType = contentType; } public String getFileFieldName() { return fileFieldName; } public File getFile() { return file; } public String getFileName() { return fileName; } public String getContentType() { return contentType; } } private static final String BOUNDARY = "----------Vhgskgpwjxkjdfnldsnfjldsnjlbsndfbgdslfngfnldfg"; private String url; private List<param> params; private List<fileparam> fileParams; public HTTPMultipartRequest(String url, List<param> params, List<fileparam> fileParams) { this.url = url; this.params = params; this.fileParams = fileParams; } public byte[] send() { HttpURLConnection hc = null; InputStream is = null; ByteArrayOutputStream bos = new ByteArrayOutputStream(); byte[] res = null; try { URL _url = new URL(url); hc = (HttpURLConnection) _url.openConnection(); hc.setDoOutput(true); hc.setDoInput(true); hc.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + BOUNDARY); hc.setRequestMethod("POST"); OutputStream dout = hc.getOutputStream(); for (Param p : params) { dout.write( new StringBuffer().append("--").append(BOUNDARY) .append("\r\n") .append("Content-Disposition: form-data; name=\"").append(p.getName()).append("\"") .append("\r\n\r\n") .append(p.getValue()) .append("\r\n").toString().getBytes() ); } for (FileParam fp : fileParams) { dout.write( new StringBuffer().append("--").append(BOUNDARY) .append("\r\n") .append("Content-Disposition: form-data; name=\"").append(fp.getFileFieldName()).append("\"; filename=\"").append(fp.getFileName()).append("\"") .append("\r\n") .append("Content-Type: ").append(fp.getContentType()) .append("\r\n\r\n").toString().getBytes() ); byte[] fileBytes = new byte[(int) fp.getFile().length()]; new FileInputStream(fp.getFile()).read(fileBytes); dout.write(fileBytes); dout.write("\r\n".getBytes()); } dout.write(("\r\n--" + BOUNDARY + "--\r\n").getBytes()); dout.flush(); dout.close(); int ch; is = hc.getInputStream(); while ((ch = is.read()) != -1) { bos.write(ch); } res = bos.toByteArray(); } catch (Exception e) { e.printStackTrace(); } finally { try { bos.close(); if (is != null) is.close(); if (hc != null) hc.disconnect(); } catch (Exception e2) { e2.printStackTrace(); } } return res; } }

Оригінал даної статі: http://forum.levik.org.ua/viewtopic.php?f=14&t=20