如何寄e-mail可以不會讓程式被咬住 |
尚未結案
|
markov
中階會員 發表:55 回覆:135 積分:53 註冊:2003-12-01 發送簡訊給我 |
|
geniustom
版主 發表:100 回覆:303 積分:260 註冊:2003-01-03 發送簡訊給我 |
markov您好..
請問您有使用APPLICATION->PROCESSMESSAGES();
這個方法嗎?如果用了這行..PROCESS會告訴OS
"我的PROCESS已經告一段落了..請CPU可以做其他的事了"
這樣CPU就會對您的程式做視窗重繪等其他後續動作..
看起來就不會被咬住了...
如果您想要讓程式看起來好像有再跑..
可以再弄一個FORM..配合SHOWMODLE與TIMER..顯示動畫或文字..
也別忘了再加上APPLICATION->PROCESSMESSAGES();
這樣程式看起來就不會有定住的感覺了
|
dllee
站務副站長 發表:321 回覆:2519 積分:1711 註冊:2002-04-15 發送簡訊給我 |
這是 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 發送簡訊給我 |
|
geniustom
版主 發表:100 回覆:303 積分:260 註冊:2003-01-03 發送簡訊給我 |
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 發送簡訊給我 |
|
markov
中階會員 發表:55 回覆:135 積分:53 註冊:2003-12-01 發送簡訊給我 |
我試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 發送簡訊給我 |
不是每個 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 發送簡訊給我 |
|
orson
中階會員 發表:5 回覆:135 積分:58 註冊:2002-07-11 發送簡訊給我 |
引言: 我現在可以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 發送簡訊給我 |
|
dllee
站務副站長 發表:321 回覆:2519 積分:1711 註冊:2002-04-15 發送簡訊給我 |
您有沒有使用 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 發送簡訊給我 |
|
geniustom
版主 發表:100 回覆:303 積分:260 註冊:2003-01-03 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |