English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Inviare email con un'applicazione Java è molto semplice, ma prima dovresti installare JavaMail API e Java Activation Framework (JAF) sul tuo computer.
Puoi scaricare l'ultima versione disponibile dal sito Java JavaMailApri la pagina di destra, c'è Downloads Clicca su di esso per scaricarlo.
Puoi scaricare l'ultima versione disponibile dal sito Java JAF (versione 1.1.1).
Puoi anche utilizzare i link di download forniti dal sito:
Scarica e decomprimi questi file, nel nuovo directory superiore creato, troverai alcuni file jar delle applicazioni. Devi aggiungere mail.jar e activation.jar Aggiungi il file al tuo CLASSPATH.
Se utilizzi un server di posta terzo come il server SMTP di QQ, puoi vedere un esempio completo di autenticazione all'articolo in fondo.
Di seguito è un esempio di invio di una email semplice. Supponiamo che il tuo host locale sia connesso alla rete.
// Nome del file SendEmail.java import java.util.*; import javax.mail.*; import javax.mail.internet.*; import javax.activation.*; public class SendEmail { public static void main(String [] args) { // 收件人电子邮箱 String to = "[email protected]"; // 发件人电子邮箱 String from = "[email protected]"; // Specifica che l'host di invio dell'email è localhost String host = "localhost"; // 获取系统属性 Properties properties = System.getProperties(); // 设置邮件服务器 properties.setProperty("mail.smtp.host", host); // 获取默认session对象 Session session = Session.getDefaultInstance(properties); try{ // 创建默认的 MimeMessage 对象 MimeMessage message = new MimeMessage(session); // Set From: 头部头字段 message.setFrom(new InternetAddress(from)); // Imposta l'intestazione del destinatario: campo di intestazione message.addRecipient(Message.RecipientType.TO, new InternetAddress(to)); // Imposta l'intestazione del soggetto: campo di intestazione message.setSubject("Questo è l'intestazione del soggetto!"); // Imposta il corpo del messaggio message.setText("Questo è il messaggio effettivo"); // Invio messaggio Transport.send(message); System.out.println("Messaggio inviato con successo...."); }catch(MessagingException mex) { mex.printStackTrace(); } } }
Compila ed esegui questo programma per inviare una semplice email:
$ java SendEmail Messaggio inviato con successo....
Se desideri inviare una email a più destinatari, utilizza il seguente metodo per specificare più ID destinatari:
void addRecipients(Message.RecipientType type, Address[] addresses) throws MessagingException
Di seguito è la descrizione dei parametri:
type:Deve essere impostato come TO, CC o BCC, dove CC rappresenta copia inoltro e BCC rappresenta copia inoltro segreta. Esempio:Message.RecipientType.TO
addresses: Questo è l'array dell'ID email. Quando si specifica un ID email, è necessario utilizzare il metodo InternetAddress().
Di seguito è riportato un esempio di invio di una E-mail HTML. Supponiamo che il tuo host locale sia già connesso alla rete.
È molto simile all'precedente esempio, eccetto che dobbiamo utilizzare il metodo setContent() con il secondo parametro "text/html" per impostare il contenuto e specificare il contenuto HTML da inviare.
// Nome del file SendHTMLEmail.java import java.util.*; import javax.mail.*; import javax.mail.internet.*; import javax.activation.*; public class SendHTMLEmail { public static void main(String [] args) { // 收件人电子邮箱 String to = "[email protected]"; // 发件人电子邮箱 String from = "[email protected]"; // Specifica che l'host di invio dell'email è localhost String host = "localhost"; // 获取系统属性 Properties properties = System.getProperties(); // 设置邮件服务器 properties.setProperty("mail.smtp.host", host); // Ottieni l'oggetto Session di default. Session session = Session.getDefaultInstance(properties); try{ // Crea l'oggetto MimeMessage di default. MimeMessage message = new MimeMessage(session); // Set From: 头部头字段 message.setFrom(new InternetAddress(from)); // Imposta l'intestazione del destinatario: campo di intestazione message.addRecipient(Message.RecipientType.TO, new InternetAddress(to)); // Imposta Subject: campo dell'intestazione message.setSubject("Questo è l'intestazione del soggetto!"); // Invia un messaggio HTML, è possibile inserire tag HTML message.setContent("<h1>This is actual message</h1>", "text/html"); // Invio messaggio Transport.send(message); System.out.println("Messaggio inviato con successo...."); }catch(MessagingException mex) { mex.printStackTrace(); } } }
Compila ed esegui questo programma per inviare una e-mail HTML:
$ java SendHTMLEmail Messaggio inviato con successo....
Di seguito è riportato un esempio di invio di una E-mail con allegato. Supponiamo che il tuo host locale sia già connesso alla rete.
// Nome del file FileSendEmail.java import java.util.*; import javax.mail.*; import javax.mail.internet.*; import javax.activation.*; public class SendFileEmail { public static void main(String [] args) { // 收件人电子邮箱 String to = "[email protected]"; // 发件人电子邮箱 String from = "[email protected]"; // Specifica che l'host di invio dell'email è localhost String host = "localhost"; // 获取系统属性 Properties properties = System.getProperties(); // 设置邮件服务器 properties.setProperty("mail.smtp.host", host); // Ottieni l'oggetto Session di default. Session session = Session.getDefaultInstance(properties); try{ // Crea l'oggetto MimeMessage di default. MimeMessage message = new MimeMessage(session); // Set From: 头部头字段 message.setFrom(new InternetAddress(from)); // Imposta l'intestazione del destinatario: campo di intestazione message.addRecipient(Message.RecipientType.TO, new InternetAddress(to)); // Imposta Subject: campo dell'intestazione message.setSubject("Questo è l'intestazione del soggetto!"); // Creazione della parte del messaggio BodyPart messageBodyPart = new MimeBodyPart(); // Messaggio messageBodyPart.setText("Questo è il corpo del messaggio"); // creazione messaggio multiparte Multipart multipart = new MimeMultipart(); // impostazione 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); // invio messaggio completo message.setContent(multipart ); // invio del messaggio Transport.send(message); System.out.println("Messaggio inviato con successo...."); }catch(MessagingException mex) { mex.printStackTrace(); } } }
Compila ed esegui il tuo programma per inviare una email con allegato.
$ java SendFileEmail Messaggio inviato con successo....
如果需要提供用户名和密码给e-mail服务器来达到用户认证的目的,你可以通过如下设置来完成:
props.put("mail.smtp.auth", "true"); props.setProperty("mail.user", "myuser"); props.setProperty("mail.password", "mypwd");
e-mail其他的发送机制和上述保持一致。
本示例以 QQ 邮件服务器为例,你需要在登录QQ邮箱后台在"设置"=》账号中开启POP3/SMTP服务 ,如下图所示:
QQ 邮箱通过生成授权码来设置密码:
Java 代码如下:
// 需要用户名密码邮件发送示例 //文件名 SendEmail2.java //本示例以QQ邮箱为例,你需要在qq后台设置 import java.util.Properties; import javax.mail.Authenticator; import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.PasswordAuthentication; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; public class SendEmail2 { public static void main(String [] args) { // 收件人电子邮箱 String to = "[email protected]"; // 发件人电子邮箱 String from = "[email protected]"; // 指定发送邮件的主机为 smtp.qq.com String host = "smtp.qq.com"; // QQ 邮件服务器 // 获取系统属性 Properties properties = System.getProperties(); // 设置邮件服务器 properties.setProperty("mail.smtp.host", host); properties.put("mail.smtp.auth", "true"); // 获取默认session对象 Session session = Session.getDefaultInstance(properties, new Authenticator() { public PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication("[email protected]", "qq邮箱授权码"); // 发件人邮件用户名、授权码 } }); try{ // 创建默认的 MimeMessage 对象 MimeMessage message = new MimeMessage(session); // Set From: 头部头字段 message.setFrom(new InternetAddress(from)); // Imposta l'intestazione del destinatario: campo di intestazione message.addRecipient(Message.RecipientType.TO, new InternetAddress(to)); // Imposta l'intestazione del soggetto: campo di intestazione message.setSubject("Questo è l'intestazione del soggetto!"); // Imposta il corpo del messaggio message.setText("Questo è il messaggio effettivo"); // Invio messaggio Transport.send(message); System.out.println("Messaggio inviato con successo... da oldtoolbag.com"); }catch(MessagingException mex) { mex.printStackTrace(); } } }