熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> JSP教程 >> 正文

Javamail操作指南:實例代碼解析

2013-11-15 11:47:42  來源: JSP教程 

  怎樣才算比較完整的Javamail操作指南?我想應該包括絕大多數基本的email操作能夠應付一般的應用在本指南中主要囊括了以下內容
  
  ● 發送email包括文本郵件HTML郵件帶附件的郵件SMTP驗證
  
  ● 接收emailpop遠程連接收取不同MIME的郵件處理附件
  
  我想有了上述功能的介紹應該可以應付很多email的相關應用了首先需要配置環境需要的包是mailjar和activationjar高版本的JSDK EE自帶
  
   郵件的發送
  
  下面了弄個發郵件的Hello World熱熱身
  
  /*************
  Name:TextMailSenderjava
  Author:Bromon
  Version:
  Date:
  Note:發送email到
  需要安裝SMTP服務器
  *************/
  package orgbromonmail;
  import javaxmail*;
  import javaxmailinternet*;
  import javautil*;
  public class TextMailSender
  {
  public static void main(String args[])
  {
  try
  {
  Properties prop=new Properties();
  //指定要使用的SMTP
  服務器為bromonk
  propput(mailsmtphostbromonk);
  Session mailSession=SessiongetDefaultInstance(prop);
  
  //發件人地址
  InternetAddress from=new InternetAddress(
  bromon@bromonk);
  //收件人地址
  InternetAddress to=new InternetAddress(
  );
  
  MimeMessage msg=new MimeMessage(mailSession);
  msgsetFrom(from);
  msgaddRecipient(
  javaxmailMessageRecipientTypeTOto);
  //發信日期
  msgsetSentDate(new javautilDate());
  //title
  msgsetSubject(你好);
  //郵件正文
  msgsetText(hellobromon);
  Transportsend(msg);
  }catch(Exception e)
  {
  Systemoutprintln(e);
  }
  }
  }
  
  程序很簡單但是它是不能運行的除非你的機器上安裝了一個SMTP服務器而且你的機器還叫做bromonk寫這麼一段不能執行的程序不是因為其他一些原因而是想讓各位對javamail有個基本印象下面演示的是如何通過sohu等email服務商提供的免費郵箱來發郵件基本操作和上面的一樣只是多一個SMTP驗證而已
  
  /*
  * Created on
  */
  package orgbromonmail;
  import javaxmail*;
  import javautil*;
  import javaxmailinternet*;
  
  /**
  * @author Bromon
  */
  public class SenderWithSMTPVer
  {
  String host=;
  String user=;
  String password=;
  
  public void setHost(String host)
  {
  thishost=host;
  }
  
  public void setAccount(
  String userString password)
  {
  thisuser=user;
  thispassword=password;
  }
  
  public void send(String fromString to
  String subjectString content)
  {
  Properties props = new Properties();
  propsput(mailsmtphost host);
  //指定SMTP服務器
  propsput(mailsmtpauth true);
  //指定是否需要SMTP驗證
  try
  {
  Session mailSession = SessiongetDefaultInstance(props);
  
  mailSessionsetDebug(true);
  //是否在控制台顯示debug信息
  
  Message message=new MimeMessage(mailSession);
  messagesetFrom(new InternetAddress(from));
  //發件人
  messageaddRecipient(MessageRecipientTypeTO
  new InternetAddress(to));
  //收件人
  
  messagesetSubject(subject);
  //郵件主題
  messagesetText(content);
  //郵件內容
  messagesaveChanges();
  
  Transport transport = mailSessiongetTransport(smtp);
  nnect(host user password);
  transportsendMessage(message messagegetAllRecipients());
  transportclose();
  }catch(Exception e)
  {
  Systemoutprintln(e);
  }
  
  }
  
  public static void main(String args[])
  {
  SenderWithSMTPVer sm=new SenderWithSMTPVer();
  
  smsetHost();
  //指定要使用的郵件服務器
  smsetAccount(abc);
  //指定帳號和密碼
  
  /*
  * @param String 發件人的地址
  * @param String 收件人地址
  * @param String 郵件標題
  * @param String 郵件正文
  */
  smsend(標題內容);
  }
  
  }
  
  這段程序好像也不需要解釋了吧把SMTP地址帳號密碼等配置信息寫到Properties裡面Java裡面很多API都需要這麼干比如再程序中加入對代理服務器的支持等上面的程序修改一下服務器地址帳號密碼就可以使用非常簡單
  
  如何發送一個HTML格式的Email呢?也很簡單再郵件正文中寫入HTML代碼然後指定郵件的ContentType就OK下面只給出關鍵代碼
  
  ………
  MimeMessage msg=new MimeMessage(mailSession);
  msgsetContent(contenttext/html);
  msgsetText(<html><body><h>下面的你們好嗎?</body></html>);
  ………
  
  下面是發送帶有附件的email稍微復雜一點而且和前面的程序有一些不同請仔細一點同時需要一點IO的知識相同的代碼就不再列出只寫關鍵部分
  
  import javaxmail*;
  import javaxmailinternet*;
  import javaxactivation*;
  import javautil*;
  ………
  MimeMessage msg=
  new MimeMessage(mailSession);
  msgsetSentDate(new Date());
  msgsetSubject(hello);
  
  MimeBodyPart textBodyPart=new MimeBodyPart();
  textBodyPartsetText(郵件正文);
  
  MimeBodyPart fileBodyPart=new MimeBodyPart();
  FileDataSource fds=new FileDataSource(GISrar);
  //要發送的附件
  fileBodyPartsetDataHandler(new DataHandler(fds));
  fileBodyPartsetFileName(fdsgetName());
  Multipart container=new MimeMultipart();
  containeraddBodyPart(textBodyPart);
  containeraddBodyPart(fileBodyPart);
  msgsetContent(container);
  Transportsend(msg);
  …………
  
   郵件的收取
  
  通常情況下我們都使用pop協議來收郵件IMAP現在就不涉及了用一個程序就可以基本包括了收郵件的功能郵件大致可以分三種純文本郵件含有其他數據的文本郵件含有附件的郵件
  
  /*
  * Created on
  */
  package orgbromonmail;
  import javaxmail*;
  import javautil*;
  import javaio*;
  
  /**
  * @author Bromon
  */
  public class Receiver
  {
  Folder inbox;
  Store store;
  
  //連接郵件服務器獲得所有郵件的列表
  public Message[] getMail(
  String hostString nameString password) throws Exception
  {
  Properties prop=new Properties();
  propput(mailpophosthost);
  Session session=SessiongetDefaultInstance(prop);
  store=sessiongetStore(pop);
  nnect(hostnamepassword);
  
  inbox=storegetDefaultFolder()getFolder(INBOX);
  inboxopen(FolderREAD_ONLY);
  
  Message[] msg=inboxgetMessages();
  
  FetchProfile profile=new FetchProfile();
  profileadd(FetchProfileItemENVELOPE);
  inboxfetch(msgprofile);
  
  return(msg);
  }
  
  //處理任何一種郵件都需要的方法
  private void handle(Message msg) throws Exception
  {
  Systemoutprintln(郵件主題:+msggetSubject());
  Systemoutprintln(
  郵件作者:+msggetFrom()[]toString());
  Systemoutprintln(發送日期:+msggetSentDate());
  }
  
  //處理文本郵件
  public void handleText(Message msg) throws Exception
  {
  thishandle(msg);
  Systemoutprintln(郵件內容:+msggetContent());
  }
  
  //處理Multipart郵件包括了保存附件的功能
  public void handleMultipart(Message msg) throws Exception
  {
  String disposition;
  BodyPart part;
  
  Multipart mp=(Multipart)msggetContent();
  int mpCount=mpgetCount();
  //Miltipart的數量用於除了多個part比如多個附件
  for(int m=;m&
From:http://tw.wingwit.com/Article/program/Java/JSP/201311/19639.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.