Delphi - Indy TIdMessage和TIdSMTP实现邮件的发送
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], );
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();
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], );
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], );
edtUN.SetFocus;
Exit;
end;
with IdSMTP do
begin
if Connected then Disconnect;
AuthenticationType := atLogin;
Port := ;
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], );
Exit;
end;
end; try
IdSMTP.Send(IdMessage);
IdSMTP.Disconnect;
MessageDlg('OK!', mtInformation, [mbOK], );
except
on E: Exception do
begin
MessageDlg('Send Failed with Err information [' + E.Message + ']', mtWarning, [mbOK], );
Exit;
end;
end; end; end.
作者:Jeremy.Wu
出处:https://www.cnblogs.com/jeremywucnblog/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
Delphi - Indy TIdMessage和TIdSMTP实现邮件的发送的更多相关文章
- Delphi中,indy控件实现收发邮件的几点学习记录( 可以考虑加入多线程,用多个邮箱做一个邮箱群发器) 转
关于用Delphi中的Indy控件实现收发邮件的几点学习记录 这几天心里颇不宁静,不是因为项目延期,而是因为自己几个月前做的邮件发送程序至今无任何进展,虽然一向谦虚的人在网上发 ...
- Delphi - Indy 创建邮件自动发送服务
服务器自动邮件线程 功能:此程序主要实现对Oracle数据库表tableName(存放需要发送邮件的相关信息)里面相关信息的邮件发送. 优点:开发人员可以直接再数据库后台对tableName表进行插入 ...
- 技术笔记:Indy的TIdSMTP改造,解决发送Html和主题截断问题
使用Indy来发邮件坑不少啊,只不过有比没有好吧,使用delphi6这种老工具没办法,只能使用了新一点的Indy版本9,公司限制... 1.邮件包含TIdText和TIdAttachment时会出现T ...
- [delphi]indy idhttp post方法
网易 博客 LOFTCam-用心创造滤镜 LOFTER-最美图片社交APP 送20张免费照片冲印 > 注册登录 加关注 techiepc的博客 万事如意 首页 日志 LOFTER 相册 音乐 ...
- Delphi Indy IDHttp 403 forbidden
http://hbk777.blog.163.com/blog/static/6058086200681594333361/ Delphi Indy IDHttp 403 forbidden 2006 ...
- (转载)JavaWeb学习总结(五十一)——邮件的发送与接收原理
博客源地址:http://www.cnblogs.com/xdp-gacl/p/4209586.html 一. 邮件开发涉及到的一些基本概念 1.1.邮件服务器和电子邮箱 要在Internet上提供电 ...
- zabbix监控系列(4)之zabbix报警邮件无法发送
情况介绍 首先确保邮箱规则没有把报警邮件作为垃圾邮件拉黑了. 服务器断电重启后,发现zabbix报警邮件无法发送,断电之前是好好的,但是重启后不行了,于是查看maillog日志,发现这个错误: Hos ...
- JavaWeb学习总结(五十一)——邮件的发送与接收原理
一. 邮件开发涉及到的一些基本概念 1.1.邮件服务器和电子邮箱 要在Internet上提供电子邮件功能,必须有专门的电子邮件服务器.例如现在Internet很多提供邮件服务的厂商:sina.sohu ...
- PHP 错误与异常 笔记与总结(7)将错误日志以邮件方式发送
当系统发生了很严重的问题,需要立刻发送给管理员.可以通过 error_log() 将错误以邮件形式发送到邮箱. 在 php.ini 中设置: sendmail_from = 472323087@qq. ...
随机推荐
- Java IO 为什么我们需要缓冲区
在执行IO操作我们通常会设置一个字节数组作为缓冲区用来写/读数据,一般情况下一个合理大小的缓冲区是有利于提升性能的,但是有一个问题一直困扰着我,为什么缓冲区可以提升IO操作的性能? 经查阅资料之后,总 ...
- grafana 4 升级到 grafana 5错误处理
遇到2个错误: 1. UNIQUE KEY 问题 INFO[07-16|15:34:36] Executing migration logger=migrator id="Remove un ...
- get解决乱码的方式
//自定义的解决乱码方式
- HTML结构 语义化思想
总体思想:用正确的标签做正确的事情! 根据内容的结构化(内容语义化),选择合适的标签(代码语义化)便于开发者阅读和写出更优雅的代码的同时让浏览器的爬虫和机器很好地解析. 主要体现: 1. 对用户而言, ...
- Angular JS 中 指令详解
Angular JS的强大功能就在于其可以自定义很多指令,现在就指令做一下详细的剖析. 一个Angular js 指令(directive)需要指定一个唯一的名字(myDirective)和一个函数, ...
- 二进制文件安装k8s所需要的证书服务
利用二进制文件安装etcd所需要的证书服务 CFSSL是CloudFlare开源的一款PKI/TLS工具. CFSSL 包含一个命令行工具 和一个用于 签名,验证并且捆绑TLS证书的 HTTP API ...
- 解决:Navicat连接不上MySQL 8.0
转载自 https://www.cnblogs.com/shiysin/p/shiysin.html Navicat连接不上,总是报错1251: 原因是MySQL8.0版本的加密方式和MySQL5.0 ...
- 用CSS来定义<p>标签,要求实现以下效果:字体颜色再IE6下为黑色,IE7下为红色,IE8下为绿色,其他浏览器下为黄色。
<!DOCTYPE html><html><head><meta charset="utf-8"><meta name=&qu ...
- Spring IoC源码解析之invokeBeanFactoryPostProcessors
一.Bean工厂的后置处理器 Bean工厂的后置处理器:BeanFactoryPostProcessor(触发时机:bean定义注册之后bean实例化之前)和BeanDefinitionRegistr ...
- C语言编程入门之--第五章C语言基本运算和表达式-part2
5.1.4 再来一个C库函数getchar吸收回车键 回车键也是一个字符,在使用scanf的时候,输入完毕要按下回车键,这时候回车键也会被输入到stdin流中,会搞乱我们的程序. 注意:stdin是输 ...