English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
È molto semplice inviare una email utilizzando Servlet, ma prima devi installare JavaMail API e Java Activation Framework) JAF。
Puoi scaricare l'ultima versione disponibile dal sito Java JavaMailApri la pagina destra, c'è Downloads Clicca sul link per scaricarlo.
Puoi scaricare l'ultima versione disponibile dal sito Java JAF (versione 1.1.1)。
Puoi anche utilizzare i link di download forniti sul nostro sito:
Scarica e decomprimi questi file, nel nuovo directory principale creato, troverai alcuni file jar di queste applicazioni. Devi aggiungere mail.jar e activation.jar Aggiungi il file alla tua CLASSPATH.
Esempio di invio di una semplice email dal tuo computer. Supponiamo che tu abbiaHost localeConnesso a Internet e supporta l'invio di email. Assicurarsi che tutti i file jar del pacchetto Java Email API e JAF siano disponibili nel CLASSPATH.
// 文件名 SendEmail.java import java.io.*; import java.util.*; import javax.servlet.*; import javax.servlet.http.*; import javax.mail.*; import javax.mail.internet.*; import javax.activation.*; public class SendEmail extends HttpServlet{ public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 收件人的电子邮件 ID String to = "[email protected]"; // 发件人的电子邮件 ID String from = "[email protected]"; // 假设您是从本地主机发送电子邮件 String host = "localhost"; // 获取系统的属性 Properties properties = System.getProperties(); // 设置邮件服务器 properties.setProperty("mail.smtp.host", host); // 获取默认的 Session 对象 Session session = Session.getDefaultInstance(properties); // 设置响应内容类型 response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); try{ // Crea un oggetto MimeMessage di default MimeMessage message = new MimeMessage(session); // Imposta il campo header From: dell'intestazione. message.setFrom(new InternetAddress(from)); // Imposta il campo header To: dell'intestazione. message.addRecipient(Message.RecipientType.TO, new InternetAddress(to)); // Imposta il campo header Subject: message.setSubject("Questo è l'intestazione del soggetto!"); // Ora impostiamo il messaggio reale message.setText("This is actual message"); // Invia il messaggio Transport.send(message); String title = "Invia e-mail"; String res = "Messaggio inviato con successo..."; String docType = "<!DOCTYPE html> \n" out.println(docType "<html>\n" "<head><title>" + title + "</title></head>\n" "<body bgcolor="#f0f0f0">\n" "<h1 align="center">" + title + "</h1>\n" "<p align="center">" + res + "</p>\n" "</body></html>" catch (MessagingException mex) { mex.printStackTrace();
Ora compiliamo il seguente Servlet e creiamo la seguente voce nel file web.xml:
.... <servlet> <servlet-name>SendEmail</servlet-name> <servlet-class>SendEmail</servlet-class> </servlet> <servlet-mapping> <servlet-name>SendEmail</servlet-name> <url-pattern>/SendEmail</url-pattern> </servlet-mapping> ....
Ora chiamare questo Servlet tramite l'URL http://localhost:8080/SendEmail. Questo invierà una email all'ID email fornito [email protected]e mostrerà la risposta di seguito:
Inviare emailMessaggio inviato con successo... |
Se si desidera inviare una email a più destinatari, utilizzare il seguente metodo per specificare più ID di email:
void addRecipients(Message.RecipientType type, Address[] addresses) throws MessagingException
Di seguito è una descrizione dei parametri:
type:Questo verrà impostato su TO, CC o BCC. In questo caso, CC rappresenta CC e BCC rappresenta CC nascosto. Ad esempio Message.RecipientType.TO。
addresses:Questo è un array di ID di email. Quando si specifica un ID di email, è necessario utilizzare il metodo InternetAddress().
Il seguente esempio invierà una email in formato HTML dal tuo computer. Supponiamo che la tuaHost localeConnesso a Internet e supporta l'invio di email. Assicurarsi che tutti i file jar del pacchetto Java Email API e JAF siano disponibili nel CLASSPATH.
Questo esempio è molto simile al precedente, ma qui utilizziamo il metodo setContent() per impostare il secondo parametro su "text/html", che specifica che il contenuto HTML è incluso nel messaggio.
Utilizzando questo esempio, è possibile inviare contenuti HTML di qualsiasi dimensione.
// 文件名 SendEmail.java import java.io.*; import java.util.*; import javax.servlet.*; import javax.servlet.http.*; import javax.mail.*; import javax.mail.internet.*; import javax.activation.*; public class SendEmail extends HttpServlet{ public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 收件人的电子邮件 ID String to = "[email protected]"; // 发件人的电子邮件 ID String from = "[email protected]"; // 假设您是从本地主机发送电子邮件 String host = "localhost"; // 获取系统的属性 Properties properties = System.getProperties(); // 设置邮件服务器 properties.setProperty("mail.smtp.host", host); // 获取默认的 Session 对象 Session session = Session.getDefaultInstance(properties); // 设置响应内容类型 response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); try{ // Crea un oggetto MimeMessage di default MimeMessage message = new MimeMessage(session); // Imposta il campo header From: dell'intestazione. message.setFrom(new InternetAddress(from)); // Imposta il campo header To: dell'intestazione. message.addRecipient(Message.RecipientType.TO, new InternetAddress(to)); // Imposta il campo header Subject: message.setSubject("Questo è l'intestazione del soggetto!"); // 设置实际的 HTML 消息,内容大小不限 message.setContent("<h1>This is actual message</h1>", "text/html"); // Invia il messaggio Transport.send(message); String title = "Invia e-mail"; String res = "Messaggio inviato con successo..."; String docType = "<!DOCTYPE html> \n" out.println(docType "<html>\n" "<head><title>" + title + "</title></head>\n" "<body bgcolor="#f0f0f0">\n" "<h1 align="center">" + title + "</h1>\n" "<p align="center">" + res + "</p>\n" "</body></html>" catch (MessagingException mex) { mex.printStackTrace();
Compilare ed eseguire il Servlet sopra riportato per inviare un messaggio HTML tramite l'ID email fornito.
Esempio seguente invierà una email con allegato dal computer. Supponiamo che la tuaHost localeConnesso a Internet e supporta l'invio di email. Assicurarsi che tutti i file jar del pacchetto Java Email API e JAF siano disponibili nel CLASSPATH.
// 文件名 SendEmail.java import java.io.*; import java.util.*; import javax.servlet.*; import javax.servlet.http.*; import javax.mail.*; import javax.mail.internet.*; import javax.activation.*; public class SendEmail extends HttpServlet{ public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 收件人的电子邮件 ID String to = "[email protected]"; // 发件人的电子邮件 ID String from = "[email protected]"; // 假设您是从本地主机发送电子邮件 String host = "localhost"; // 获取系统的属性 Properties properties = System.getProperties(); // 设置邮件服务器 properties.setProperty("mail.smtp.host", host); // 获取默认的 Session 对象 Session session = Session.getDefaultInstance(properties); // 设置响应内容类型 response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); try{ // Crea un oggetto MimeMessage di default MimeMessage message = new MimeMessage(session); // Imposta il campo header From: dell'intestazione. message.setFrom(new InternetAddress(from)); // Imposta il campo header To: dell'intestazione. message.addRecipient(Message.RecipientType.TO, new InternetAddress(to)); // Imposta il campo header Subject: message.setSubject("Questo è l'intestazione del soggetto!"); // Crea la parte del messaggio BodyPart messageBodyPart = new MimeBodyPart(); // Compila il messaggio messageBodyPart.setText("Questo è il corpo del messaggio"); // Crea un messaggio multiparte Multipart multipart = new MimeMultipart(); // Imposta la parte del messaggio di testo multipart.addBodyPart(messageBodyPart); // La seconda parte è l'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 la parte completa del messaggio message.setContent(multipart); // Invia il messaggio Transport.send(message); String title = "Invia e-mail"; String res = "Email inviata con successo..."; String docType = "<!DOCTYPE html> \n" out.println(docType "<html>\n" "<head><title>" + title + "</title></head>\n" "<body bgcolor="#f0f0f0">\n" "<h1 align="center">" + title + "</h1>\n" "<p align="center">" + res + "</p>\n" "</body></html>" catch (MessagingException mex) { mex.printStackTrace();
Compilare ed eseguire il seguente Servlet per inviare un messaggio con allegato al dato ID di posta elettronica.
Se è necessario fornire ID utente e password per l'autenticazione al server di posta elettronica, è possibile impostare le seguenti proprietà:
props.setProperty("mail.user", "myuser"); props.setProperty("mail.password", "mypwd");
Il resto del meccanismo di invio di email è lo stesso di quanto spiegato sopra.