欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

基于java使用JavaMail發(fā)送郵件

 更新時間:2016年12月16日 16:34:23   作者:Fighting`  
這篇文章主要介紹了基于java使用JavaMail發(fā)送郵件 ,非常具有實(shí)用價值,需要的朋友可以參考下。

一、郵件的相關(guān)概念

郵件協(xié)議。主要包括:

SMTP協(xié)議:Simple Mail Transfer Protocol,即簡單郵件傳輸協(xié)議,用于發(fā)送電子郵件

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

IMAP協(xié)議:Internet Message Access Protocol,即互聯(lián)網(wǎng)消息訪問協(xié)議,是POP3的替代協(xié)議

--------------------------------------------------------------------------------

 二、搭建James郵件服務(wù)器

 James是Apache的一個開源項(xiàng)目,純Java實(shí)現(xiàn)

 搭建James服務(wù)器

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

 ② 運(yùn)行bin目錄下的run.bat即可啟動服務(wù)器[Telnet  localhost 4555]

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

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

--------------------------------------------------------------------------------

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

產(chǎn)品秘鑰:PQDV9-GPDV4-CRM4D-PHDTH-4M2MT

創(chuàng)建用戶賬號

一、使用telnet連接James的Remote Administration Tool

二、以管理員身份登錄

三、使用adduser命令添加用戶

--------------------------------------------------------------------------------

四、配置outlook郵件客戶端

為了方便查看,可以配置Microsoft Outlook郵件客戶端,保證James郵件服務(wù)器是啟動狀態(tài),啟動Microsoft Outlook.

選擇“工具”->“選項(xiàng)”,打開“選項(xiàng)”面板。選擇“郵件設(shè)置”并點(diǎn)擊“電子郵件賬戶”,打開“賬號設(shè)置”面板。在“電子郵件”選項(xiàng)卡下新建郵件賬戶

--------------------------------------------------------------------------------

五、案例[搭建James郵件服務(wù)器]

需求說明:

在本機(jī)搭建James郵件服務(wù)器,自定義服務(wù)器的名稱。

創(chuàng)建兩個測試用戶。

在Microsoft Outlook中配置其中一個測試用戶為Outlook郵件賬戶

--------------------------------------------------------------------------------

 六、使用JavaMail發(fā)送電子郵件(案例)

 需求:

使用JavaMail技術(shù),實(shí)現(xiàn)從A賬戶給B賬戶發(fā)送一封電子郵件,標(biāo)題為“會議通知”,郵件內(nèi)容為“XX你好!請于明天下午16:00 準(zhǔn)時到B01會議室召開技術(shù)討論會?!蓖ㄟ^Outlook 客戶端查看郵件程序發(fā)送的郵件是否發(fā)送成功

關(guān)鍵代碼:

創(chuàng)建一個類EmailAuthenticator并繼承自Authenticator,并植入用戶名和密碼

 創(chuàng)建Mail類設(shè)置郵件信息:

public class Mail {

 private String mailServer,from,to,mailSubject,mailContent;

 private String username,password;

 public Mail(){

   //設(shè)置郵件信息

   //進(jìn)行認(rèn)證登錄的用戶名

   username="hq@mail.com";

   //認(rèn)證密碼

   password="hq";

   //認(rèn)證的郵箱對應(yīng)的郵件服務(wù)器

   mailServer="192.168.17.176";

   //發(fā)件人信息

   from="wj";

   //收件人信息

   to="wj@mail.com";

   //郵件標(biāo)題

   mailSubject="我們都是好孩子333";

   //郵件內(nèi)容

   mailContent="這是一封測試郵件!如有雷同,純屬不可能";

 }

 //設(shè)置郵件服務(wù)器

 @SuppressWarnings("static-access")

public void send(){

   Properties prop=System.getProperties();

   //指定郵件server

   prop.put("mail.smtp.host", mailServer);

    

   //是否開啟認(rèn)證

   prop.put("mail.smtp.auth", "true");

    

   //smtp協(xié)議的

   prop.put("mail.smtp.port", "25");

   //產(chǎn)生Session服務(wù)

   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)); //發(fā)件人

      message.setRecipient(Message.RecipientType.TO, new InternetAddress(to));//收件人

      message.setSubject(mailSubject);

      //設(shè)置內(nèi)容(設(shè)置字符集處理亂碼問題)

      message.setContent(mailContent,"text/html;charset=gbk");

      message.setSentDate(new Date());

      //創(chuàng)建Transport實(shí)例,發(fā)送郵件

      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!");

  }
} 

--------------------------------------------------------------------------------

七、發(fā)送帶附件的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:附件的文件名為中文時,需要對文件名進(jìn)行編碼轉(zhuǎn)換,解決亂碼問題

    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:大配置  

 

 以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java 中 synchronized的用法詳解(四種用法)

    Java 中 synchronized的用法詳解(四種用法)

    Java語言的關(guān)鍵字,當(dāng)它用來修飾一個方法或者一個代碼塊的時候,能夠保證在同一時刻最多只有一個線程執(zhí)行該段代碼。本文給大家介紹java中 synchronized的用法,對本文感興趣的朋友一起看看吧
    2015-11-11
  • Java使用JCommander實(shí)現(xiàn)解析命令行參數(shù)

    Java使用JCommander實(shí)現(xiàn)解析命令行參數(shù)

    jcommander?是一個只有幾十?kb?的?Java?命令行參數(shù)解析工具,可以通過注解的方式快速實(shí)現(xiàn)命令行參數(shù)解析,本文就來和大家介紹一下JCommander是如何解析命令行參數(shù)吧
    2023-06-06
  • springboot 整合 langchain4j 實(shí)現(xiàn)簡單的問答功能

    springboot 整合 langchain4j 實(shí)現(xiàn)簡單的問答功能

    最近在學(xué)習(xí)langchain4j,本文將介紹如何使用langchain4j快速實(shí)現(xiàn)一個簡單的問答功能,結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧
    2025-04-04
  • Java打包工具jar包詳解

    Java打包工具jar包詳解

    這篇文章主要介紹了Java打包工具jar包詳解,在本例中我們引入一個叫jaxen.jar的庫,并將所有以”org.jaxen”開頭的類重命名以”org.example.jaxen”開頭,具體實(shí)例代碼跟隨小編一起看看吧
    2021-10-10
  • java中servlet實(shí)現(xiàn)登錄驗(yàn)證的方法

    java中servlet實(shí)現(xiàn)登錄驗(yàn)證的方法

    做web開發(fā),登錄驗(yàn)證是免不了的,今天學(xué)習(xí)了servlet的登錄驗(yàn)證,當(dāng)然是很簡單的,沒有使用session,request等作用域?qū)ο?,所以還是可以直接通過地址訪問網(wǎng)頁的。
    2013-05-05
  • Spring+Mybatis 實(shí)現(xiàn)aop數(shù)據(jù)庫讀寫分離與多數(shù)據(jù)庫源配置操作

    Spring+Mybatis 實(shí)現(xiàn)aop數(shù)據(jù)庫讀寫分離與多數(shù)據(jù)庫源配置操作

    這篇文章主要介紹了Spring+Mybatis 實(shí)現(xiàn)aop數(shù)據(jù)庫讀寫分離與多數(shù)據(jù)庫源配置操作,需要的朋友可以參考下
    2017-09-09
  • Java加載本地庫的方法之System.load與System.loadLibrary

    Java加載本地庫的方法之System.load與System.loadLibrary

    最近在做的工作要用到本地方法,所以下面這篇文章主要介紹了Java加載本地庫的方法之System.load與System.loadLibrary的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-09-09
  • java截取網(wǎng)頁圖片的方法

    java截取網(wǎng)頁圖片的方法

    這篇文章主要介紹了java截取網(wǎng)頁圖片的方法,涉及java調(diào)用第三方控件實(shí)現(xiàn)截圖的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-07-07
  • Java實(shí)現(xiàn)轉(zhuǎn)換圖片格式的示例代碼

    Java實(shí)現(xiàn)轉(zhuǎn)換圖片格式的示例代碼

    在日常的軟件開發(fā)中,處理圖像文件是一項(xiàng)常見任務(wù),這篇文章將實(shí)現(xiàn)實(shí)現(xiàn)一個簡單的Java程序,用于將一種圖片格式轉(zhuǎn)換為另一種格式,需要的可以了解下
    2025-02-02
  • 深入理解happens-before和as-if-serial語義

    深入理解happens-before和as-if-serial語義

    本文大部分整理自《Java并發(fā)編程的藝術(shù)》,溫故而知新,加深對基礎(chǔ)的理解程度。下面可以和小編來一起學(xué)習(xí)下
    2019-05-05

最新評論