HelloWorld 善戰(zhàn)者,求之于勢,不責于人;故能擇人而任勢。

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

            BlogJava :: 首頁 ::  :: 聯(lián)系 ::  :: 管理 ::
            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發(fā)件人(Email地址 發(fā)件人);
          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發(fā)件人();
          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地址 發(fā)件人;
          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發(fā)件人() {
              return this.發(fā)件人;
          }

          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發(fā)件人(Email地址 發(fā)件人) {
              this.發(fā)件人 = 發(fā)件人;
          }

          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郵件發(fā)送服務(wù)器
          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郵件發(fā)送服務(wù)器 {
          protected IMail 郵件;
          protected Session session;
          protected String send方式;

          public Abstract郵件發(fā)送服務(wù)器() {
            
          }

          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 發(fā)送郵件() {
              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());

               //添加發(fā)件人
               message.setFrom(郵件.get發(fā)件人().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發(fā)送郵件建造者
          import javax.mail.Session;


          public abstract class Abstract發(fā)送郵件建造者 {
          protected Abstract郵件發(fā)送服務(wù)器 mailServer;

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

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

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

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

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

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

          import javax.mail.Session;


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

          @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>發(fā)送郵件Director
          import javax.mail.Session;

          public class 發(fā)送郵件Director {
          Abstract發(fā)送郵件建造者 build;

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

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

          <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發(fā)件人(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發(fā)送郵件建造者 smtp = new Smtp發(fā)送郵件建造者();
              Properties 屬性配置    = new Properties();
              屬性配置.put("mail.smtp.host", "smtp.163.com");
              屬性配置.put("mail.smtp.auth", "true");
              Session session = Session.getInstance(屬性配置,new PasswordAuthenticator("xxxxx", "xxxxx"));
              發(fā)送郵件Director director = new 發(fā)送郵件Director(smtp);
              director.發(fā)送郵件建造(mail, session);
          }
          }



          </script>

          posted on 2007-08-13 18:58 helloworld2008 閱讀(1232) 評論(0)  編輯  收藏 所屬分類: java - 模式java

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 永平县| 韶关市| 巨鹿县| 彭州市| 中牟县| 滨海县| 富源县| 玉环县| 都匀市| 萨迦县| 墨玉县| 金秀| 廊坊市| 太仓市| 肇州县| 峡江县| 沈阳市| 阜城县| 达尔| 古蔺县| 宜宾市| 沙坪坝区| 山东| 乡城县| 乌拉特后旗| 诸暨市| 昌江| 宁阳县| 偏关县| 自治县| 分宜县| 巴南区| 曲周县| 常德市| 察隅县| 海淀区| 秀山| 墨江| 枞阳县| 屏南县| 霍邱县|