Java中應用JavaMail多發郵件及郵件的驗證和附件完成。本站提示廣大學習愛好者:(Java中應用JavaMail多發郵件及郵件的驗證和附件完成)文章只能為提供參考,不一定能成為您想要的結果。以下是Java中應用JavaMail多發郵件及郵件的驗證和附件完成正文
多發和用戶驗證
上面先來引見若何完成將郵件發送給多個收件人和若何應用Authenticators對象完成用戶驗證。
指定收件人的時刻,我們可以有兩種辦法來指定。上篇博客是在發送郵件的時刻暫時指定收件人,其實還可以在Message對象中指定。
message.addRecipient(Message.RecipientType.TO,new InternetAddress(” [email protected] ”));
這個只是發送給一個收件人而言,然則有多個收件人若何處置?異樣有兩種辦法來處置。
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("[email protected]")); 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("[email protected]")}); msg.setRecipients(RecipientType.TO, InternetAddress.parse("[email protected],[email protected]")); 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("陳明")+"\"<[email protected]>")); message.setRecipients(RecipientType.TO, new Address[]{new InternetAddress("[email protected]")}); //郵件注釋 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); } }