文章出處

一、郵件的相關概念

郵件協議。主要包括:

SMTP協議:Simple Mail Transfer Protocol,即簡單郵件傳輸協議,用于發送電子郵件

POP3協議Post Office Protocol 3,即郵局協議的第三個版本,用于接收郵件

IMAP協議:Internet Message Access Protocol,即互聯網消息訪問協議,是POP3的替代協議

 


 二、搭建James郵件服務器

 JamesApache的一個開源項目,純Java實現

 搭建James服務器

 ① 下載apache-james-2.3.2.zip解壓

 ② 運行bin目錄下的run.bat即可啟動服務器[Telnet  localhost 4555]

 ③ 通過apps\james\SAR-INF\config.xml配置服務器

 注:先到binrun一道。 放如非中文目錄, 得再控制面板開啟Telnet客戶端

 


 三、安裝OutLook[郵件客戶端]

產品秘鑰:PQDV9-GPDV4-CRM4D-PHDTH-4M2MT

創建用戶賬號

一、使用telnet連接JamesRemote 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:大配置  

 

 

 

 

 

 


文章列表


不含病毒。www.avast.com
全站熱搜
創作者介紹
創作者 大師兄 的頭像
大師兄

IT工程師數位筆記本

大師兄 發表在 痞客邦 留言(0) 人氣()