delphi XE7+ INDY 10.6测试邮件发送接收功能

邮件程序 专栏收录该内容
1 篇文章 0 订阅

记录如下的关键地方,存档

xe7自带的indy 组件是10.6版本,

1. 接收邮件时, 如果邮箱容量超过2GB的话,idpop3的检查检索邮件数量的函数返回值就会出错。

今天2019.12.3在indy 官网看到 indy 10已经更新了组件的 相关类型从integer 改为 int64.

var
i:integer;
begin
   i:=0;
    self.IdPOP31.Host:='pop.xxxxx';
    self.IdPOP31.Username:='xxx@xxxxx.com';
    self.IdPOP31.Password:='xxxxx';
    try
    self.IdPOP31.Connect;
//    self.IdPOP31.Login;
    i:=self.IdPOP31.CheckMessages; //如果邮箱使用容量超过2gb, 会出错,会显示一个很大的整数。
//另外读取的邮件会从老-->新 的时间开始
for i := 1 to 5 do
begin
    self.IdMessage1.Clear;
    self.IdPOP31.RetrieveHeader(i,self.IdMessage1);
    self.Memo1.Lines.Add(self.IdMessage1.From.Address) ;
    self.Memo1.Lines.Add(datetostr(self.IdMessage1.Date));
    self.Memo1.Lines.Add(self.IdMessage1.Subject);
    self.IdPOP31.Retrieve(i, self.IdMessage1);
    self.Memo1.Lines.Add(self.IdMessage1.Body.Text);
end;
    except on e:exception do
        showmessage(e.Message);

    end;

    self.IdPOP31.Disconnect;

 

2. 测试发邮件功能,我的aliyun邮件服务器不需要验证的

procedure TForm1.btnsendClick(Sender: TObject);
begin
    self.IdMessage1.Clear;
    self.IdMessage1.Subject:='hello test';
    self.IdMessage1.Body.AddStrings(self.Memo1.Lines);
    self.IdMessage1.From.Address:='supply@XXXX.com';
    self.IdMessage1.From.Name:='supplier';
    self.ListBox1.Items.Add(self.IdMessage1.From.Text);
     with   self.IdMessage1.Recipients.Add do
     begin
          Address:='XXXXXXX@qq.com';
          Name:='my qq';
     end;
     //如果像下面一项分成2行添加的话,意味着添加2个不同的邮件地址
   // self.IdMessage1.Recipients.Add.Address:='XXXXXXXX@qq.com';
    //self.IdMessage1.Recipients.Add.Name:='my qq';

    //self.ListBox1.Items.Add(self.IdMessage1.Recipients.Items[0].Text);
    //self.ListBox1.Items.Add(self.IdMessage1.Recipients.Items[1].Text);

    self.IdMessage1.CCList.Add.Address:='XXXXXX@aliyun.com';
    //self.ListBox1.Items.Add(self.IdMessage1.CCList.Items[0].TEXT);
    //self.IdMessage1.CCList.Add.Name:='XXXXXX';
    showmessage(self.IdMessage1.Body.Text);
    //self.IdSMTP1.Host  host, username, password之类已经在窗体内设置好了。

    self.IdSMTP1.Connect;
    self.IdSMTP1.Authenticate;
    self.IdSMTP1.Send(self.IdMessage1);
    self.IdSMTP1.Disconnect();
end;

10.6的indy,connect之前不需要设置authenticatetype:=atLogin,  只有一个属性authtype (satdefault, satnone....);

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页

打赏作者

g58521547

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值