Java發(fā)送郵件javax.mail的實(shí)現(xiàn)方法
直接上源碼:
1. 郵件的基本信息(方便就直接設(shè)置為靜態(tài)了)
下面最好是做為一個(gè)javabean
package com.lgf.Email;
import java.util.Date;
public class EmailMessage
{
/**
* 郵件的信息,可以自己進(jìn)行設(shè)置。
* 為了方便直接全部設(shè)置為靜態(tài)
*/
// 收件人郵箱
public static String TO = "xxx@xxx.com";
// 發(fā)件人郵箱
public static String FROM = "xxx@xxx.com";
public static String FROM_NAME = "xxx";
// 抄送人
public static String CC="xxx@nxxx.com";
// 暗送人
public static String BCC="xxx@nxxx.com";
// 郵件的類型
public static String Email_Content = "text/plain";
// 郵件標(biāo)題
public static String Email_Subject = "Test Email With JavaMail";
// 郵件頭
public static String Email_Header = "This Is Email Header";
// 內(nèi)容
public static String Email_Body = "<a href=\"http://www.baidu.com\">This Is Email Body</a>";
// 服務(wù)器 比如QQ的可以設(shè)置為smtp.qq.com
public static String Email_Host = "smtp.xxx.com";
// 發(fā)送時(shí)間
public static Date sendDate = new Date();
// 是否需要驗(yàn)證用戶名和密碼
public static boolean validate = true;
}
2. 服務(wù)器驗(yàn)證(就是一般登入時(shí)候的用戶名和密碼)
package com.lgf.Email;
import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication;
/**
* 用戶名和密碼的驗(yàn)證
* @author lgf
*
*/
public class MailAuthenticator extends Authenticator{
private String username="xxxxx";
private String password="xxxxx";
public MailAuthenticator() {
super();
}
/**
* 設(shè)置驗(yàn)證的用戶名和密碼
*/
public MailAuthenticator(String userName , String password) {
super();
this.username = userName;
this.password = password;
}
protected PasswordAuthentication getPasswordAuthentication()
{
return new PasswordAuthentication(this.username,this.password);
}
}
3. 發(fā)送郵件前設(shè)置信息和步驟
package com.lgf.Email;
import java.util.Properties;
import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.mail.Address;
import javax.mail.Authenticator;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import com.lgf.SendEmail.MailAuthenticator;
public class SendEmail
{
/**
* 發(fā)送普通郵件
* @throws Exception
*/
public void doSendNormalMail()
{
// 獲取系統(tǒng)環(huán)境
Properties prop = new Properties();
Authenticator auth = null;
// 判斷發(fā)送郵件是否需要驗(yàn)證
if (EmailMessage.validate)
{
// 郵件服務(wù)器認(rèn)證 用戶名和密碼
auth = new MailAuthenticator();
}
// 添加必要的信息
prop.put("mail.smtp.host", EmailMessage.Email_Host);
prop.put("mail.smtp.auth", "true");
// 設(shè)置對話和郵件服務(wù)器進(jìn)行通訊
Session session = Session.getDefaultInstance(prop, auth);
// 在控制臺(tái)顯示Debug信息
session.setDebug(true);
// 設(shè)置郵件對象
Message message = new MimeMessage(session);
try
{
// 設(shè)置郵件主題
message.setSubject(EmailMessage.Email_Subject);
// 設(shè)置郵件標(biāo)題
message.setHeader("Header", EmailMessage.Email_Header);
// 設(shè)置發(fā)送時(shí)間
message.setSentDate(EmailMessage.sendDate);
// 設(shè)置發(fā)信人地址 和 名字
Address address = new InternetAddress(EmailMessage.FROM, EmailMessage.FROM_NAME);
// 把發(fā)件人信息添加到信息中
message.setFrom(address);
// 設(shè)置發(fā)件人地址
Address toAddress = new InternetAddress(EmailMessage.TO);
// 設(shè)置接收人地址
message.setRecipient(Message.RecipientType.TO, toAddress);
// 設(shè)置多個(gè)收件人地址
// message.addRecipient(Message.RecipientType.TO,new InternetAddress("xxx@xxx.com"));
// 設(shè)置郵件格式
message.setContent("Content", EmailMessage.Email_Content);
// 設(shè)置郵件內(nèi)容 必須在設(shè)置文件格式后面
message.setText(EmailMessage.Email_Body);
// 保存上面添加的信息
message.saveChanges();
// 發(fā)送郵件
System.out.println("sendNormalEmail() 開始發(fā)送郵件……");
Transport.send(message);
System.out.println("發(fā)送成功!");
} catch (Exception e)
{
System.out.println("出錯(cuò)");
e.printStackTrace();
}
}
/**
* 發(fā)送HTML格式的郵件
*/
public void doSendHtmlMail()
{
// 獲取系統(tǒng)環(huán)境
Properties prop = new Properties();
Authenticator auth = null;
if (EmailMessage.validate)
{
// 郵件服務(wù)器認(rèn)證 用戶名和密碼
auth = new MailAuthenticator();
}
// 添加必要的信息
prop.put("mail.smtp.host", EmailMessage.Email_Host);
prop.put("mail.smtp.auth", "true");
// 設(shè)置對話和郵件服務(wù)器進(jìn)行通訊
Session session = Session.getDefaultInstance(prop, auth);
// 設(shè)置郵件對象
Message message = new MimeMessage(session);
try
{
// 設(shè)置郵件主題
message.setSubject(EmailMessage.Email_Subject);
// 設(shè)置郵件標(biāo)題
message.setHeader("Header", EmailMessage.Email_Header);
// 設(shè)置發(fā)送時(shí)間
message.setSentDate(EmailMessage.sendDate);
// 設(shè)置發(fā)信人地址 和 名字
Address address = new InternetAddress(EmailMessage.FROM, EmailMessage.FROM_NAME);
// 把發(fā)件人信息添加到信息中
message.setFrom(address);
// 設(shè)置發(fā)件人地址
Address toAddress = new InternetAddress(EmailMessage.TO);
// 設(shè)置接收人地址
message.setRecipient(Message.RecipientType.TO, toAddress);
// 設(shè)置多個(gè)收件人地址
// message.addRecipient(Message.RecipientType.TO,new InternetAddress("xxx@xxx.com"));
// 設(shè)置發(fā)送信息的內(nèi)容 下面為發(fā)送hmml
// 設(shè)置郵件格式
EmailMessage.Email_Content = "text/html; charset=utf-8";
message.setContent(EmailMessage.Email_Body, EmailMessage.Email_Content);
// 保存上面添加的信息
message.saveChanges();
// 發(fā)送郵件
System.out.println("doSendHtmlMail() 開始發(fā)送郵件……");
Transport.send(message);
System.out.println("發(fā)送成功!");
} catch (Exception e)
{
System.out.println("出錯(cuò)");
e.printStackTrace();
}
}
/**
* 發(fā)送帶有附件格式的郵件
*/
public void doSendAttachmentMail()
{
// 獲取系統(tǒng)環(huán)境
Properties prop = new Properties();
Authenticator auth = null;
if (EmailMessage.validate)
{
// 郵件服務(wù)器認(rèn)證 用戶名和密碼
auth = new MailAuthenticator();
}
// 添加必要的信息
prop.put("mail.smtp.host", EmailMessage.Email_Host);
prop.put("mail.smtp.auth", "true");
// 設(shè)置對話和郵件服務(wù)器進(jìn)行通訊
Session session = Session.getDefaultInstance(prop, auth);
// 設(shè)置郵件對象
Message message = new MimeMessage(session);
try
{
// 設(shè)置郵件主題
message.setSubject(EmailMessage.Email_Subject);
// 設(shè)置郵件標(biāo)題
message.setHeader("Header", EmailMessage.Email_Header);
// 設(shè)置發(fā)送時(shí)間
message.setSentDate(EmailMessage.sendDate);
// 設(shè)置發(fā)信人地址 和 名字
Address address = new InternetAddress(EmailMessage.FROM, EmailMessage.FROM_NAME);
// 把發(fā)件人信息添加到信息中
message.setFrom(address);
// 設(shè)置發(fā)件人地址
Address toAddress = new InternetAddress(EmailMessage.TO);
// 設(shè)置接收人地址
message.setRecipient(Message.RecipientType.TO, toAddress);
// 設(shè)置多個(gè)收件人地址
// message.addRecipient(Message.RecipientType.TO,new InternetAddress("xxx@xxx.com"));
// 設(shè)置發(fā)送信息的內(nèi)容 下面為發(fā)送附件
message.setContent(EmailMessage.Email_Body, EmailMessage.Email_Content);
BodyPart messageBodyPart = new MimeBodyPart();
messageBodyPart.setText("bodypart");
Multipart multipart = new MimeMultipart();
multipart.addBodyPart(messageBodyPart);
messageBodyPart = new MimeBodyPart();
// 設(shè)置上傳的資源
DataSource source = new FileDataSource("E:\\3.doc");
// 添加到
messageBodyPart.setDataHandler(new DataHandler(source));
// 設(shè)置文件名稱,記得后綴名
messageBodyPart.setFileName("test.doc");
multipart.addBodyPart(messageBodyPart);
message.setContent(multipart);
// 保存上面添加的信息
message.saveChanges();
// 發(fā)送郵件
System.out.println("doSendAttachmentMail() 開始發(fā)送郵件……");
Transport.send(message);
System.out.println("發(fā)送成功!");
} catch (Exception e)
{
System.out.println("出錯(cuò)");
e.printStackTrace();
}
}
/**
* @param args
*/
public static void main(String[] args)
{
// new SendEmail().doSendNormalMail();
// new SendEmail().doSendHtmlMail();
new SendEmail().doSendAttachmentMail();
}
}
以上就是Java發(fā)送郵件javax.mail的詳細(xì)代碼,希望對大家實(shí)現(xiàn)java郵件發(fā)送有所幫助。
相關(guān)文章
5分鐘快速搭建SpringBoot3?+?MyBatis-Plus工程/項(xiàng)目的實(shí)現(xiàn)示例
本文主要介紹了使用IntelliJ?IDEA創(chuàng)建Spring?Boot工程,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2025-01-01
并行Stream與Spring事務(wù)相遇會(huì)發(fā)生什么?
這篇文章主要介紹了并行Stream與Spring事務(wù)相遇會(huì)發(fā)生什么?文章主要解決實(shí)戰(zhàn)中的Bug及解決方案和技術(shù)延伸,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-05-05
AsyncHttpClient的TimeoutTimerTask連接池異步超時(shí)
這篇文章主要為大家介紹了AsyncHttpClient的TimeoutTimerTask連接池異步超時(shí)源碼流程解讀,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-12-12
解析MapStruct轉(zhuǎn)換javaBean時(shí)出現(xiàn)的詭異事件
在項(xiàng)目中用到了MapStruct,對其可以轉(zhuǎn)換JavaBean特別好奇,今天小編給大家分享一個(gè)demo給大家講解MapStruct轉(zhuǎn)換javaBean時(shí)出現(xiàn)的詭異事件,感興趣的朋友一起看看吧2021-09-09

