平時從來不使用Foxmail、Outlook這樣的的客戶端軟件的用戶,每次發郵件的時候都會小心翼翼地打開IE,擊開收藏夾,點擊某個網站的地址,然後填入用戶名、密碼,添加附件,等待ing…,發送失敗,回退到前頁,再次發送,等待ing…,直到發送成功。每次讓他們經歷這些動作不啻於一種折磨。用什麼辦法能減輕他們的負擔呢?那就在你的程序中加入郵件發送功能吧,同時別忘了加上附件功能(附件功能在電子郵件中實在太有用了),讓你的用戶只要點擊一次就能搞定一切,為他們帶來一些輕松。
實現上面講的功能會不會很難呢?或許以前是這樣的,可是現在我們有了Delphi和Indy組件,開發的過程就會像是靜坐窗前,一邊欣賞窗外的景致,一邊品嘗著杯中的咖啡一般惬意而自然。現在就讓我們雙擊Delphi,開始這一段愉快之旅吧。
在Delphi的Form上,放置IdSMTP、IdMessage、OpenDialog三個主要的組件,這三個組件是這次郵件發送程序的核心組件,大部分功能都由它們來實現,其它還有一些Label、LabeledEdit和Memo組件,具體的布局如下圖所示:
本程序的實現思路是這樣的,郵件的發送功能由Indy組件來實現,(筆者注:這是一套十分著名的用來開發網絡程序的組件,從Delphi6開始,這套組件成為Delphi內置的組件,它的最新版本可以到http://www.nevrona.com/indy/上去下載),IdSMTP組件用來實現與郵件發送服務器(即SMTP服務器)的聯接與通信,而IdMessage組件則用來對郵件內容進行存儲和編碼。當郵件寫好後,數據被編碼並“填充”進IdMessage,然後通過IdSMTP與SMTP服務器進行聯接和通信。
郵件發送的主要代碼如下:
procedure TMailerForm.btnSendMailClick(Sender: TObject);
begin
StatusMemo.Clear;
//設置SMTP
SMTP.Host := ledHost.Text; //具體使用的SMTP,可以到你申請的郵箱所在的網站中去找
SMTP.Port := 25;
//設置郵件內容
MailMessage.From.Address := ledFrom.Text;
MailMessage.Recipients.EMailAddresses := ledTo.Text + ',' + ledCC.Text;
MailMessage.Subject := ledSubject.Text;
MailMessage.Body.Text := Body.Text;
if FileExists(ledAttachment.Text) then
TIdAttachment.Create(MailMessage.MessageParts,
ledAttachment.Text);
//發送郵件
try
try
SMTP.Connect(1000);
SMTP.Send(MailMessage);
except on E:Exception do
StatusMemo.Lines.Insert(0, 'ERROR: ' + E.Message);
end;
finally
if SMTP.Connected then
SMTP.Disconnect;
end;
end;
//添加附件代碼
procedure TMailerForm.btnAttachmentClick(Sender: TObject);
begin
if AttachmentDialog.Execute then
ledAttachment.Text := AttachmentDialog.FileName;
end;
郵件發送程序的應用十分的廣泛,隨著寬帶的普及,“時刻在線”成為了可能,為你的應用軟件加入郵件收發功能將為你的用戶帶來不少的方便。在軟件開發中更多的為用戶著想,才能使你的軟件真正受到大眾的歡迎!