線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2227
推到 Plurk!
推到 Facebook!

如何寄e-mail可以不會讓程式被咬住

尚未結案
markov
中階會員


發表:55
回覆:135
積分:53
註冊:2003-12-01

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-10-27 14:06:20 IP:211.21.xxx.xxx 未訂閱
我使用TNMSMTP來寄信 但每次在NMSMTP1->Connect();及NMSMTP1->SendMail();時都會咬住好幾秒 尤其是有附加檔案稍大一點時, 我是不是應該把SendMail裝進Thread裡面 可是TNMSMTP本身不是已經使用Thread了嗎?
geniustom
版主


發表:100
回覆:303
積分:260
註冊:2003-01-03

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-10-28 17:34:18 IP:219.68.xxx.xxx 未訂閱
markov您好.. 請問您有使用APPLICATION->PROCESSMESSAGES(); 這個方法嗎?如果用了這行..PROCESS會告訴OS "我的PROCESS已經告一段落了..請CPU可以做其他的事了" 這樣CPU就會對您的程式做視窗重繪等其他後續動作.. 看起來就不會被咬住了... 如果您想要讓程式看起來好像有再跑.. 可以再弄一個FORM..配合SHOWMODLE與TIMER..顯示動畫或文字.. 也別忘了再加上APPLICATION->PROCESSMESSAGES(); 這樣程式看起來就不會有定住的感覺了
dllee
站務副站長


發表:321
回覆:2519
積分:1711
註冊:2002-04-15

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-10-28 20:34:04 IP:211.76.xxx.xxx 未訂閱
這是 TNMSMTP 元件的問題,如果您有試用過 StatPlus2系統資源監測器 的話, 您會發現,她在檢查信箱時會占用 CPU 100%,而我在程式中 只是用 TNMSMTP 連線及取得目前的信件個數而已,如果您那它來寄信, 那一樣會有占用 CPU 100% 程式無法動彈的狀況,因為是使用元件, 無法在 SendMail() 內再加 Application->ProcessMessages(), 所以解決的方案是,不要用 TNMSMTP 元件,請改用 Indy 網路元件的 TIdSMTP 就不會有占用 CPU 100% 及程式無法動彈的問題了。 StatPlus2 在下一個版本就會用 Indy 來改寫,敬請期待 < href="http://free.greenworld.com.tw/~dllee/" target="blank">吃軟也吃硬 dllee.ktop.com.tw StatPlus 系統資源監測器 @ SoftKing VMASK - ViewMove Automation Software Kernel
------
http://www.ViewMove.com
markov
中階會員


發表:55
回覆:135
積分:53
註冊:2003-12-01

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-10-28 20:57:02 IP:61.229.xxx.xxx 未訂閱
謝謝,我猜也是這樣 我會去研讀indy如何寄信的 此外,我想詢問一下,如何判斷這個mail address是否合法? 好像離題了
geniustom
版主


發表:100
回覆:303
積分:260
註冊:2003-01-03

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-10-28 21:48:53 IP:219.68.xxx.xxx 未訂閱
markov您好..關於INDY..可以參考下面的使用方式    BCB6中Indy9發送郵件  http://delphi.ktop.com.tw/topic.php?topic_Id=26417    請教TIdMessage的一些屬性...  http://delphi.ktop.com.tw/topic.php?topic_Id=55655    [VCL Howto 投稿] Indy 9.0.10 TIdSMTP & TIdMessage  http://delphi.ktop.com.tw/topic.php?TOPIC_ID=20961    檢測EMAIL是否合法..通常只能檢測"@"後的主機是否能夠連的上.. 引述hagar大大的文章..    (用 TIdTcpClient 元件):比方說小弟的 email 是 hagar@gcn.net.tw 內送郵件主機是 pop3.gcn.net.tw
  try
    IdTcpClient1.Host := 'pop3.gcn.net.tw';
    IdTcpClient1.Port := 110;
    IdTcpClient1.Connect;
    if IdTcpClient1.Connected then
      ShowMessage('connect');
  except
    ShowMessage('could not connect');
  end;
或是可參考http://delphi.ktop.com.tw/topic.php?TOPIC_ID=57377中 暗黑破壞神大大用SOCKET模擬EMAIL protocol 連接的方式偵測 GOOD LUCK
markov
中階會員


發表:55
回覆:135
積分:53
註冊:2003-12-01

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-10-30 14:37:31 IP:220.139.xxx.xxx 未訂閱
port 110是不是ping 的port 那通常有防火牆的mail server第一個會封鎖的port就是ping的port?
markov
中階會員


發表:55
回覆:135
積分:53
註冊:2003-12-01

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-10-30 14:57:42 IP:220.139.xxx.xxx 未訂閱
我試TIdSMTP+TIdMessage寄信時 在下達IdSMTP1->Connect();時 出現503 polite people say HELO first 是不是那裡沒有初始化??  
        IdSMTP1->Host=SMTP伺服器字串;
        IdSMTP1->Port=25;
        IdSMTP1->AuthenticationType=atLogin;
        IdSMTP1->帳號;
        IdSMTP1->Password=密碼;
        try
        {
                IdMessage1->Clear();
                IdMessage1->From->Address=寄件人mail;
                IdMessage1->From->Name="test";
                
                //正本收信者
                IdMessage1->Recipients->Clear();
                TIdEMailAddressItem *NewItem=IdMessage1->Recipients->Add();
                NewItem->Address=收件人mail;                    IdMessage1->Subject="寄信測試"; //設定寄信主旨
                IdMessage1->UseNowForDate=true; 
                IdMessage1->CharSet="big5";                    //要傳送的檔案名稱(附件)
                IdMessage1->MessageParts->Clear();
                IdMessage1->MessageParts->Add();
                new TIdAttachment(IdMessage1->MessageParts,附加檔案路徑名稱);                    IdSMTP1->Connect();
        }
        catch(...)
        {
        }
 
dllee
站務副站長


發表:321
回覆:2519
積分:1711
註冊:2002-04-15

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-10-30 22:27:31 IP:211.76.xxx.xxx 未訂閱
不是每個 SMTP 伺服器都需要密碼,您可以試試,    IdSMTP1->AuthenticationType=atNone;    看看,另外,如果您的 From 的 Email Address 是錯誤的, 也是無法寄喔。    下載 Indy DEMO (Delphi code) http://www.nevrona.com/indy/demodownloads/I9D6_Demos_24Nov02.zip 參考 MailClient 的專案即可作簡易的收發信。    另外在本站搜尋一下也可以得到許多相關的 sample code。應該不難用。    吃軟也吃硬 dllee.ktop.com.tw StatPlus 系統資源監測器 @ SoftKing VMASK - ViewMove Automation Software Kernel
------
http://www.ViewMove.com
markov
中階會員


發表:55
回覆:135
積分:53
註冊:2003-12-01

發送簡訊給我
#9 引用回覆 回覆 發表時間:2004-11-02 20:28:13 IP:61.229.xxx.xxx 未訂閱
我現在可以connect 但是在IdSMTP1Connected事件中下達 IdSMTP1->Send(IdMessage1); 還是會出現503 polite people say HELO first的錯誤訊息 有沒有人知道這是什麼錯! p.s.我已經看過k.top上的example了,我還是看不出來是錯那裡? 拜託各位高手幫忙!!
orson
中階會員


發表:5
回覆:135
積分:58
註冊:2002-07-11

發送簡訊給我
#10 引用回覆 回覆 發表時間:2004-11-03 12:41:38 IP:211.74.xxx.xxx 未訂閱
引言: 我現在可以connect 但是在IdSMTP1Connected事件中下達 IdSMTP1->Send(IdMessage1); 還是會出現503 polite people say HELO first的錯誤訊息 有沒有人知道這是什麼錯! p.s.我已經看過k.top上的example了,我還是看不出來是錯那裡? 拜託各位高手幫忙!!
你遇到嚴格的MAIL server 一般來說,你要送一封EMAIL的程序大概是這樣 helo xxxx mail from: abc@www.xxx.com rcpt to: def@aaa.com data ... ... . 依你所收到的訊息,IDSMTP沒有幫你送HELO命令 IDSMTP 沒有HELO?? 我都是用ICS,只能從RFC的角度幫忙。 Orson
markov
中階會員


發表:55
回覆:135
積分:53
註冊:2003-12-01

發送簡訊給我
#11 引用回覆 回覆 發表時間:2004-11-13 17:34:39 IP:61.229.xxx.xxx 未訂閱
感謝各位的幫忙, 現在我已經可以寄信了, 但是還是會因附加檔案的大小而改變咬在 IdSMTP1->Send(IdMessage1); 這一行的時間 有沒有什麼方法可以解決?
dllee
站務副站長


發表:321
回覆:2519
積分:1711
註冊:2002-04-15

發送簡訊給我
#12 引用回覆 回覆 發表時間:2004-11-14 19:57:24 IP:211.76.xxx.xxx 未訂閱
您有沒有使用 TIdAntiFreeze 呢? 把 TIdAntiFreeze 放一個到您的表單內應該就 ok 了。    吃軟也吃硬 dllee.ktop.com.tw StatPlus 系統資源監測器 @ KTOP VMASK - ViewMove Automation Software Kernel
------
http://www.ViewMove.com
markov
中階會員


發表:55
回覆:135
積分:53
註冊:2003-12-01

發送簡訊給我
#13 引用回覆 回覆 發表時間:2004-11-16 11:07:29 IP:211.21.xxx.xxx 未訂閱
問一個蠢問題 將TIdAntiFreeze放在Form上後 要不要與IdSMTP1或IdMessage1進行link或寫一段小程式或下什麼指令??
geniustom
版主


發表:100
回覆:303
積分:260
註冊:2003-01-03

發送簡訊給我
#14 引用回覆 回覆 發表時間:2004-11-16 11:18:21 IP:219.68.xxx.xxx 未訂閱
引言: 問一個蠢問題 將TIdAntiFreeze放在Form上後 要不要與IdSMTP1或IdMessage1進行link或寫一段小程式或下什麼指令??
請善用搜尋功能 > <> <> < > <> < class="code"> =程式是一種藝術 也是訓練自己的分析規劃= =是段落分明 或是雜亂無章= =是一言以敝 或是廢話連篇= =是一目了然 或是艱深難懂= 體會這份藝術 您會了解另一份喜悅與成就
系統時間:2024-04-20 10:41:31
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!