【注意】QSendMail 支持 XE 以后的版本,以前的版本由于默认携带的 Indy 版本问题,无法直接支持。要在 XE 以前的版本编译,请在其上手动安装新版的 Indy 后再编译。
QSendmail 单元用于实现跨平台的邮件发送,它基于 Indy 的 TIdSmtpServer 实现,并简化了相应的接口,原来没有加入 QDAC 家族,现应群里朋友的要求,加入到 QDAC 家族并命名为 QSendmail。
QSendmail 使用 SMTP 协议来发送邮件,支持加密和非加密协议。
1、TQMailSender
TQMailSender 是邮件发送的主类型,它提供两个构造函数:
class function Create(AServer, AUserName, APassword: UnicodeString): TQMailSender; overload; static; class function Create: TQMailSender; overload; static;
- 第一个构造函数要求提供服务器地址、用户名和密码;
- 第二个构造函数不要求提供,默认使用全局变量来控制(DefaultSMTPServer/DefaultSMTPUserName/DefaultSMTPPassword)。当然也可以在创建后,通过修改相关成员变量的值来改变。
在创建后,请设置相关成员的值,然后调用 Send /SendBySSL 方法发送邮件。区别在于后者通过 SSL 加密发送。
2、附件
邮件的附件,通过 TQMailSender 实例的 Attachements 在发送前进行添加和维护。
3、添加 HTML 邮件内容图片
通过 EncodeMailImage 函数可以将图片直接内置邮件中,而不需要做为附件上传。EncodeMailImage 的结果直接拼接到 TQMailSender.Body 中即可,如:
AMailSender.Body := AMailSender.Body + EncodeMailImage(Image1.Picture.Graphic);
EncodeMailImage 有三个重载,用于直接支持三个不同的来源,这里不再缀述。
QSendMail 的源码请直接 SVN 检出。