Delphi - Indy idMessage和idSMTP实现邮件的发送

 更新时间:2019年08月29日 09:27:10   作者:JJ_JeremyWu  
这篇文章主要介绍了Delphi - Indy idMessage和idSMTP实现邮件的发送,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下

idMessage / idSMTP

首先对idMessage类的各种属性进行赋值(邮件的基本信息,如收件人、邮件主题、邮件正文等),其次通过idSMTP连接邮箱服务器,最后通过idSMTP的Send方法将idMessage发送出去。

界面布局如下:

代码如下:

unit uMain;
interface
uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, ExtCtrls, RzPanel, RzShellDialogs, IdMessage, IdBaseComponent,
 IdComponent, IdTCPConnection, IdTCPClient, IdMessageClient, IdSMTP,
 RzButton, StdCtrls, RzEdit, RzBtnEdt, Mask, RzLabel;
type
 TMainFrm = class(TForm)
  gbMsgSet: TRzGroupBox;
  gbSrvSet: TRzGroupBox;
  lbSubject: TRzLabel;
  lbRsd: TRzLabel;
  lbCc: TRzLabel;
  lbBCc: TRzLabel;
  lbAth: TRzLabel;
  lbBdy: TRzLabel;
  lbUserName: TRzLabel;
  lbHost: TRzLabel;
  lbPsd: TRzLabel;
  edtSub: TRzEdit;
  edtRsd: TRzEdit;
  edtCc: TRzEdit;
  edtBCc: TRzEdit;
  beAth: TRzButtonEdit;
  mmBdy: TRzMemo;
  btnSendMail: TRzBitBtn;
  edtUN: TRzEdit;
  edtHst: TRzEdit;
  edtPsd: TRzEdit;
  IdSMTP: TIdSMTP;
  IdMessage: TIdMessage;
  odMain: TRzOpenDialog;
  procedure beAthButtonClick(Sender: TObject);
  procedure btnSendMailClick(Sender: TObject);
 private
  { Private declarations }
 public
  { Public declarations }
 end;
var
 MainFrm: TMainFrm;
implementation
{$R *.dfm}
procedure TMainFrm.beAthButtonClick(Sender: TObject);
begin
 with odMain do
 begin
  Execute;
  if FileName <> '' then
  begin
   beAth.Text := FileName;
  end;
 end;
end;
procedure TMainFrm.btnSendMailClick(Sender: TObject);
begin
 try
  if (Trim(edtCc.Text) = '') and (Trim(edtRsd.Text) = '') and (Trim(edtBCc.Text) = '') then
  begin
   MessageDlg('You should input Rsd, please check,thanks!', mtInformation, [mbOK], 0);
   edtRsd.SetFocus;
   Exit;
  end;
  with IdMessage do
  begin
   Clear;
   Subject := edtSub.Text;
   From.Text := edtUN.Text;
   Recipients.EMailAddresses := edtRsd.Text;
   CCList.EMailAddresses := edtCC.Text;
   BccList.EMailAddresses := edtBCc.Text;
   Priority := TIdMessagePriority(4);
   if Trim(beAth.Text) <> '' then
   begin
    TIdAttachment.Create(MessageParts, Trim(beAth.Text));
   end;
   Body.Assign(mmBdy.Lines);
  end;
 except
  on E: Exception do
  begin
   MessageDlg('Msg Set Failed with Err information [' + E.Message + ']', mtWarning, [mbOK], 0);
   Exit;
  end;
 end;
 try
  if (Trim(edtUN.Text) = '') or (Trim(edtHst.Text) = '') or (Trim(edtPsd.Text) = '') then
  begin
   MessageDlg('You should input UN, please check,thanks!', mtInformation, [mbOK], 0);
   edtUN.SetFocus;
   Exit;
  end;
  with IdSMTP do
  begin
   if Connected then Disconnect;
   AuthenticationType := atLogin;
   Port := 25;
   UserName := edtUN.Text;
   Password := edtPsd.Text;
   Host := edtHst.Text;
   Connect;
  end;
 except
  on E: Exception do
  begin
   MessageDlg('Srv Set Failed with Err information [' + E.Message + ']', mtWarning, [mbOK], 0);
   Exit;
  end;
 end;
 try
  IdSMTP.Send(IdMessage);
  IdSMTP.Disconnect;
  MessageDlg('OK!', mtInformation, [mbOK], 0);
 except
  on E: Exception do
  begin
   MessageDlg('Send Failed with Err information [' + E.Message + ']', mtWarning, [mbOK], 0);
   Exit;
  end;
 end;
end;

end.

总结

以上所述是小编给大家介绍的Delphi - Indy idMessage和idSMTP实现邮件的发送,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

相关文章

  • 详解使用内网穿透工具Ngrok代理本地服务

    详解使用内网穿透工具Ngrok代理本地服务

    本文主要介绍了使用内网穿透工具Ngrok代理本地服务,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-03-03
  • chatgpt成功解决Access denied 1020错误问题(最新推荐)

    chatgpt成功解决Access denied 1020错误问题(最新推荐)

    从前两天网上开始一直开着的chatgpt网页突然打不开了,提示1020错误,尝试换了不同代理软件或者代理地点仍然无法解决,这篇文章主要介绍了chatgpt成功解决Access denied 1020错误,需要的朋友可以参考下
    2023-05-05
  • 使用版本控制原因及Git与Subversion介绍

    使用版本控制原因及Git与Subversion介绍

    这篇文章主要为大家介绍了使用版本控制优点原因介绍,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-04-04
  • Flyway的简单介绍及使用详解

    Flyway的简单介绍及使用详解

    这篇文章主要介绍了Flyway的简单介绍及使用,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-07-07
  • 关于GBK与UTF-8互转乱码问题解读

    关于GBK与UTF-8互转乱码问题解读

    GBK与UTF-8互转乱码问题,是因为编码和解码方式不一致导致的,UTF-8编码的字符在GBK中解码可能会出现乱码,而GBK编码的字符在UTF-8中解码则通常可以还原,ISO-8859-1编码是单字节编码,可以保证乱码字符串的还原
    2025-02-02
  • HTTP协议详细介绍

    HTTP协议详细介绍

    HTTP是访问互联网使用的核心通信协议,也是所有web应用程序使用的通信协议。本文详细介绍了HTTP协议,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06
  • 数据分析2020年全国各省高考成绩分布情况

    数据分析2020年全国各省高考成绩分布情况

    这篇文章主要介绍了数据分析2020年全国各省高考成绩分布情况,顺便可以用这个数据看每个省市的一本线划分比率,还有其他相关的数据,需要的朋友可以参考下
    2020-07-07
  • 详细JSON解析教程

    详细JSON解析教程

    JSON即JS对象简谱 , 是一种轻量级的数据交换格式,Java官方没有提供JSON解析相应的API,本文提供两个最常用的JSON解析方法,分别是Google的Gson,阿里的FastJson,使用JSON解析之前要先获取相应的jar包,感兴趣的朋友一起看看吧
    2023-08-08
  • Vscode的SSH插件远程连接Linux的实现步骤

    Vscode的SSH插件远程连接Linux的实现步骤

    本文主要介绍了Vscode的SSH插件远程连接Linux的实现步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-04-04
  • 一步步教你安装VSCode(附带图解步骤)

    一步步教你安装VSCode(附带图解步骤)

    VScode全称是微软推出的一个跨平台的编辑器,能够在windows、Linux、IOS等平台上运行,通过安装一些插件可以让这个编辑器变成一个编译器,下面这篇文章主要给大家介绍了关于如何安装VSCode的相关资料,需要的朋友可以参考下
    2023-01-01

最新评论