Category Archives: 我的作品

分享一個Java寫的送信程式

最近一直在Java的世界裡打轉....沒辦法...學期末的報告總是要交
自己寫一寫好像還滿無聊的,分享一個透過JavaMail發信的Class ^^...

因為時間很趕,沒有太多時間去規劃程式流程,只能靠著直覺去馬上規劃,馬上寫。
功能還滿陽春的,不過基本的功能都有。處理附加中文檔名目前還有點問題,但是還不曉得怎麼改正,在網路上找到的方法也轉碼不成功,若有更好的方法的話也麻煩提供一下吧~~


程序代碼 程序代碼
import java.util.Properties;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;

public class sendMail {
    private String SMTP,mailFrom,mailTo,mailCC,mailTitle,mailBody,mailEncode;
    private String userName,userPass;
    private Object[] attachFileList;
    private boolean isAuthentic = false;
    
    public sendMail(){
        this.SMTP = "";
        this.mailFrom ="";
        this.mailTo = "";
        this.mailCC = "";
        this.mailTitle = "";
        this.mailBody = "";
        this.mailEncode = "BIG5";
    }

    public void setFrom(String from){this.mailFrom = from;}
    public void setTo(String to){this.mailTo = to;}
    public void setCC(String cc){this.mailCC = cc;}
    public void setBody(String body){this.mailBody = body;}
    public void setTitle(String title){this.mailTitle = title;}
    public void setSMTP(String smtp){this.SMTP = smtp;}
    public void setUserName(String userName){this
.userName = userName;}
    public void setPassword(String pass){this.userPass = pass;}
    public void setAttachFile(Object[] fileListAry){this.attachFileList = fileListAry;}
    public void setEncode(String encode){this.mailEncode = encode;}
    
    
    /*錯誤訊息對應
     * 0 = 沒有錯誤
     * 1 = 參數不齊全
     * 2 = 送信失敗(有驗證)
     * 3 = 送信失敗(不驗證)
     * 4 = 其他失敗
     * */

    
    public int send(boolean hasSMTPAuth){
        this.isAuthentic = hasSMTPAuth;
        
        //檢查參數是否齊全
        if(!checkParameters(isAuthentic)){
            return 1;
        }else{
            Properties prop = new Properties();
            //設定SMTP Server
            prop.put("mail.smtp.host",this.SMTP);
            Session mailConn = Session.getDefaultInstance(prop,null);

            Message msg = new MimeMessage(mailConn);

            try{
                //設定信件編碼
                msg.setHeader("Content-Transfer-Encoding",this.mailEncode);
                
                //將參數修正編碼
                reEncode();
                
                //Set Sender e-mail Address and nickname
                msg.setFrom(new InternetAddress(this.mailFrom));

                //Set reciever e-mail address and nickname
                msg.setRecipient(Message.RecipientType.TO,
                        new InternetAddress(this.mailTo));
            &n
bsp;   
                if(this.mailCC.trim().length()!=0){
                    msg.setRecipient(Message.RecipientType.CC,
                            new InternetAddress(this.mailCC));
                }
                
                //設定信件標題
                if(this.mailTitle.trim().length()==0){
                    msg.setSubject("[無標題信件]");
                }else{
                    msg.setSubject(this.mailTitle);
                }

                //attach content with MIME
                Multipart mp = new MimeMultipart();
                MimeBodyPart mbpBody = new MimeBodyPart();

                //mbpBody.setContent(Message,MIME_Type);
                mbpBody.setContent(this.mailBody,"text/html; charset=" + this.mailEncode);
                
                //Attach files
                MimeBodyPart mbpFile;
                
                for(int i=0;i<attachFileList.length;i++){
                    String fullPath = this.toBIG5(attachFileList[i].toString());
                    mbpFile = new MimeBodyPart();
                    FileDataSource fds = new FileDataSource(fullPath);
                    mbpFile.setDataHandler(new DataHandler(fds));
            &
nbsp;       mbpFile.setFileName(fds.getName());
                    mp.addBodyPart(mbpFile);
                }
                
                //將內容加入
                mp.addBodyPart(mbpBody);
                msg.setContent(mp);

                //送信
                if(isAuthentic){
                    prop.put("mail.smtp.auth",isAuthentic);
                    Transport trans = mailConn.getTransport("smtp");
                    
                    try{
                        trans.connect(this.SMTP,this.userName,this.userPass);
                        trans.sendMessage(msg,msg.getAllRecipients());
                        return 0;
                    }catch(Exception ex){
                        ex.printStackTrace();
                        return 2;
                    }finally{
                        trans.close();
                    }
                }else{
                    try{
                        Transport.send(msg);
                        return 0;
                    }catch(SendFailedException ex){
                        System.out.println(ex.toString());
                        return 3;
                  
  }
                }
            }catch(Exception ex){
                ex.printStackTrace();
                return 4;
            }
        }
    }
    
    private boolean checkParameters(boolean hasSMTPAuth){
        if(SMTP.trim().length()==0 || mailFrom.trim().length()==0
                || mailTo.trim().length()==0)
            return false;
        else
            if(hasSMTPAuth){
                if(this.userName.trim().length()==0)
                    return false;
                else
                    return true;
            }else{
                return true;
            }
    }
    
    private void reEncode(){
        if(this.mailEncode.toUpperCase()=="BIG5"){
            this.mailFrom = toBIG5(mailFrom);
            this.mailTo = toBIG5(mailTo);
            this.mailTitle = toBIG5(mailTitle);
            this.mailBody = toBIG5(mailBody);
        }else if(this.mailEncode.toUpperCase()=="UTF8"){
            this.mailFrom style="color:#0000ff">= toUTF8(mailFrom);
            this.mailTo = toUTF8(mailTo);
            this.mailTitle = toUTF8(mailTitle);
            this.mailBody = toUTF8(mailBody);
        }
    }
    
    private String toUTF8(String str){
        try {
            str = MimeUtility.encodeText(str,"UTF-8", "B");
            return str;
        } catch (Exception ex){
            return str;
        }
    }
    private String toBIG5(String str){
        try {
            str = MimeUtility.encodeText(str,"Big5", null);
            return str;
        } catch (Exception ex){
            return str;
        }
    }
}
[/color]



用法很簡單啦!先new一下嘛

程序代碼 程序代碼
sendMail mail[color=#0000ff] = new sendMail();[/color]



然後就開始把該設定的參數都設定進去

程序代碼 程序代碼
[color=#008080]//範例!!
mail.setMailTo(xxx);
mail.setMailFrom(xxxx);[/color]



最後呢,再使用send()方法把信件發送出去

程序代碼 程序代碼
mail[color=#0000ff].send();[/color]


※send()方法會回傳一個狀態碼,若為"0"的話表示沒有錯誤,其他就看程式裡面的註解啦,俺有註解在上面~


我自知功力尚淺,尚未練就昇陽十八般武藝,所以這個碗糕寫得不是很好,也希望大家可以一起討論吧.....這次...我就獻醜了

「典藏好句」詞句蒐集程式

這個碗糕是暑假的時候因為買了不少書籍,書中看到了很多直得收藏的字句,本來想用手抄下來,不過這樣往後要引用、整理又太麻煩了,所以就花了一點時間寫了這個小東西,也趣味性的做了RSS功能(雖然不曉得到底實不實用)。

本來想說自己整理文章用,不過有同學說這個應該公開來的…喔!好啦~那我就公開出來跟大家一起分享吧~大家若有好的詞句也可以回覆這篇文章,我會再整理上去的(也請麻煩提供書籍相關資訊)。

網址:http://blog.onlyone.idv.tw/sentence/

PS:因為本來不打算對外使用,所以除了基本的安全性外,沒有特別謹慎的去評估其他威脅的可能性,請各位"善用"他,但是千萬別毀了它…我會哭的!

部落大串燒 開跑!

最近看到很多blogger一個tag一個的玩起了"怪癖"遊戲(也實在看到不少人的怪癖= =),不過都是一個blog接著一個blog往下串,就是少了一個整合的機制來將所有參與這個串聯活動的blogger的文章彙整起來。所以囉,這個機制就因此而生了!這個機制目前還算於實驗階段,能不能成功就要看大家了!

目前,這個機制的名稱就暫定叫做「部落大串燒」,希望大家一起來串!一直串串串串串串串下去!

機制的運作方式很簡單,只要去「串一下」填完資料後,系統會給你一個Trackback的URL,只要再PO文章的時候把這個URL貼到Trackback的欄位後,就可以開始串肉圓啦~~

下午和Vista討論了一下,還有很多的東西可以做,讓這個機制可以更完美一些。

目前想到的有:

  1. 設計特殊的機制,可以顯示某一串"串燒"的整個樹狀結構。
  2. 設計一個主題,把這個機制包裝得活潑一些
  3. 透過RSS/JavaScript開發一些可以讓blogger內嵌一些資訊到自己的blog
  4. 製作web services(目前還沒想到要做哪些功能)
  5. 其他...

當然,除了這些以外,我相信還有更多更多的好點子可以實現在這個機制上面,讓blog可以更好玩!如果大家有什麼好想法的話,歡迎大家回覆這篇文章或者到Vista community中發表文章,提供更好的idea!+

-----

這篇文章也是「部落大串燒」機制的第一串,所以當然也要發揮一下功能,請大家PO相關文章的時候,別忘了Trackback一下喔!

TrackBack網址:http://blog.onlyone.idv.tw/event/trackback.asp?eventID=34
部落大串燒網址:http://blog.onlyone.idv.tw/event

VB/VBScript程式碼格式化工具

寫了久的程式(快兩年.....XÐ),一直是想到什麼補什麼,所以進度很慢~~^^"

目前的功能有:

  1. 自動巢狀程式碼:自動將程式碼依照標準巢狀格式進行修正
  2. 彩色程式碼:自動將程式碼依不同類別給予不同顏色顯示
  3. 顯示行號:依序顯示程式碼行號,並自動跳行(自動跳行時行號不會增加)
  4. 自動偵測有效網址:將有效網址轉換成超連結(中文網址會有點問題)

未來會再加上的功能:

  1. 自動修正大小寫:例如if會修正成IF;ðlsð會修正成 Elsð等 (已完成)
  2. 選擇程式碼型態:目前有XML、JâvâScripþ、VB/VBScripþ、C系列
  3. 使用者自行選擇是否顯示行號

預覽圖:

執行網址:http://my.onlyone.idv.tw/code/test.asp

小作 1

這是我用ASP寫的第一支留言板,特點有

  1. 支援UBB代碼,並使用圖形化輸入介面,使用更方便。

    版面設計清爽、不雜亂。
  2. 整合MSN、ICQ兩套最流行的線上交談程式,容易與網友交換、分享心得。
  3. 留言回覆功能,同一筆留言不會因為不同時間的回覆被拆成許多部分。


  4. 記錄使用者資料,方便使用者下次輸入資料時免去重複輸入的困擾。
  5. 留言可依當時心情選擇情緒、圖片選項。
  6. 版主可線上管理、修改留言。
  7. 記錄IP位址,方便追蹤使用者來源。
  8. 可將任一筆留言隨時移至第一筆。
  9. 設有廣告位置,版主可依需求增減網站廣告輪撥,增加網站收入。
  10. 可設置三位板主,等級可分兩級。
  11. 可設置多組版主專用暱稱,防止不肖人士冒充版主。
  12. 方便的導覽列功能,可隨時移動至不同頁面。
  13. 最高等級版主可發佈新聞。
  14. 頁面頂端已獨立成單一頁面,方便修改成自己的Logo。
  15. 使用者可依喜好設定留言版背景圖片(只限於設定電腦有效)。

    檔案下載:點擊下載此文件

无觅相关文章插件,快速提升流量