English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Sebbene sia semplice implementare la funzione di invio e-mail utilizzando JSP, è necessario avere l'API JavaMail e installare il JavaBean Activation Framework.
Puoi scaricare l'ultima versione dal sito Java. JavaMail, nella parte destra della pagina c'è Downloads Clicca su questo link per scaricarlo.
Puoi scaricare l'ultima versione dal sito Java. JAF (versione 1.1.1).
Scaricare e decomprimere questi file, nella directory radice, vedrai una serie di pacchetti jar. Aggiungi i pacchetti mail.jar e activation.jar alla variabile CLASSPATH.
Questo esempio mostra come inviare una semplice e-mail dal proprio computer. Si assume che localhost sia connesso alla rete e in grado di inviare una e-mail. Allo stesso tempo, confermare nuovamente che i pacchetti mail.jar e activation.jar siano stati aggiunti alla variabile CLASSPATH.
<%@ page import="java.io.*,java.util.*,javax.mail.*"%> <%@ page import="javax.mail.internet.*,javax.activation.*"%> <%@ page import="javax.servlet.http.*,javax.servlet.*" %> <% String result; // 收件人的电子邮件 String to = "[email protected]"; // 发件人的电子邮件 String from = "[email protected]"; // 假设你是从本地主机发送电子邮件 String host = "localhost"; // 获取系统属性对象 Properties properties = System.getProperties(); // 设置邮件服务器 properties.setProperty("mail.smtp.host", host); // 获取默认的Session对象。 Session mailSession = Session.getDefaultInstance(properties); try{ // 创建一个默认的MimeMessage对象。 MimeMessage message = new MimeMessage(mailSession); // 设置 From: 头部的header字段 message.setFrom(new InternetAddress(from)); // Imposta campo header To: message.addRecipient(Message.RecipientType.TO, new InternetAddress(to)); // Imposta campo header Subject: message.setSubject("Questo è la riga di oggetto!"); // Ora impostiamo il messaggio effettivo message.setText("Questo è il messaggio effettivo"); // Invia messaggio Transport.send(message); result = "Messaggio inviato con successo...."; }catch(MessagingException mex) { mex.printStackTrace(); result = "Errore: impossibile inviare messaggio...."; } %> <html> <head> <title>Inviare e-mail utilizzando JSP</title> </head> <body> <center> <h1>Send Email using JSP</h1> </center> <p align="center"> <% out.println("Result: " + result + "\n"); %> </p> </body> </html>
Ora accedi a http://localhost:8080/SendEmail.jsp, invierà una e-mail a [email protected] e mostrerà il seguente risultato:
Inviare e-mail utilizzando JSP Risultato: Messaggio inviato con successo....
Se si desidera inviare una e-mail a più persone, i seguenti metodi possono essere utilizzati per specificare più indirizzi e-mail:
void addRecipients(Message.RecipientType type, Address[] addresses) throws MessagingException
La descrizione dei parametri è la seguente:
type: Questo valore verrà impostato su TO (destinatario), CC o BCC. CC significa Carbon Copy (copia in copia), BCC significa Blind Carbon Copy (copia in copia cieca). L'esempio utilizza TO.
addresses: Questo è un array di indirizzi e-mail, quando si specifica un indirizzo e-mail è necessario utilizzare il metodo InternetAddress().
Questo esempio invia una semplice e-mail HTML. Assicurarsi che il proprio localhost sia connesso alla rete e in grado di inviare e-mail. Allo stesso tempo, confermare nuovamente che i pacchetti mail.jar e activation.jar siano stati aggiunti alla variabile CLASSPATH.
这个实例和前一个实例非常相似,不过在这个实例中我们使用了setContent()方法,将"text/html"做为第二个参数传给它,用来表明消息中包含了HTML内容。
<%@ page import="java.io.*,java.util.*,javax.mail.*"%> <%@ page import="javax.mail.internet.*,javax.activation.*"%> <%@ page import="javax.servlet.http.*,javax.servlet.*" %> <% String result; // 收件人的电子邮件 String to = "[email protected]"; // 发件人的电子邮件 String from = "[email protected]"; // 假设你是从本地主机发送电子邮件 String host = "localhost"; // 获取系统属性对象 Properties properties = System.getProperties(); // 设置邮件服务器 properties.setProperty("mail.smtp.host", host); // 获取默认的Session对象。 Session mailSession = Session.getDefaultInstance(properties); try{ // 创建一个默认的MimeMessage对象。 MimeMessage message = new MimeMessage(mailSession); // 设置 From: 头部的header字段 message.setFrom(new InternetAddress(from)); // Imposta campo header To: message.addRecipient(Message.RecipientType.TO, new InternetAddress(to)); // Imposta campo header Subject: message.setSubject("Questo è la riga di oggetto!"); // 设置 HTML消息 message.setContent("<h1>This is actual message</h1>", "text/html"); // Invia messaggio Transport.send(message); result = "Messaggio inviato con successo...."; }catch(MessagingException mex) { mex.printStackTrace(); result = "Errore: impossibile inviare messaggio...."; } %> <html> <head> <title>Send HTML Email using JSP</title> </head> <body> <center> <h1>Send Email using JSP</h1> </center> <p align="center"> <% out.println("Result: " + result + "\n"); %> </p> </body> </html>
现在你可以尝试使用以上JSP文件来发送HTML消息的电子邮件。
这个实例告诉我们如何发送一封包含附件的邮件。
<%@ page import="java.io.*,java.util.*,javax.mail.*"%> <%@ page import="javax.mail.internet.*,javax.activation.*"%> <%@ page import="javax.servlet.http.*,javax.servlet.*" %> <% String result; // 收件人的电子邮件 String to = "[email protected]"; // 发件人的电子邮件 String from = "[email protected]"; // 假设你是从本地主机发送电子邮件 String host = "localhost"; // 获取系统属性对象 Properties properties = System.getProperties(); // 设置邮件服务器 properties.setProperty("mail.smtp.host", host); // 获取默认的Session对象。 Session mailSession = Session.getDefaultInstance(properties); try{ // 创建一个默认的MimeMessage对象。 MimeMessage message = new MimeMessage(mailSession); // 设置 From: 头部的header字段 message.setFrom(new InternetAddress(from)); // Imposta campo header To: message.addRecipient(Message.RecipientType.TO, new InternetAddress(to)); // Imposta campo header Subject: message.setSubject("Questo è la riga di oggetto!"); // Crea parte messaggio BodyPart messageBodyPart = new MimeBodyPart(); // Riempi messaggio messageBodyPart.setText("Questo è il corpo del messaggio"); // Crea messaggio multimediale Multipart multipart = new MimeMultipart(); // Imposta parte messaggio di testo multipart.addBodyPart(messageBodyPart); // Parte allegato messageBodyPart = new MimeBodyPart(); String filename = "file.txt"; DataSource source = new FileDataSource(filename); messageBodyPart.setDataHandler(new DataHandler(source)); messageBodyPart.setFileName(filename); multipart.addBodyPart(messageBodyPart); // Invia messaggio completo message.setContent(multipart); // Invia messaggio Transport.send(message); String title = "Invia Email"; result = "Messaggio inviato con successo...."; }catch(MessagingException mex) { mex.printStackTrace(); result = "Errore: impossibile inviare messaggio...."; } %> <html> <head> <title>Invia allegato email utilizzando JSP</title> </head> <body> <center> <h1>Send Attachement Email using JSP</h1> </center> <p align="center"> <% out.println("Result: " + result + "\n"); %> </p> </body> </html>
如果邮件服务器需要用户名和密码来进行用户认证的话,可以像下面这样来设置:
properties.setProperty("mail.user", "myuser"); properties.setProperty("mail.password", "mypwd");
使用HTML表单接收一封邮件,并通过request对象获取所有邮件信息:
String to = request.getParameter("to"); String from = request.getParameter("from"); String subject = request.getParameter("subject"); String messageText = request.getParameter("body");
获取以上信息后,您就可以使用前面提到的实例来发送邮件了。