用Indy创建收发电子邮件的例子
1、創建工程,在窗體中加入IdSMTP1、IdMessage1和IdPOP31(Indy控件標簽組)控件各一個。
?????? 2、設置??? IdSMTP1.Host := 'SMTP.163.com';(我用的是163檢試,具體也可選擇其它服務器)??? IdSMTP1.Username :=
'caoyan528';(此處即表示郵箱的帳號名,例如郵箱為:aaaaaa@163.com,則Username即為aaaaaa)??? IdSMTP1.Password := 'XXXXXXXX';(此處
即為郵箱的密碼,如aaaaaa@163.com郵箱密碼為123456,則Password即為123456)。
????? 3、設置IdMessage1.From.Address :=
'caoyan_528@163.com';(注意,此處的郵箱地址應在smtp.163.com中存在且就為以上設置的Username),IdMessage1.Recipients.EMailAddre
sses := ‘caoyan528@gmail.com’(此處表示收件人地址,只要是任何一個存在的郵箱地址即可)? IdMessage1.Subject:= '第一個郵件客戶
端';(主題)具體源代碼如下:
procedure TForm1.Button4Click(Sender: TObject);
var
? filename : String;
? tmpEMailItem : TIdEMailAddressItem;
? // tmpEmailAdd :? TIdEmailAddressList;
begin
? try
??? IdSMTP1.Host := 'SMTP.163.com';
??? IdSMTP1.AuthenticationType := atLogin; //保證登錄模式為Login
??? IdSMTP1.Username := 'caoyan_528';
??? IdSMTP1.Password := 'XXXXXX';
??? filename := 'E:/郵件發送程序/2003-12-22_253_04.jpg';?? //需要添加的附件文件
??? TIdAttachment.Create(IdMessage1.MessageParts,filename);? //添加附件
?? IdMessage1.From.Address := 'caoyan_528@163.com';
??? IdMessage1.Recipients.EMailAddresses:='caoyan528@gmail.com';
??? tmpEMailItem := IdMessage1.Recipients.Add;? //添加一個地址列表
??? tmpEMailItem.Text := 'caoyan528@gmail.com'; //寫一個收件人
??? idMessage1.BccList.Add.Text := 'caoyan_528@yahoo.com.cn';? //書寫多個目標地址,實現群發
??? idMessage1.BccList.Add.Text := 'caoyan_528@163.com';? //書寫多個目標地址,實現群發
??? IdMessage1.Subject:= '第一個郵件客戶端';
??? IdMessage1.Body.Text := Memo1.Text;?? //此處為郵件正文
??? IdMessage1.CharSet := 'gb2312';? //保證附件正文漢字的正常顯示
??? IdMessage1.Body.Assign(Memo1.Lines);??
??? if IdSMTP1.AuthSchemesSupported.IndexOf('LOGIN')>-1 then
??? begin
????? IdSMTP1.AuthenticationType := atLogin; //連接前要保存為Login? 上面己設,此處不必要
????? IdSMTP1.Authenticate;
??? end;
??? IdSMTP1.Connect();? //連接SMTP服務器
??? IdSMTP1.Authenticate;
??? IdSMTP1.Send(IdMessage1);? //向服務器發送郵箱
? finally
??? IdSMTP1.Disconnect;? //斷開與服務器的連接
? end;
end;
自此,memo1中所寫的內容被當作郵件發送了出去。而filename所指的附件也一同被發送到了服務器。
?
4、接收郵件
收以上的流程圖不難看出,接收郵件完全是POP3服務器來完成的,客戶只需連接到POP3服務器即可下載郵件。具體做法如下:
設置IdPOP31.Host := POP.163.com????? IdPOP31.Username := 'caoyan_528';?????? IdPOP31.Password:= 'XXXXX';?????
(此處的設置與SMTP的設置相同)??? 源代碼如下:
procedure TForm1.Button5Click(Sender: TObject);
var
? mailcount : integer;
? i : integer;
? tmp : string;
begin
? IdPOP31.Connect();??? //連接到POP3服務器
? mailcount := IdPOP31.CheckMessages;? //得到郵箱郵件的各數
? for i:=1 to mailcount do?? //遍歷每一封郵件
? begin
???? IdMessage1.Clear;
???? IdPOP31.retrieveHeader(i,IdMessage1);? //得到郵件的頭信息
???? tmp := IdMessage1.Subject;????? //得到郵件的標題
???? Memo1.Lines.Add(tmp);
???? IdPOP31.Retrieve(i,IdMessage1);? //接收到郵件所有內容
???? tmp := IdMessage1.Body.Text;?? //郵件正文
???? memo1.Lines.Add(tmp);
? end;
? IdPOP31.Disconnect;?? //斷開連接
end;?
轉載于:https://www.cnblogs.com/hnxxcxg/archive/2008/11/17/2940968.html
總結
以上是生活随笔為你收集整理的用Indy创建收发电子邮件的例子的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: T-SQL之公用表表达式(CTE)
- 下一篇: aswing学习笔记4-通过调用面板中的