基於java運用JavaMail發送郵件。本站提示廣大學習愛好者:(基於java運用JavaMail發送郵件)文章只能為提供參考,不一定能成為您想要的結果。以下是基於java運用JavaMail發送郵件正文
一、郵件的相關概念
郵件協議。次要包括:
SMTP協議:Simple Mail Transfer Protocol,即復雜郵件傳輸協議,用於發送電子郵件
POP3協議:Post Office Protocol 3,即郵局協議的第三個版本,用於接納郵件
IMAP協議:Internet Message Access Protocol,即互聯網音訊訪問協議,是POP3的替代協議
--------------------------------------------------------------------------------
二、搭建James郵件服務器
James是Apache的一個開源項目,純Java完成
搭建James服務器
① 下載apache-james-2.3.2.zip解壓
② 運轉bin目錄下的run.bat即可啟動服務器[Telnet localhost 4555]
③ 經過apps\james\SAR-INF\config.xml配置服務器
注:先到bin下run一道。 放如非中文目錄, 得再控制面板開啟Telnet客戶端
--------------------------------------------------------------------------------
三、裝置OutLook[郵件客戶端]
產品秘鑰:PQDV9-GPDV4-CRM4D-PHDTH-4M2MT
創立用戶賬號
一、運用telnet銜接James的Remote Administration Tool
二、以管理員身份登錄
三、運用adduser命令添加用戶
--------------------------------------------------------------------------------
四、配置outlook郵件客戶端
為了方便檢查,可以配置Microsoft Outlook郵件客戶端,保證James郵件服務器是啟動形態,啟動Microsoft Outlook.
選擇“工具”->“選項”,翻開“選項”面板。選擇“郵件設置”並點擊“電子郵件賬戶”,翻開“賬號設置”面板。在“電子郵件”選項卡下新建郵件賬戶
--------------------------------------------------------------------------------
五、案例[搭建James郵件服務器]
需求闡明:
在本機搭建James郵件服務器,自定義服務器的稱號。
創立兩個測試用戶。
在Microsoft Outlook中配置其中一個測試用戶為Outlook郵件賬戶

--------------------------------------------------------------------------------
六、運用JavaMail發送電子郵件(案例)
需求:
運用JavaMail技術,完成從A賬戶給B賬戶發送一封電子郵件,標題為“會議告訴”,郵件內容為“XX你好!請於今天下午16:00 准時到B01會議室召開技術討論會。”經過Outlook 客戶端檢查郵件順序發送的郵件能否發送成功
關鍵代碼:
創立一個類EmailAuthenticator並承繼自Authenticator,並植入用戶名和密碼

創立Mail類設置郵件信息:
public class Mail {
private String mailServer,from,to,mailSubject,mailContent;
private String username,password;
public Mail(){
//設置郵件信息
//停止認證登錄的用戶名
username="hq@mail.com";
//認證密碼
password="hq";
//認證的郵箱對應的郵件服務器
mailServer="192.168.17.176";
//發件人信息
from="wj";
//收件人信息
to="wj@mail.com";
//郵件標題
mailSubject="我們都是好孩子333";
//郵件內容
mailContent="這是一封測試郵件!如有相同,純屬不能夠";
}
//設置郵件服務器
@SuppressWarnings("static-access")
public void send(){
Properties prop=System.getProperties();
//指定郵件server
prop.put("mail.smtp.host", mailServer);
//能否開啟認證
prop.put("mail.smtp.auth", "true");
//smtp協議的
prop.put("mail.smtp.port", "25");
//發生Session服務
EmailAuthenticator mailauth=new EmailAuthenticator(username, password);
Session mailSession=Session.getInstance(prop,(Authenticator)mailauth);
try {
//封裝Message對象
Message message=new MimeMessage(mailSession);
message.setFrom(new InternetAddress(from)); //發件人
message.setRecipient(Message.RecipientType.TO, new InternetAddress(to));//收件人
message.setSubject(mailSubject);
//設置內容(設置字符集處置亂碼問題)
message.setContent(mailContent,"text/html;charset=gbk");
message.setSentDate(new Date());
//創立Transport實例,發送郵件
Transport tran=mailSession.getTransport("smtp");
tran.send(message,message.getAllRecipients());
tran.close();
} catch (Exception e) {
e.printStackTrace();
}
}
測試類:
public class MyTest {
public static void main(String[] args) {
Mail mail=new Mail();
mail.send();
System.out.println("success!");
}
}


--------------------------------------------------------------------------------
七、發送帶附件的Mail
public class MailWithAttachment {
private JavaMailSender mailSender; //必需運用 JavaMailSender
public void setMailSender(JavaMailSender mailSender) {
this.mailSender = mailSender;
}
public void send() throws MessagingException,IOException{
MimeMessage mimeMessage = mailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true, "UTF-8");
helper.setFrom("hq@mail.com");
helper.setTo("wj@mail.com");
helper.setSubject("哈哈哈");
helper.setText("每日一笑,開開心心!!!");
//添加附件1
ClassPathResource file1 = new ClassPathResource(
"/cn/bdqn/attachfiles/test.doc");
helper.addAttachment(file1.getFilename(), file1.getFile());
//添加附件2:附件的文件名為中文時,需求對文件名停止編碼轉換,處理亂碼問題
ClassPathResource file2 = new ClassPathResource(
"/cn/bdqn/attachfiles/附件測試文件.doc");
helper.addAttachment(MimeUtility.encodeWord(file2.getFilename()),file2.getFile());
mailSender.send(mimeMessage);
}
}
測試類:
public class MailTest {
public static void main(String[] args){
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
/*測試帶附件的郵件*/
try{
MailWithAttachment mailWithAttach = (MailWithAttachment)context.getBean("mailWithAttachment");
mailWithAttach.send();
}catch(Exception e){
System.out.print(e.toString());
}
}
}
applicationContext.xml:大配置



以上就是本文的全部內容,希望對大家的學習有所協助,也希望大家多多支持。