zoukankan      html  css  js  c++  java
  • 用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; 

  • 相关阅读:
    383. Ransom Note
    598. Range Addition II
    453. Minimum Moves to Equal Array Elements
    492. Construct the Rectangle
    171. Excel Sheet Column Number
    697. Degree of an Array
    665. Nondecreasing Array
    视频网站使用H265编码能提高视频清晰度吗?
    现阶段的语音视频通话SDK需要解决哪些问题?
    企业远程高清会议平台视频会议系统在手机端使用的必备要求有哪些?
  • 原文地址:https://www.cnblogs.com/hnxxcxg/p/2940968.html
Copyright © 2011-2022 走看看