Java中應用JavaMail多發郵件及郵件的驗證和附件完成。本站提示廣大學習愛好者:(Java中應用JavaMail多發郵件及郵件的驗證和附件完成)文章只能為提供參考,不一定能成為您想要的結果。以下是Java中應用JavaMail多發郵件及郵件的驗證和附件完成正文
多發和用戶驗證
上面先來引見若何完成將郵件發送給多個收件人和若何應用Authenticators對象完成用戶驗證。
指定收件人的時刻,我們可以有兩種辦法來指定。上篇博客是在發送郵件的時刻暫時指定收件人,其實還可以在Message對象中指定。
message.addRecipient(Message.RecipientType.TO,new InternetAddress(” 995812509@99.com ”));
這個只是發送給一個收件人而言,然則有多個收件人若何處置?異樣有兩種辦法來處置。
1、在發送郵件時Transport的sendMessage()辦法指定收件人時是應用數組來指定收件人的,這個時刻我們只須要多添加收件人地址便可完成。
2、在應用Message對象來添加收件人我們可使用InternetAddress對象的parse(String string)辦法,該辦法前往的是InternetAddress數組,如許異樣可以完成發送給多個收件人。
我們曉得在停止JavaMail開辟時我們必需要停止受權校驗,受權校驗目標是阻攔別人隨意率性亂發郵件,削減渣滓郵件的發生。
我們可以在獲得Session對象的時刻停止校驗。在Session對象中有這兩個辦法:
這兩個辦法都有一個配合的參數authenticator,該參數是一個Authenticator對象。Authenticator對象就是贊助用戶停止信息驗證的,完成受權校驗。Authenticator對象中有getPasswordAuthentication()辦法,該辦法前往前往一個PasswordAuthentication對象,PasswordAuthentication對象中有兩個辦法:getPassword()、getUserName()也就說我們將password、userName封裝在PasswordAuthentication對象,經由過程這兩個辦法便可以獲得用戶名和暗碼了。便可完成用戶信息驗證。
實例以下:
public class JavaMail_02 {
public static void main(String[] args) throws Exception {
Properties props = new Properties();
props.setProperty("mail.smtp.auth", "true");
props.setProperty("mail.transport.protocol", "smtp");
props.setProperty("mail.host", "smtp.163.com");
Session session = Session.getInstance(props,
new Authenticator(){
protected PasswordAuthentication getPasswordAuthentication(){
return new PasswordAuthentication("********","*********");
}
});
session.setDebug(true);
Message msg = new MimeMessage(session);
msg.setFrom(new InternetAddress("chenssy995812509@163.com"));
msg.setSubject("JavaMail測試法式...");
msg.setContent("<span style='color:red'>這是我的第二個javaMail測試法式....</span>", "text/html;charset=gbk");
//msg.setRecipients(RecipientType.TO, new Address[]{new InternetAddress("1111@@qq.com"),new InternetAddress("2222@qq.cpm")});
msg.setRecipients(RecipientType.TO, InternetAddress.parse("995812509@qq.com,1247723213@qq.com"));
Transport.send(msg);
}
}
帶有圖片和附件的郵件
在現實的電子郵件中我們普通都邑觸及到加倍龐雜電子郵件構造,例若有附件、郵件注釋外面包括圖片、包括歌曲等等,在這個時刻我們就必需要對郵件的構造有著很清楚的熟悉。在停止復合郵件開辟之前須要對復合郵件的構造有必定的懂得。
下面這幅圖片展現了一封復合郵件的全體構造,我們可以看出一封龐雜的電子郵件由多個部門構成。它有一個頭部和注釋,然則注釋其實不是像之前那末簡略了,而是由幾個部門構成。頭部須要起到一個指導的感化,它須要解釋注釋須要應用甚麼樣的分隔符來離開,注釋幾個部門之間應用甚麼樣的組合關系。關於下面電子郵件它由三個部門構成,每部門都有本身頭和體,第一部門也由兩個部門構成。
復合郵件的組合關系:
注釋部門之間有多種組合關系。組合關系以下圖:
alternative:選擇關系。下面的純文本和超文本之間就是一種選擇關系。
related:聯系關系關系。假設下面的超文本注釋是展現一幅圖片,那末我們在發送郵件的時刻必需要將這幅圖片包括到郵件中,也就是所謂的內嵌資本,這個內嵌資本是給超文本用的。所以他們二者之間是一個聯系關系關系。
mixed:混雜關系。在純文本、超文本和內嵌資本構成一個全體和,他們與附件並列著,二者之間就是一個混雜關系了。
復合郵件組織構造的API:
MimeMessage類表現整封電子郵件。
MimeBodyPart類表現郵件的一個MiME新聞。
MimeMultipart類表現一個由多個MIME新聞組分解的組合MIME新聞。
上面一個實例:該郵件外面包括兩個附件、注釋部門包含純文本和超文本,超文本表現展現一張圖片。源代碼以下:
public class JavaMail_03 {
public static void main(String[] args) throws Exception {
Properties props = new Properties();
props.setProperty("mail.smtp.auth", "true");
props.setProperty("mail.transport.protocol", "smtp");
props.setProperty("mail.host", "smtp.163.com");
Session session = Session.getInstance(props,
new Authenticator(){
protected PasswordAuthentication getPasswordAuthentication(){
return new PasswordAuthentication("*****","******");
}
});
Message message = new MimeMessage(session);
message.setSubject("第三個JavaMail測試法式");
message.setFrom(new InternetAddress("\""+MimeUtility.encodeText("陳明")+"\"<chenssy995812509@163.com>"));
message.setRecipients(RecipientType.TO, new Address[]{new InternetAddress("995812509@qq.com")});
//郵件注釋
MimeMultipart multipart = new MimeMultipart("mixed");
message.setContent(multipart);
/*
* 創立郵件的內容
* 包含一個郵件注釋和兩個附件
*/
MimeBodyPart content = new MimeBodyPart(); //郵件內容
MimeBodyPart attch1 = new MimeBodyPart(); //附件1
MimeBodyPart attch2 = new MimeBodyPart(); //附件2
//將郵件內容添加到multipart中
multipart.addBodyPart(content);
multipart.addBodyPart(attch1);
multipart.addBodyPart(attch2);
//設置附件1
DataSource ds1 = new FileDataSource("G:\\電子書\\oracle口令.txt");
DataHandler dh1 = new DataHandler(ds1);
attch1.setDataHandler(dh1);
attch1.setFileName("oracle.txt");
//設置附件2
DataSource ds2 = new FileDataSource("G:\\電子書\\賬號.txt");
DataHandler dh2 = new DataHandler(ds2);
attch2.setDataHandler(dh2);
attch2.setFileName(MimeUtility.encodeText("賬號.txt"));
/*
* 設置內容(注釋)---是一個龐雜體
* 包含HTML注釋和顯示一張圖片
*/
MimeMultipart bodyMultipart = new MimeMultipart("related");
content.setContent(bodyMultipart);
//結構注釋
MimeBodyPart htmlBody = new MimeBodyPart();
MimeBodyPart gifBody = new MimeBodyPart();
bodyMultipart.addBodyPart(htmlBody);
bodyMultipart.addBodyPart(gifBody);
//設置圖片
DataSource gifds = new FileDataSource("F:\\圖片\\圖片\\4.jpg");
DataHandler gifdh = new DataHandler(gifds);
gifBody.setDataHandler(gifdh);
gifBody.setHeader("Content-ID", "<"+gifds.getName()+">");
//gifBody.setHeader("Content-Location", "http://www.itcast.cn/logo.gif");
//設置HTML注釋
htmlBody.setContent("<span style='color:red;font-size:16px'>這是我的第三個JavaMail測試哦!包含了附件和圖片,有點兒龐雜...</span><br>" +
"顯示的圖片<img src='cid:4.jpg'/>", "text/html;charset=UTF-8");
message.saveChanges(); //生成郵件
Transport.send(message);
}
}