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实现邮件的发送的更多相关文章

  1. Delphi中,indy控件实现收发邮件的几点学习记录( 可以考虑加入多线程,用多个邮箱做一个邮箱群发器) 转

    关于用Delphi中的Indy控件实现收发邮件的几点学习记录             这几天心里颇不宁静,不是因为项目延期,而是因为自己几个月前做的邮件发送程序至今无任何进展,虽然一向谦虚的人在网上发 ...

  2. Delphi - Indy 创建邮件自动发送服务

    服务器自动邮件线程 功能:此程序主要实现对Oracle数据库表tableName(存放需要发送邮件的相关信息)里面相关信息的邮件发送. 优点:开发人员可以直接再数据库后台对tableName表进行插入 ...

  3. 技术笔记:Indy的TIdSMTP改造,解决发送Html和主题截断问题

    使用Indy来发邮件坑不少啊,只不过有比没有好吧,使用delphi6这种老工具没办法,只能使用了新一点的Indy版本9,公司限制... 1.邮件包含TIdText和TIdAttachment时会出现T ...

  4. [delphi]indy idhttp post方法

    网易 博客 LOFTCam-用心创造滤镜 LOFTER-最美图片社交APP 送20张免费照片冲印 > 注册登录  加关注 techiepc的博客 万事如意 首页 日志 LOFTER 相册 音乐 ...

  5. Delphi Indy IDHttp 403 forbidden

    http://hbk777.blog.163.com/blog/static/6058086200681594333361/ Delphi Indy IDHttp 403 forbidden 2006 ...

  6. (转载)JavaWeb学习总结(五十一)——邮件的发送与接收原理

    博客源地址:http://www.cnblogs.com/xdp-gacl/p/4209586.html 一. 邮件开发涉及到的一些基本概念 1.1.邮件服务器和电子邮箱 要在Internet上提供电 ...

  7. zabbix监控系列(4)之zabbix报警邮件无法发送

    情况介绍 首先确保邮箱规则没有把报警邮件作为垃圾邮件拉黑了. 服务器断电重启后,发现zabbix报警邮件无法发送,断电之前是好好的,但是重启后不行了,于是查看maillog日志,发现这个错误: Hos ...

  8. JavaWeb学习总结(五十一)——邮件的发送与接收原理

    一. 邮件开发涉及到的一些基本概念 1.1.邮件服务器和电子邮箱 要在Internet上提供电子邮件功能,必须有专门的电子邮件服务器.例如现在Internet很多提供邮件服务的厂商:sina.sohu ...

  9. PHP 错误与异常 笔记与总结(7)将错误日志以邮件方式发送

    当系统发生了很严重的问题,需要立刻发送给管理员.可以通过 error_log() 将错误以邮件形式发送到邮箱. 在 php.ini 中设置: sendmail_from = 472323087@qq. ...

随机推荐

  1. ssh,公钥和私钥,远程复制

    ssh,公钥和私钥,远程复制 1.openssh 是一个提供远程访问控制的软件 2.ssh 远程主机用户@远程主机ip地址 ssh root@172.25.254.1 The authenticity ...

  2. Anaconda大法好,为什么要用Anaconda(附linux安装与用例)

    距离写上一个博客已经过去很久了,注册的时候我还是个大三学生抱着windows系统的visual studio在OPENCV等等复杂组件下面瑟瑟发抖,一不小心就担心hpp找不到了,依赖库没了,或者安装了 ...

  3. 【Intellij】Hot Swap Failed & class reloaded

    用 Intellij IDEA 编译程序时遇到了这个问题,如下图所示: 对结果貌似没什么影响,但暂时没找到出现这个情况的原因……

  4. Eclipse Other Projects小问题

    Eclipse 不知什么时候多了个 "Other Projects" 文件夹,所有的项目又多了一层目录,如图所示: 虽然对功能没任何影响,但每次打开有些麻烦,多少感觉有些不爽…… ...

  5. java的jar打包工具的使用

    java的jar打包工具的使用 java的jar是一个打包工具,用于将我们编译后的class文件打包起来,这里面主要是举一个例子用来说明这个工具的使用. 在C盘下的temp文件夹下面:         ...

  6. Web项目如何做单元测试

    你可能会用单元测试框架,python的unittest.pytest,Java的Junit.testNG等. 那么你会做单元测试么!当然了,这有什么难的? test_demo.py def inc(x ...

  7. Vsftp服务器配置文件详解

    vsftp软件是我们常见的FTP服务器搭建软件,所有的配置都是基于vsftpd.conf这个配置文件的.vsftpd.conf里面主要包括安全配置,传输,用户还有权限等相关的选项.现在我们讲解下关于V ...

  8. 最简单的DWR例子

    什么是DWR? DWR是一个Open Source的 java项目.DWR可以让JavaScript调用运行在Web服务器里面的JAVA程序.简单一点或者专业一点就是Easy AJAX for JAV ...

  9. 从原理层面掌握@ModelAttribute的使用(使用篇)【一起学Spring MVC】

    每篇一句 每个人都应该想清楚这个问题:你是祖师爷赏饭吃的,还是靠老天爷赏饭吃的 前言 上篇文章 描绘了@ModelAttribute的核心原理,这篇聚焦在场景使用上,演示@ModelAttribute ...

  10. Yii的srbac拓展中“用户已经获授权项”无法查看

    Yii的srbac拓展中“用户已经获授权项”点下拉框,选择一个有权限的用户时,根本无法列出权限. 原因是srbac把数据库的表中的ID默认为数字,像 123这样,但如果不是数字像这样 'y0f22ff ...