Dust Of Dream

          知識真的是一個圓么?

          JMail 簡單應用-文件傳輸

              日常工作中,常常要將在公司做的東西拷回家,或者要從家里拷東西到公司,但是如果用U盤拷又太麻煩,上web發郵件又有點煩,所以就做了下面的小程序,發送前切版里的內容到指定郵箱來傳遞文件.
              相關技術點:
              1.JMail郵件發送
              2.剪切板提取
             具體代碼實現如下:
          /*
           * Created on 2008-3-5
           
          */
          package org.dueam.ft;

          import java.awt.HeadlessException;
          import java.awt.Toolkit;
          import java.awt.datatransfer.DataFlavor;
          import java.awt.datatransfer.UnsupportedFlavorException;
          import java.io.File;
          import java.io.IOException;
          import java.text.SimpleDateFormat;
          import java.util.Date;
          import java.util.List;

          import org.apache.commons.mail.EmailAttachment;
          import org.apache.commons.mail.EmailException;
          import org.apache.commons.mail.MultiPartEmail;

          import sun.misc.BASE64Encoder;

          /**
           * 剪切板內容發生
           * 
          @author <a href="mailto:windonly@gmail.com">Anemone</a>
           * hz,zj,china(2008-3-5)
           
          */
          public class ClipboardFileTransmission {

              
          /**
               * 
          @param args
               * 
          @throws EmailException
               * 
          @throws IOException
               * 
          @throws UnsupportedFlavorException
               * 
          @throws HeadlessException
               
          */
              @SuppressWarnings(
          "unchecked")
              
          public static void main(String[] args) throws EmailException, HeadlessException, UnsupportedFlavorException,
                      IOException {
                  String context 
          = null;
                  List
          <File> fileList = null;
                  
          /**
                   * 處理前切版
                   
          */
                  
          for (DataFlavor df : Toolkit.getDefaultToolkit().getSystemClipboard().getAvailableDataFlavors()) {
                      
          //如果拷貝的是文本內容
                      if (df.equals(DataFlavor.stringFlavor)) {
                          context 
          = (String) Toolkit.getDefaultToolkit().getSystemClipboard().getData(DataFlavor.stringFlavor);
                      }
                      
          else if (df.equals(DataFlavor.javaFileListFlavor)) {
                          
          //如果拷貝的是文件則當附件發送
                          fileList = (List<File>) Toolkit.getDefaultToolkit().getSystemClipboard().getData(
                                  DataFlavor.javaFileListFlavor);
                      }
                  }
                  
          if ((null == context || "".equals(context)) && (fileList == null || fileList.isEmpty())) {
                      
          return;
                  }
                  
          if (null == context || "".equals(context)) {
                      context 
          = "具體資料請看附件";
                  }

                  MultiPartEmail email 
          = new MultiPartEmail();
                  
                  
          // 發送服務器
                  email.setHostName("smtp.163.com");
                  
          //服務器用戶和密碼(如果你自己搞了臺不用驗證的郵件服務器就不用了)
                  email.setAuthentication("XXX""XXX");
                  
          //接收的郵箱
                  email.addTo("XXX@gmail.com""我的資料庫");
                  
          //發送服務器的郵件地址,現在很多郵件提供商都有驗證這個同用戶名是否對應,還是老老實實填真實的吧
                  email.setFrom("XXX@163.com""Anemone");
                  email.setSubject(
          "[日常資料傳遞]-" + getTime());
                  
          //文本編碼
                  email.setCharset("utf-8");
                  email.setMsg(context);
                  
          if (null != fileList)
                      
          for (File f : fileList) {
                          
          if (f.exists() && f.isFile()) {
                              
          //處理附件
                              EmailAttachment attachment = new EmailAttachment();
                              attachment.setPath(f.getPath());
                              attachment.setDisposition(EmailAttachment.ATTACHMENT);
                              attachment.setDescription(getTime() 
          + "By Anemone");
                              BASE64Encoder enc 
          = new BASE64Encoder();
                              
          //附件中文名問題
                              attachment.setName("=?GBK?B?" + enc.encode(f.getName().getBytes()) + "?=");
                              email.attach(attachment);
                          }
                      }

                  email.send();

              }

              
          public static String getTime() {
                  SimpleDateFormat df 
          = new SimpleDateFormat("yyyy-MM-dd HH:mm");
                  
          return df.format(new Date());
              }

          }
          以上代碼在163和gmail之間測試通過過,建議用exe4j打成EXE文件,然后扔到system32目錄下面,這樣只要想發送資料的時候,只要復制下資料,再執行下這個命令就一切都OK了.
          相關類包:下載


          posted on 2008-03-19 10:03 Anemone 閱讀(1610) 評論(5)  編輯  收藏 所屬分類: 牧羊心得

          Feedback

          # re: JMail 簡單應用-文件傳輸 2008-03-19 11:13 BeanSoft

          想法很不錯 支持。只是現在還不知道有幾個人能想起Java里面操作剪貼板。。。  回復  更多評論   

          # re: JMail 簡單應用-文件傳輸 2008-03-19 11:49 stoneshao

          使用gmail+gspace,方便快捷  回復  更多評論   

          # re: JMail 簡單應用-文件傳輸 2008-03-19 14:46 迷失的風

          好像google現在提供的notebook很好用,大家試試。  回復  更多評論   

          # re: JMail 簡單應用-文件傳輸 2008-03-19 15:50 Anemone

          notebook以前我也一直在用,但是插件這個東西在IE或FF里經常不知所謂地掛掉,后面我都直接禁止掉了  回復  更多評論   

          # re: JMail 簡單應用-文件傳輸 2008-08-19 16:19 hjg515

          我建議你使用酷達公司的Qoodaa傳輸精靈。如果你和你朋友都是用企業網帶寬有1M或2M的話,可以考慮用Qoodaa傳輸精靈傳送。舉個例子,如果你們都是電信的2M的ADSL的話,那么上傳一方的最大速度可以達到每秒60KB以上,也就是說你的接收速度也可以是每秒60KB以上,快的時候可以達到100多KB每秒,我試過了,速度的確很快。用一個小時多左右就可以搞定。如果你用其他同類軟件建議你不要試了,那個速度慢的你想自殺。這種軟件在http://www.qoodaa.com.cn可以下載到

            回復  更多評論   


          My Links

          Blog Stats

          News

          常用鏈接

          留言簿(1)

          隨筆分類

          隨筆檔案

          新聞檔案

          相冊

          常去網站

          搜索

          積分與排名

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 庆云县| 永新县| 安徽省| 博爱县| 民乐县| 缙云县| 锡林浩特市| 新田县| 武隆县| 盐亭县| 金坛市| 岑溪市| 福建省| 广元市| 通海县| 伊通| 大城县| 沈阳市| 定南县| 宣汉县| 韩城市| 六盘水市| 汾阳市| 阜新市| 赞皇县| 新平| 贡嘎县| 神木县| 通河县| 宜黄县| 呼伦贝尔市| 阿瓦提县| 陆良县| 四平市| 沙坪坝区| 探索| 双峰县| 米脂县| 彭阳县| 隆化县| 荥经县|