Spring對郵件的支持
Spring郵件抽象層的主要包為org.springframework.mail。它包括了發送電子郵件的主要接口MailSender,和值對象SimpleMailMessage,它封裝了簡單郵件的屬性如from, to,cc, subject,text。
包里還包含一棵以MailException為根的checked Exception繼承樹,它們提供了對底層郵件系統異常的高級別抽象。 要獲得關于郵件異常層次的更豐富的信息,請參考Javadocs。
為了使用JavaMail中的一些特色, 比如MIME類型的信件, Spring提供了MailSender的一個子接口, 即org.springframework.mail.javamail.JavaMailSender。
Spring還提供了一個回調接口org.springframework.mail.javamail.MimeMessagePreparator, 用于準備JavaMail的MIME信件。
1.發送簡單的文本郵件
package net.xftzr.mail; import java.util.Properties; import org.springframework.mail.SimpleMailMessage; import org.springframework.mail.javamail.JavaMailSenderImpl; /** * 本類測試簡單郵件 * 直接用郵件發送 * @author Administrator * */ public class SingleMailSend { public static void main(String args[]){ JavaMailSenderImpl senderImpl = new JavaMailSenderImpl(); // 設定mail server senderImpl.setHost( " smtp.163.com " ); // 建立郵件消息 SimpleMailMessage mailMessage = new SimpleMailMessage(); // 設置收件人,寄件人 用數組發送多個郵件 // String[] array = new String[] {"sun111@163.com","sun222@sohu.com"}; // mailMessage.setTo(array); mailMessage.setTo( " toEmail@sina.com " ); mailMessage.setFrom( " userName@163.com " ); mailMessage.setSubject( " 測試簡單文本郵件發送! " ); mailMessage.setText( " 測試我的簡單郵件發送機制!! " ); senderImpl.setUsername( " userName " ) ; // 根據自己的情況,設置username senderImpl.setPassword( " password " ) ; // 根據自己的情況, 設置password Properties prop = new Properties() ; prop.put( " mail.smtp.auth " , " true " ) ; // 將這個參數設為true,讓服務器進行認證,認證用戶名和密碼是否正確 prop.put( " mail.smtp.timeout " , " 25000 " ) ; senderImpl.setJavaMailProperties(prop); // 發送郵件 senderImpl.send(mailMessage); System.out.println( " 郵件發送成功.. " ); } } 2.發送簡單的html郵件 org.springframework.mail.javamail.MimeMessageHelper是處理JavaMail郵件常用的順手組件之一。它可以讓你擺脫繁復的javax.mail.internetAPI類 package net.xftzr.mail; import java.util.Properties; import javax.mail.internet.MimeMessage; import org.springframework.mail.javamail.JavaMailSenderImpl; import org.springframework.mail.javamail.MimeMessageHelper; /** * 本類測試html郵件 * @author wangjianme * */ public class HTMLMailDemo { /** * @param args */ public static void main(String[] args) throws Exception{ JavaMailSenderImpl senderImpl = new JavaMailSenderImpl(); //設定mail server senderImpl.setHost("smtp.163.com"); //建立郵件消息,發送簡單郵件和html郵件的區別 MimeMessage mailMessage = senderImpl.createMimeMessage(); MimeMessageHelper messageHelper = new MimeMessageHelper(mailMessage); //設置收件人,寄件人 messageHelper.setTo("Mailto@sina.com"); messageHelper.setFrom("username@163.com"); messageHelper.setSubject("測試HTML郵件!"); //true 表示啟動HTML格式的郵件 messageHelper.setText("<html><head></head><body><h1>hello!!spring html Mail</h1></body></html>",true); senderImpl.setUsername("username") ; // 根據自己的情況,設置username senderImpl.setPassword("password") ; // 根據自己的情況, 設置password Properties prop = new Properties() ; prop.put("mail.smtp.auth", "true") ; // 將這個參數設為true,讓服務器進行認證,認證用戶名和密碼是否正確 prop.put("mail.smtp.timeout", "25000") ; senderImpl.setJavaMailProperties(prop); //發送郵件 senderImpl.send(mailMessage); System.out.println("郵件發送成功.."); } } 3.發送嵌套圖片的郵件 Email允許添加附件,也允許在multipart信件中內嵌資源。內嵌資源可能是你在信件中希望使用的圖像,或者樣式表,但是又不想把它們作為附件。 package net.xftzr.mail; import java.io.File; import java.util.Properties; import javax.mail.internet.MimeMessage; import org.springframework.core.io.FileSystemResource; import org.springframework.mail.javamail.JavaMailSenderImpl; import org.springframework.mail.javamail.MimeMessageHelper; /** * 本類測試郵件中嵌套圖片 * @author wangjianme * */ public class AttachedImageMail { public static void main(String[] args) throws Exception{ JavaMailSenderImpl senderImpl = new JavaMailSenderImpl(); //設定mail server senderImpl.setHost("smtp.163.com"); //建立郵件消息,發送簡單郵件和html郵件的區別 MimeMessage mailMessage = senderImpl.createMimeMessage(); //注意這里的boolean,等于真的時候才能嵌套圖片,在構建MimeMessageHelper時候,所給定的值是true表示啟用, //multipart模式 MimeMessageHelper messageHelper = new MimeMessageHelper(mailMessage,true); //設置收件人,寄件人 messageHelper.setTo("toMail@sina.com"); messageHelper.setFrom("username@163.com"); messageHelper.setSubject("測試郵件中嵌套圖片!!"); //true 表示啟動HTML格式的郵件 messageHelper.setText("<html><head></head><body><h1>hello!!spring image html mail</h1>" + "<img src=\"cid:aaa\"/></body></html>",true); FileSystemResource img = new FileSystemResource(new File("g:/123.jpg")); messageHelper.addInline("aaa",img); senderImpl.setUsername("username") ; // 根據自己的情況,設置username senderImpl.setPassword("password") ; // 根據自己的情況, 設置password Properties prop = new Properties() ; prop.put("mail.smtp.auth", "true") ; // 將這個參數設為true,讓服務器進行認證,認證用戶名和密碼是否正確 prop.put("mail.smtp.timeout", "25000") ; senderImpl.setJavaMailProperties(prop); //發送郵件 senderImpl.send(mailMessage); System.out.println("郵件發送成功.."); } } 4.發送包含附件的郵件 package net.xftzr.mail; import java.io.File; import java.util.Properties; import javax.mail.internet.MimeMessage; import org.springframework.core.io.FileSystemResource; import org.springframework.mail.javamail.JavaMailSenderImpl; import org.springframework.mail .javamail.MimeMessageHelper; public class AttachedFileMail { /** * 本類測試的是關于郵件中帶有附件的例子 * @param args */ public static void main(String[] args) throws Exception{ JavaMailSenderImpl senderImpl = new JavaMailSenderImpl(); //設定mail server senderImpl.setHost("smtp.163.com"); //建立郵件消息,發送簡單郵件和html郵件的區別 MimeMessage mailMessage = senderImpl.createMimeMessage(); //注意這里的boolean,等于真的時候才能嵌套圖片,在構建MimeMessageHelper時候,所給定的值是true表示啟用, //multipart模式 為true時發送附件 可以設置html格式 MimeMessageHelper messageHelper = new MimeMessageHelper(mailMessage,true,"utf-8"); //設置收件人,寄件人 messageHelper.setTo("toMail@sina.com"); messageHelper.setFrom("username@163.com"); messageHelper.setSubject("測試郵件中上傳附件!!"); //true 表示啟動HTML格式的郵件 messageHelper.setText("<html><head></head><body><h1>你好:附件中有學習資料!</h1></body></html>",true); FileSystemResource file = new FileSystemResource(new File("g:/test.rar")); //這里的方法調用和插入圖片是不同的。 messageHelper.addAttachment("test.rar",file); senderImpl.setUsername("username") ; // 根據自己的情況,設置username senderImpl.setPassword("password") ; // 根據自己的情況, 設置password Properties prop = new Properties() ; prop.put("mail.smtp.auth", "true") ; // 將這個參數設為true,讓服務器進行認證,認證用戶名和密碼是否正確 prop.put("mail.smtp.timeout", "25000") ; senderImpl.setJavaMailProperties(prop); //發送郵件 senderImpl.send(mailMessage); System.out.println("郵件發送成功.."); } }/** * 本類測試的是關于郵件中帶有附件的例子 * @param args */ public static void main(String[] args) throws Exception{ JavaMailSenderImpl senderImpl = new JavaMailSenderImpl(); //設定mail server senderImpl.setHost("smtp.163.com"); //建立郵件消息,發送簡單郵件和html郵件的區別 MimeMessage mailMessage = senderImpl.createMimeMessage(); //注意這里的boolean,等于真的時候才能嵌套圖片,在構建MimeMessageHelper時候,所給定的值是true表示啟用, //multipart模式 為true時發送附件 可以設置html格式 MimeMessageHelper messageHelper = new MimeMessageHelper(mailMessage,true,"utf-8"); //設置收件人,寄件人 messageHelper.setTo("toMail@sina.com"); messageHelper.setFrom("username@163.com"); messageHelper.setSubject("測試郵件中上傳附件!!"); //true 表示啟動HTML格式的郵件 messageHelper.setText("<html><head></head><body><h1>你好:附件中有學習資料!</h1></body></html>",true); FileSystemResource file = new FileSystemResource(new File("g:/test.rar")); //這里的方法調用和插入圖片是不同的。 messageHelper.addAttachment("test.rar",file); senderImpl.setUsername("username") ; // 根據自己的情況,設置username senderImpl.setPassword("password") ; // 根據自己的情況, 設置password Properties prop = new Properties() ; prop.put("mail.smtp.auth", "true") ; // 將這個參數設為true,讓服務器進行認證,認證用戶名和密碼是否正確 prop.put("mail.smtp.timeout", "25000") ; senderImpl.setJavaMailProperties(prop); //發送郵件 senderImpl.send(mailMessage); System.out.println("郵件發送成功.."); } }
本文由用戶 wangjianme 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!