程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> JavaMail和James的機密花園

JavaMail和James的機密花園

編輯:關於JAVA

JavaMail和James的機密花園。本站提示廣大學習愛好者:(JavaMail和James的機密花園)文章只能為提供參考,不一定能成為您想要的結果。以下是JavaMail和James的機密花園正文


JavaMail,望文生義,提供應開發者處置電子郵件相關的編程接口。它是Sun發布的用來處置email的API。它可以方便地執行一些常用的郵件傳輸。我們可以基於JavaMail開收回相似於Microsoft Outlook的使用順序。

JavaMail包中用於處置電子郵件的中心類是:Session,Message,Address,Authenticator,Store,Transport, Folder等。Session定義了一個根本的郵件會話,它需求從Properties中讀取相似於郵件服務器,用戶名和密碼等信息。不過JDK中並沒有包括,運用JavaMail發送郵件需求運用Sun發布的mail.jar和activtion.jar兩個包。

郵件協議:

SMTP協議:Simple Mail Transfer Protocol,即復雜郵件傳輸協議,用於發送電子郵件

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

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


JavaMail發郵件的流程:

  1.搭建James郵件服務器

  2.裝置OutLook[郵件客戶端]

  3.配置outLook郵件客戶端

  4.搭建James郵件服務器


 

1.搭建james郵件服務器

   james是apache的一個開源項目,純java完成。

  首先我們需求下載apache-james-2.3.2.zip(批:http://pan.baidu.com/s/1pJoyg7h)

  其次運轉bin目錄下的run.bat即可啟動服務器

  然後運轉cmd命令[Telnet  localhost 4555]

  最後經過apps\james\SAR-INF\config.xml配置服務器(修正節點)

2.裝置OutLook[郵件客戶端],3.配置outLook郵件客戶端

  輸出產品秘鑰(可選,測試的話,不用輸出)

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

  創立用戶賬號,依據Telnet  localhost 4555,停止銜接,

  用戶名和密碼默許為root

  進入help,停止添加賬戶(adduser)

    按要求裝置,下一步即可,留意上面這個:

hosts文件:

裝置完成,停止測試:

4.搭建James郵件服務器

  

最後運用JavaMail發送郵件:

需求:賬戶收到由javaMail所發送的義務,以及附件信息。

中心代碼:

創立一個類EmailAuthenticator並承繼自Authenticator,並植入用戶名和密碼

創立Mail類(設置郵件信息):

public class Mail {
  private String mailServer,from,to,mailSubject,mailContent;
  private String username,password;
  public Mail(){
      //設置郵件信息
      //停止認證登錄的用戶名
      username="[email protected]";
      //認證密碼
      password="hq";
      //認證的郵箱對應的郵件服務器
      mailServer="192.168.17.176";
      //發件人信息
      from="wj";
      //收件人信息
      to="[email protected]";
      //郵件標題
      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("[email protected]");
        helper.setTo("[email protected]");
         
        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:

 

 


內在壓力添加時,就應加強內在的動力。

         --- 勸誡自己

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved