Java郵件發(fā)送程序(可以同時(shí)發(fā)給多個(gè)地址、可以帶附件)
import java.util.Properties;
import common.util.Email_Autherticatorbean;
import javax.mail.Authenticator;
import javax.mail.internet.InternetAddress;
import org.apache.commons.lang.StringUtils;
import javax.mail.internet.MimeBodyPart;
import javax.mail.Multipart;
import javax.activation.FileDataSource;
import javax.mail.internet.MimeMultipart;
import javax.activation.DataHandler;
import javax.mail.internet.MimeUtility;
import java.util.Date;
/**
* 利用java.mail的郵件發(fā)送程序
*/
public class SendMailTest
{
public static void main(String[] args)
{
String title = "titleTest";//所發(fā)送郵件的標(biāo)題
String from ="sir_znp@163.com";//從那里發(fā)送
String sendTo[] = {"znp@163.net","sir_znp@163.com"};//發(fā)送到那里
//郵件的文本內(nèi)容,可以包含html標(biāo)記則顯示為html頁面
String content = "mail test!!!!!!<br><a href=#>aaa</a>";
//所包含的附件,及附件的重新命名
String fileNames[] = {"F:\\music\\text1.txt,text1.txt","F:\\music\\text2.txt,text2.txt"};
try {
// MailSender mailsender = new MailSender();
sendmail(title, from, sendTo, content, fileNames,"text/html;charset=gb2312");
} catch (Exception ex) { ex.printStackTrace(); }
}
public static void sendmail(String subject, String from, String[] to, String text, String[] filenames,String mimeType) throws Exception
{
//ResourceBundle mailProps = ResourceBundle.getBundle("mail"); 可以從配置文件讀取相應(yīng)的參數(shù)
Properties props = new Properties();
String smtp = "smtp.163.com"; //設(shè)置發(fā)送郵件所用到的smtp
String servername = "sir_znp";
String serverpaswd = "123";
javax.mail.Session mailSession; //郵件會(huì)話對(duì)象
javax.mail.internet.MimeMessage mimeMsg; //MIME郵件對(duì)象
props = java.lang.System.getProperties(); //獲得系統(tǒng)屬性對(duì)象
props.put("mail.smtp.host", smtp); //設(shè)置SMTP主機(jī)
props.put("mail.smtp.auth", "true"); //是否到服務(wù)器用戶名和密碼驗(yàn)證
//到服務(wù)器驗(yàn)證發(fā)送的用戶名和密碼是否正確
Email_Autherticatorbean myEmailAuther = new Email_Autherticatorbean(servername, serverpaswd);
//設(shè)置郵件會(huì)話
mailSession = javax.mail.Session.getInstance(props, (Authenticator) myEmailAuther);
//設(shè)置傳輸協(xié)議
javax.mail.Transport transport = mailSession.getTransport("smtp");
//設(shè)置from、to等信息
mimeMsg = new javax.mail.internet.MimeMessage(mailSession);
if (!StringUtils.isEmpty(from))
{
InternetAddress sentFrom = new InternetAddress(from);
mimeMsg.setFrom(sentFrom); //設(shè)置發(fā)送人地址
}
InternetAddress[] sendTo = new InternetAddress[to.length];
for (int i = 0; i < to.length; i++)
{
System.out.println("發(fā)送到:" + to[i]);
sendTo[i] = new InternetAddress(to[i]);
}
mimeMsg.setRecipients(javax.mail.internet.MimeMessage.RecipientType.TO, sendTo);
mimeMsg.setSubject(subject, "gb2312");
MimeBodyPart messageBodyPart1 = new MimeBodyPart();
//messageBodyPart.setText(UnicodeToChinese(text));
messageBodyPart1.setContent(text, mimeType);
Multipart multipart = new MimeMultipart();//附件傳輸格式
multipart.addBodyPart(messageBodyPart1);
for (int i = 0; i < filenames.length; i++) {
MimeBodyPart messageBodyPart2 = new MimeBodyPart();
//選擇出每一個(gè)附件名
String filename = filenames[i].split(",")[0];
System.out.println("附件名:" + filename);
String displayname = filenames[i].split(",")[1];
//得到數(shù)據(jù)源
FileDataSource fds = new FileDataSource(filename);
//得到附件本身并至入BodyPart
messageBodyPart2.setDataHandler(new DataHandler(fds));
//得到文件名同樣至入BodyPart
//messageBodyPart2.setFileName(displayname);
// messageBodyPart2.setFileName(fds.getName());
messageBodyPart2.setFileName(MimeUtility.encodeText(displayname));
multipart.addBodyPart(messageBodyPart2);
}
mimeMsg.setContent(multipart);
//設(shè)置信件頭的發(fā)送日期
mimeMsg.setSentDate(new Date());
mimeMsg.saveChanges();
//發(fā)送郵件
transport.send(mimeMsg);
transport.close();
}
}
驗(yàn)證類
package common.util;
import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication;
public class Email_Autherticatorbean extends Authenticator
{
private String m_username = null;
private String m_userpass = null;
public void setUsername(String username)
{
m_username = username;
}
public void setUserpass(String userpass)
{
m_userpass = userpass;
}
public Email_Autherticatorbean(String username, String userpass)
{
super();
setUsername(username);
setUserpass(userpass);
}
public PasswordAuthentication getPasswordAuthentication()
{
return new PasswordAuthentication(m_username,m_userpass);
}
}
- JavaMail實(shí)現(xiàn)簡單郵件發(fā)送
- 基于JavaMail實(shí)現(xiàn)簡單郵件發(fā)送
- 基于JavaMail的Java郵件發(fā)送
- JavaMail郵件發(fā)送機(jī)制詳解
- 基于JavaMail實(shí)現(xiàn)郵件發(fā)送
- 基于JavaMail的Java實(shí)現(xiàn)復(fù)雜郵件發(fā)送功能
- 基于JavaMail的Java實(shí)現(xiàn)簡單郵件發(fā)送功能
- JavaMail實(shí)現(xiàn)郵件發(fā)送的方法
- Java HtmlEmail 郵件發(fā)送的簡單實(shí)現(xiàn)代碼
- JavaMail整合Spring實(shí)現(xiàn)郵件發(fā)送功能
相關(guān)文章
Mybatis框架之代理模式(Proxy Pattern)的實(shí)現(xiàn)
本文主要介紹了MyBatis框架中使用代理模式ProxyPattern的原理和實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-11-11
Java8新特性O(shè)ptional類及新時(shí)間日期API示例詳解
這篇文章主要為大家介紹了Java8新特性O(shè)ptional類及新時(shí)間日期API示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11
Java判斷List中相同值元素的個(gè)數(shù)實(shí)例
今天小編就為大家分享一篇Java判斷List中相同值元素的個(gè)數(shù)實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-07-07
Spring配置文件解析之BeanDefinitionParserDelegate詳解
這篇文章主要介紹了Spring配置文件解析之BeanDefinitionParserDelegate詳解,對(duì)于Spring的配置文件的解析處理操作是在BeanDefinitionParserDelegate中進(jìn)行處理操作,接下來我們簡單介紹一下BeanDefinitionParserDelegate所做的處理操作,需要的朋友可以參考下2024-02-02
基于Java創(chuàng)建一個(gè)訂單類代碼實(shí)例
這篇文章主要介紹了基于Java創(chuàng)建一個(gè)訂單類代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-12-12
Java實(shí)現(xiàn)計(jì)網(wǎng)循環(huán)冗余檢驗(yàn)算法的方法示例
這篇文章主要給大家介紹了關(guān)于Java實(shí)現(xiàn)計(jì)網(wǎng)循環(huán)冗余檢驗(yàn)算法的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04
springmvc+Hibernate+JPA(混合事務(wù))解讀
在Spring項(xiàng)目中,Spring Data JPA作為一種持久層框架,因其簡化數(shù)據(jù)庫操作而受到青睞,但在將其引入使用Hibernate的舊項(xiàng)目時(shí),可能會(huì)遇到事務(wù)處理問題,解決方案包括配置兩種事務(wù)管理器:Hibernate事務(wù)管理器和JPA事務(wù)管理器2024-09-09
Spring+SpringMVC+MyBatis整合實(shí)戰(zhàn)(SSM框架)
框架整合難不難?難!東西多,配置文件復(fù)雜不好記憶,本文就來介紹一下Spring+SpringMVC+MyBatis整合實(shí)戰(zhàn),具有一定的參考價(jià)值,感興趣的可以了解一下2021-08-08
java Gui實(shí)現(xiàn)肯德基點(diǎn)餐收銀系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了java Gui實(shí)現(xiàn)肯德基點(diǎn)餐收銀系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-01-01

