日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

用Indy创建收发电子邮件的例子

發布時間:2025/3/15 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 用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创建收发电子邮件的例子的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。