全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:4915
推到 Plurk!
推到 Facebook!

要發一郵件,地址為cc@cc.com,附件為c:\c.zip,要用默認的電腦裡的郵件軟件(如outlook)發出去,

答題得分者是:pcboy
hua2000
中階會員


發表:102
回覆:200
積分:65
註冊:2006-11-04

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-07-14 00:19:00 IP:121.12.xxx.xxx 訂閱
我在程序中加了一個button,

要發一郵件,地址為cc@cc.com,附件為c:\c.zip,要用默認的電腦裡的郵件軟件(如outlook)發出去;但當我單擊了這個按扭后,默認的郵件程序(如outlook)會自動跳出來,自動填上地址,且自動附上了附件,最關鍵的是要自動把附件c:\c.zip添加進了郵件程序裡,



這段代碼要如何寫啊?



多謝


pcboy
版主


發表:177
回覆:1838
積分:1463
註冊:2004-01-13

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-07-14 09:19:57 IP:203.204.xxx.xxx 訂閱
用 Outlook 寄信的範例

<textarea class="delphi" rows="10" cols="60" name="code"> uses ComObj; procedure TForm1.Button1Click(Sender: TObject); const olMailItem = 0; var X,K: integer; Outlooker, MailItem: OLEVariant; begin try Outlooker := GetActiveOleObject('Outlook.Application'); except Outlooker := CreateOleObject('Outlook.Application'); end; K:= 0; repeat K:= K 1; X:= random(100000); MailItem := Outlooker.CreateItem(olMailItem); MailItem.Recipients.Add('cc@cc.com'); MailItem.Subject := '信件標題' ; MailItem.Body := '信件內容'; MailItem.Attachments.Add('c:\c.zip'); MailItem.Send; until K= 10; end; procedure TForm1.FormCreate(Sender: TObject); begin randomize; end; </textarea>
------
能力不足,求助於人;有能力時,幫幫別人;如果您滿意答覆,請適時結案!

子曰:問有三種,不懂則問,雖懂有疑則問,雖懂而想知更多則問!
hua2000
中階會員


發表:102
回覆:200
積分:65
註冊:2006-11-04

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-07-14 13:46:43 IP:125.92.xxx.xxx 訂閱
想發一個圖片上來真不容易,還沒有以前上傳圖片方便。

這下面一句中報錯:
try
Outlooker := GetActiveOleObject('Outlook.Application');
except


錯誤信息:
Project project1.exe raised exception class EOleSysError with message '無效的類別字符串'. process stopped.
Use Step or Run to continue.


不能啟動默認的郵件程序及加入附件,

不知什么原因

多謝幫我再看看,

另外:Outlook.Application是什么啊?它代表什么意思啊?
能換成別的嗎?
我想用一個通用的,可以適用于有些用OUTLOOK的,也適用于有些用becky!郵件管理的用戶。可以自動填上地址及附上附件。



多謝

編輯記錄
hua2000 重新編輯於 2007-07-14 13:48:46, 註解 無‧
hua2000 重新編輯於 2007-07-14 13:50:48, 註解 無‧
pcboy
版主


發表:177
回覆:1838
積分:1463
註冊:2004-01-13

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-07-14 15:36:08 IP:203.204.xxx.xxx 訂閱
請問您的電腦有安裝Outlook嗎? 幾版?
(不是Outlook Express哦)
上面程式是 Google 找來的, 小弟沒有實際測試
(當初是要找別的東西, 偶然看到的)
------
能力不足,求助於人;有能力時,幫幫別人;如果您滿意答覆,請適時結案!

子曰:問有三種,不懂則問,雖懂有疑則問,雖懂而想知更多則問!
編輯記錄
pcboy 重新編輯於 2007-07-14 16:45:58, 註解 無‧
hua2000
中階會員


發表:102
回覆:200
積分:65
註冊:2006-11-04

發送簡訊給我
#5 引用回覆 回覆 發表時間:2007-07-15 10:04:42 IP:219.128.xxx.xxx 訂閱
我的這個程序要有很多人用的,他們的電腦上有的裝的OUTLOOK,有的裝的FOXMAIL,有的裝的BECKY等各種各樣的,沒有統一的郵件客戶端的,所以我想用一個能用的,能自動調用系統默認的郵件程序,自動填上地址,且自動附上附件。

上面那段代碼我在好多地方看到了,但我測試,則出現在上面提到的錯誤,不表楚為什么 (我代碼基礎不好)


等待您的幫助


多謝

(實際上我的電腦裡面只裝有WINXP自帶的那個Outlook Express,別的就還有一個becky!)
編輯記錄
hua2000 重新編輯於 2007-07-15 10:07:15, 註解 無‧
pcboy
版主


發表:177
回覆:1838
積分:1463
註冊:2004-01-13

發送簡訊給我
#6 引用回覆 回覆 發表時間:2007-07-15 22:33:09 IP:203.204.xxx.xxx 訂閱
您看到程式使用 Outlook.Application 
明擺著是使用 Outlook 提供的物件來運作
電腦沒有安裝 Outlook 是絕對無法運作的
要調用 FOXMAIL或 BECKY , 要看 FOXMAIL 或 BECKY 是否提供可呼叫調用的物件, 
如果沒有提供, 妳用任何語言都無法開發使用, 無法調用他們
Outlook 和 Outlook Express 是不同的程式
不管你電腦預設使用的郵件程式是什麼
這個範例只能叫用 Outlook 
(也不敢保證每個版本 Outlook 都行, 您要自己測試)
------
能力不足,求助於人;有能力時,幫幫別人;如果您滿意答覆,請適時結案!

子曰:問有三種,不懂則問,雖懂有疑則問,雖懂而想知更多則問!
pcplayer99
尊榮會員


發表:146
回覆:790
積分:632
註冊:2003-01-21

發送簡訊給我
#7 引用回覆 回覆 發表時間:2007-07-16 22:49:42 IP:218.18.xxx.xxx 訂閱
如果你不能保证你的用户都装 Outlook,就别想用 Outlook 来发邮件啦。

用 Indy 也是可以发的。所有的关于邮件的代码 Indy 都帮你写好了,不需要外部的 EMail 客户端。

===================引 用 hua2000 文 章===================
我的這個程序要有很多人用的,他們的電腦上有的裝的OUTLOOK,有的裝的FOXMAIL,有的裝的BECKY等各種各樣的,沒有統一的郵件客戶端的,所以我想用一個能用的,能自動調用系統默認的郵件程序,自動填上地址,且自動附上附件。

上面那段代碼我在好多地方看到了,但我測試,則出現在上面提到的錯誤,不表楚為什么 (我代碼基礎不好)


等待您的幫助


多謝

(實際上我的電腦裡面只裝有WINXP自帶的那個Outlook Express,別的就還有一個becky!)
pcboy
版主


發表:177
回覆:1838
積分:1463
註冊:2004-01-13

發送簡訊給我
#8 引用回覆 回覆 發表時間:2007-07-17 08:34:32 IP:61.220.xxx.xxx 訂閱
一定要用系統預設的 Email Client 端寄信嗎 ?
有什麼特別理由 ? 不然可以考慮用 Indy 元件
(下面是以前寫的程式的片段, 僅供參考)

<textarea class="delphi" rows="10" cols="60" name="code"> // Delphi 7 Enterprise // 不保證可在其他版 Delphi 和 Indy 執行 // 寄出掃描結果 IdSMTP1.Host := '127.0.0.1'; // 請在本機架設 Mail Server, http://www.argosoft.com/ 有免費的 IdSMTP1.Username := 'webmaster'; // 請在 mail Server 上建立此帳號 IdMessage1.From.Name := 'XX系統'; IdMessage1.From.Address := 'webmaster@xxx.xxx.tw'; // 處理收件者名單 s:=''; IdMessage1.Recipients.Clear; if FileExists('email.txt') then begin Memo3.Lines.LoadFromFile('email.txt'); // Memo4.Lines.Clear; Memo4.Lines.Add('讀取email.txt'); end else MessageDlg ('收件者名單 email.txt 不存在!', mtError, [mbOk], 0); EmailCount :=Memo3.Lines.Count; for j := 0 to EmailCount-1 do begin if StrLen(PChar(string(Memo3.Lines[j]))) > 3 then // 確認不是空行 with IdMessage1.Recipients.Add do begin Name := Memo3.Lines[j]; Address := Memo3.Lines[j]; end; end; s:=IdMessage1.Recipients.EmailAddresses; Memo4.Lines.Add('寄通知信給 : ' s); IdMessage1.Subject := '主題 ' DateToStr(Date) ' ' TimeToStr(Time); IdMessage1.Body.Clear; IdMessage1.Encoding:= meMIME; IdMessage1.ContentType:= 'text/html'; IdMessage1.Body.Add('信件內容 '); IdMessage1.Body.AddStrings(Memo1.Lines); //IdMessage1.Body := Memo1.Lines; try if not IdSMTP1.Connected then IdSMTP1.Connect; IdSMTP1.Send(IdMessage1); IdSMTP1.Disconnect; except MessageDlg('寄信失敗 (請架設 Local Mail Server 和帳號 webmaster)', mtWarning, [mbOK], 0) end; // 附件必須清除, 不然會一直累加 // Attachment.Destroy; </textarea>
------
能力不足,求助於人;有能力時,幫幫別人;如果您滿意答覆,請適時結案!

子曰:問有三種,不懂則問,雖懂有疑則問,雖懂而想知更多則問!
Kingron
中階會員


發表:1
回覆:51
積分:60
註冊:2005-09-14

發送簡訊給我
#9 引用回覆 回覆 發表時間:2007-07-18 09:29:27 IP:61.143.xxx.xxx 訂閱
试一试:
MAPISendDocuments
===================引 用 hua2000 文 章===================
我在程序中加了一個button,

要發一郵件,地址為cc@cc.com,附件為c:\c.zip,要用默認的電腦裡的郵件軟件(如outlook)發出去;但當我單擊了這個按扭后,默認的郵件程序(如outlook)會自動跳出來,自動填上地址,且自動附上了附件,最關鍵的是要自動把附件c:\c.zip添加進了郵件程序裡,



這段代碼要如何寫啊?



多謝


------
超级猛料:http://kingron.delphibbs.com
hua2000
中階會員


發表:102
回覆:200
積分:65
註冊:2006-11-04

發送簡訊給我
#10 引用回覆 回覆 發表時間:2007-07-18 15:54:42 IP:116.28.xxx.xxx 訂閱
自己編寫一個發郵件的也可以,但這樣的話,我們還要編寫郵件管理的界面,那樣就複雜了一些了,要花更多的時間在這個上面了。

我剛看了一下,下面沒有添加附件的代碼啊?可否加上發送附件c:\c.zip的代碼啊?


因為這個郵件中還有附件,附件名稱和路徑是固定的。






===================引 用 pcboy 文 章===================
一定要用系統預設的 Email Client 端寄信嗎 ?
有什麼特別理由 ? 不然可以考慮用 Indy 元件
(下面是以前寫的程式的片段, 僅供參考)

?<textarea class="delphi" rows="10" cols="60" name="code">// Delphi 7 Enterprise // 不保證可在其他版 Delphi 和 Indy 執行 ????// 寄出掃描結果 ????IdSMTP1.Host := '127.0.0.1';???????? // 請在本機架設 Mail Server, http://www.argosoft.com/ 有免費的 ????IdSMTP1.Username := 'webmaster';???????? // 請在 mail Server 上建立此帳號 ????IdMessage1.From.Name := 'XX系統'; ????IdMessage1.From.Address := 'webmaster@xxx.xxx.tw'; ????// 處理收件者名單 ????s:=''; ????IdMessage1.Recipients.Clear; if FileExists('email.txt') then begin ????Memo3.Lines.LoadFromFile('email.txt'); //????Memo4.Lines.Clear; ????Memo4.Lines.Add('讀取email.txt'); end else ????MessageDlg ('收件者名單 email.txt 不存在!', mtError, [mbOk], 0); EmailCount :=Memo3.Lines.Count; ????for j := 0 to EmailCount-1 do ????begin ???? if StrLen(PChar(string(Memo3.Lines[j]))) > 3 then // 確認不是空行 ????????with IdMessage1.Recipients.Add do ????????begin ???????? Name := Memo3.Lines[j]; ???????? Address := Memo3.Lines[j]; ????????end; ????end; ????s:=IdMessage1.Recipients.EmailAddresses; ????Memo4.Lines.Add('寄通知信給 : ' s); ????IdMessage1.Subject := '主題 ' DateToStr(Date) ' ' TimeToStr(Time); ????IdMessage1.Body.Clear; ????IdMessage1.Encoding:= meMIME; ????IdMessage1.ContentType:= 'text/html'; ????IdMessage1.Body.Add('信件內容 '); ????IdMessage1.Body.AddStrings(Memo1.Lines); ????//IdMessage1.Body := Memo1.Lines; ????try ???? if not IdSMTP1.Connected then ????????IdSMTP1.Connect; ???? IdSMTP1.Send(IdMessage1); ???? IdSMTP1.Disconnect; ????except ???? MessageDlg('寄信失敗 (請架設 Local Mail Server 和帳號 webmaster)', mtWarning, [mbOK], 0) ????end; ????// 附件必須清除, 不然會一直累加 //????Attachment.Destroy; </textarea>
T-Jason
一般會員


發表:5
回覆:20
積分:10
註冊:2003-05-19

發送簡訊給我
#11 引用回覆 回覆 發表時間:2007-07-18 17:13:25 IP:219.87.xxx.xxx 未訂閱
TIdAttachment.Create(IdMessage1.MessageParts, 'c:\c.zip');
hua2000
中階會員


發表:102
回覆:200
積分:65
註冊:2006-11-04

發送簡訊給我
#12 引用回覆 回覆 發表時間:2007-07-18 22:56:19 IP:121.12.xxx.xxx 訂閱
多謝各位啊
系統時間:2024-04-19 21:15:45
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!