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( " 測試我的簡單郵件發送機制?。?/span> " );?
????
????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( " 郵件發送成功
..
"
);?
?????}?
??}?
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( " 測試我的簡單郵件發送機制?。?/span> " );?
????
????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?sunny?
?*?
?*/?
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("郵件發送成功
..");?
}?
}?
import?java.util.Properties;
import?javax.mail.internet.MimeMessage;?
import?org.springframework.mail.javamail.JavaMailSenderImpl;?
import?org.springframework.mail.javamail.MimeMessageHelper;?
/**?
?*?本類測試html郵件?
?*?@author?sunny?
?*?
?*/?
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?sunny????
?*?
?*/?
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("郵件發送成功
..");?
}?
}?
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?sunny????
?*?
?*/?
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.發送包含附件的郵件























































