HelloWorld 善戰者,求之于勢,不責于人;故能擇人而任勢。

          知止而后有定,定而后能靜,靜而后能安,安而后能慮,慮而后能得。物有本末,事有終始。知所先后,則近道矣。

            BlogJava :: 首頁 ::  :: 聯系 ::  :: 管理 ::
            167 隨筆 :: 1 文章 :: 40 評論 :: 0 Trackbacks

          <1>IMail 接口

          import java.io.File;
          import java.util.Date;
          import java.util.List;

          import javax.mail.BodyPart;

          public interface IMail {
          public void set主題(String 主題);
          public void setText(String Text);
          public void setCotnent(BodyPart content);
          public void set發件人(Email地址 發件人);
          public void set收件人(List<Email地址> 收件人);
          public void set抄送人(List<Email地址> 抄送人);
          public void set暗送人(List<Email地址> 暗送人);
          public void set郵件時間(Date time);
          public void set附件(List<File> files);
          public Email地址 get發件人();
          public List<Email地址> get收件人();
          public List<Email地址> get抄送人();
          public List<Email地址> get暗送人();
          public List<File> get附件();
          public Date get郵件時間();
          public String get主題();
          public String getText();
          public BodyPart getContent();
          }

          <2>Mail類
          import java.io.File;
          import java.util.Date;
          import java.util.List;

          import javax.mail.BodyPart;

          public class Mail implements IMail{
          private Email地址 發件人;
          private String 主題;
          private String text;
          private BodyPart content;
          private List<Email地址> 抄送人;
          private List<Email地址> 收件人;
          private List<Email地址> 暗送人;
          private Date 郵件時間 ;
          private List<File> 附件;

          public Email地址 get發件人() {
              return this.發件人;
          }

          public List<Email地址> get抄送人() {
              return this.抄送人;
          }

          public List<Email地址> get收件人() {
              return this.收件人;
          }

          public List<Email地址> get暗送人() {
              return this.暗送人;
          }

          public Date get郵件時間() {
              return this.郵件時間;
          }

          public List<File> get附件() {
              return this.附件;
          }

          public void set發件人(Email地址 發件人) {
              this.發件人 = 發件人;
          }

          public void set抄送人(List<Email地址> 抄送人) {
              this.抄送人 = 抄送人;
          }

          public void set收件人(List<Email地址> 收件人) {
              this.收件人 = 收件人;
          }

          public void set暗送人(List<Email地址> 暗送人) {
              this.暗送人 = 暗送人;
          }

          public void set郵件時間(Date time) {
              this.郵件時間 = time;
          }

          public void set附件(List<File> files) {
              this.附件 = files;
          }

          public BodyPart getContent() {
              return this.content;
          }

          public String getText() {
              return this.text;
          }

          public String get主題() {
              return this.主題;
          }

          public void setCotnent(BodyPart content) {
              this.content = content;
          }

          public void setText(String text) {
              this.text = text;
          }

          public void set主題(String 主題) {
              this.主題 = 主題;
          }
          }

          <3>Abstract郵件發送服務器
          import java.io.File;
          import java.util.Date;
          import java.util.List;

          import javax.activation.DataHandler;
          import javax.activation.DataSource;
          import javax.activation.FileDataSource;
          import javax.mail.BodyPart;
          import javax.mail.Message;
          import javax.mail.Multipart;
          import javax.mail.Session;
          import javax.mail.internet.InternetAddress;
          import javax.mail.internet.MimeBodyPart;
          import javax.mail.internet.MimeMessage;
          import javax.mail.internet.MimeMultipart;
          import javax.mail.internet.MimeUtility;

          public abstract class Abstract郵件發送服務器 {
          protected IMail 郵件;
          protected Session session;
          protected String send方式;

          public Abstract郵件發送服務器() {
            
          }

          protected InternetAddress[] getAddressByType(List<Email地址> list) throws Exception {
              if (list != null) {
               InternetAddress address[] = new InternetAddress[list.size()];
               for (int i = 0 ; i < list.size(); i++) {
                address[i] = list.get(i).toInternetAddress();
               }
               return address;
              }
              return null;
          }
          public void 發送郵件() {
              try {
               MimeMessage message = new MimeMessage(session);
               Multipart multipart = new MimeMultipart();
               message.setSubject(郵件.get主題(),"utf-8");
               if(郵件.getText() != null)
                message.setText(郵件.getText(),"utf-8");
               message.setSentDate(郵件.get郵件時間()==null?new Date():this.郵件.get郵件時間());
               multipart.addBodyPart(this.郵件.getContent());

               //添加發件人
               message.setFrom(郵件.get發件人().toInternetAddress());
             
               //添加收件人
               InternetAddress address[] = this.getAddressByType(this.郵件.get收件人());
               if (address != null)
                message.addRecipients(Message.RecipientType.TO,address);
               //添加抄送人
               address = this.getAddressByType(this.郵件.get抄送人());
               if (address != null)
                message.addRecipients(Message.RecipientType.CC,address);
               //添加暗送人
               address = this.getAddressByType(this.郵件.get暗送人());
               if (address != null)
                message.addRecipients(Message.RecipientType.BCC,address);
               //添加附件
               if (this.郵件.get附件() != null) {
                for (int i = 0; i < this.郵件.get附件().size(); i++) {
                 File file = this.郵件.get附件().get(i);
                 BodyPart messageBodyPart = new MimeBodyPart();  
                 DataSource source = new FileDataSource(file);
                 messageBodyPart.setDataHandler(new DataHandler(source));
                 messageBodyPart.setFileName(MimeUtility.encodeWord(file.getName(),"UTF-8","Q"));
                 multipart.addBodyPart(messageBodyPart);     
                }
               }
               message.setContent(multipart);
               if(send方式 == null)
                send方式 = "smtp";
               session.getTransport(send方式).send(message);
              } catch (Exception e) {
               e.printStackTrace();
              }
          }

          public Session    getSession() {
              return session;
          }
          public void setSession(Session session) {
              this.session = session;
          }
          public IMail get郵件() {
              return 郵件;
          }
          public void set郵件(IMail 郵件) {
              this.郵件 = 郵件;
          }

          }

          <4>Abstract發送郵件建造者
          import javax.mail.Session;


          public abstract class Abstract發送郵件建造者 {
          protected Abstract郵件發送服務器 mailServer;

          public Abstract發送郵件建造者() {
            
          }

          public abstract void 建造郵件(IMail mail);

          public abstract void 建造郵件session(Session session);

          public void 建造發送郵件() {
              this.mailServer.發送郵件();
          }
          }

          <5>Smtp郵件發送服務器
          public class Smtp郵件發送服務器 extends Abstract郵件發送服務器 {
          public Smtp郵件發送服務器() {
              this.send方式 = "smtp";
          }
          }

          <6>Smtp發送郵件建造者
          import java.util.Properties;

          import javax.mail.Session;


          public class Smtp發送郵件建造者 extends Abstract發送郵件建造者 {
          public Smtp發送郵件建造者() {
              this.mailServer = new Smtp郵件發送服務器();
          }

          @Override
          public void 建造郵件(IMail mail) {
              this.mailServer.set郵件(mail);  
          }

          @Override
          public void 建造郵件session(Session session) {
              this.mailServer.setSession(session);  
          }
          }

          <7>PasswordAuthenticator
          import javax.mail.Authenticator;
          import javax.mail.PasswordAuthentication;

          class PasswordAuthenticator extends Authenticator {

                private String username;
                private String password;

                public PasswordAuthenticator(String username, String password) {
                    this.username = username;
                    this.password = password;
                }

                protected PasswordAuthentication getPasswordAuthentication() {
                    return new PasswordAuthentication(username, password);
                }

          }

          <8>Email地址
          import javax.mail.internet.InternetAddress;
          import javax.mail.internet.MimeUtility;

          public class Email地址 {
          protected String 地址;

          protected String 地址顯示別名;

          public Email地址() {
            
          }

          public Email地址(String 地址, String 地址顯示別名){
              this.地址 = 地址;
              this.地址顯示別名 = 地址顯示別名;
          }

          public String get地址() {
              return 地址;
          }

          public void set地址(String 地址) {
              this.地址 = 地址;
          }

          public String get地址顯示別名() {
              return 地址顯示別名;
          }

          public void set地址顯示別名(String 地址顯示別名) {
              this.地址顯示別名 = 地址顯示別名;
          }

          public InternetAddress toInternetAddress() throws Exception {
              if (地址顯示別名 != null && !地址顯示別名.trim().equals("")) {
               return new InternetAddress(地址, MimeUtility.encodeWord(地址顯示別名,
                 "utf-8", "Q"));
              }
              return new InternetAddress(地址);
          }
          }

          <9>發送郵件Director
          import javax.mail.Session;

          public class 發送郵件Director {
          Abstract發送郵件建造者 build;

          public 發送郵件Director(Abstract發送郵件建造者 build) {
              this.build = build;
          }

          public void 發送郵件建造(IMail mail, Session session) {
              this.build.建造郵件(mail);
              this.build.建造郵件session(session);
              this.build.建造發送郵件();
          }
          }

          <10>Client
          import java.io.File;
          import java.util.ArrayList;
          import java.util.List;
          import java.util.Properties;

          import javax.mail.BodyPart;
          import javax.mail.Session;
          import javax.mail.internet.MimeBodyPart;

          public class Client {
          public static void main(String args[]) throws Exception {
              IMail mail = new Mail();
              mail.set主題("????");
              mail.set發件人(new Email地址("james_zhao_abm@163.com","趙成明"));
              List<Email地址> list = new ArrayList<Email地址>();
              list.add(new Email地址("jszhaochengming@hotmail.com","劉德華"));
              mail.set收件人(list);
              list    = new ArrayList<Email地址>();
              list.add(new Email地址("james_zhao_abm@163.com","純凈水"));
              list.add(new Email地址("jszhaochengming@hotmail.com","劉德華"));
              mail.set抄送人(list);
              BodyPart contentPart = new MimeBodyPart();
              contentPart.setHeader("Content-Transfer-Encoding",     "base64");   
              contentPart.setContent("測試喲見呵呵","text/html;charset=utf-8");
              mail.setCotnent(contentPart);
              List<File> listF = new ArrayList<File>();
              listF.add(new File("d:/??????2.rar"));
              mail.set附件(listF);
              Smtp發送郵件建造者 smtp = new Smtp發送郵件建造者();
              Properties 屬性配置    = new Properties();
              屬性配置.put("mail.smtp.host", "smtp.163.com");
              屬性配置.put("mail.smtp.auth", "true");
              Session session = Session.getInstance(屬性配置,new PasswordAuthenticator("xxxxx", "xxxxx"));
              發送郵件Director director = new 發送郵件Director(smtp);
              director.發送郵件建造(mail, session);
          }
          }



          </script>

          posted on 2007-08-13 18:58 helloworld2008 閱讀(1224) 評論(0)  編輯  收藏 所屬分類: java - 模式java
          主站蜘蛛池模板: 景德镇市| 张掖市| 璧山县| 温州市| 山西省| 隆德县| 东乡| 阿荣旗| 曲阳县| 含山县| 革吉县| 都匀市| 新乡市| 固始县| 鸡西市| 蓝田县| 小金县| 广饶县| 岚皋县| 桑植县| 桐乡市| 红河县| 通榆县| 大英县| 高淳县| 广州市| 图木舒克市| 大冶市| 若尔盖县| 阿尔山市| 青岛市| 东莞市| 绥芬河市| 红河县| 八宿县| 旬阳县| 洞口县| 广安市| 新建县| 定远县| 牙克石市|