unit U_SendEmail;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
IdMessage, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient,
IdMessageClient, IdSMTP, xmldom, XMLIntf, msxmldom, XMLDoc, U_Config,
Dialogs;
type
TSendEmail=Class(TObject)
IdSMTP1: TIdSMTP;
IdMessage1: TIdMessage;
private
public
procedure SendEmail(ReceiverPath,CopyToPath,AttachmentPath:TStringList;
FSubject,FBody,DID:String);
end;
var
FHost,FFrom,FFromName,Port,Mailer,SMTPAuth,WordWrap,Username,Password,ContentType,ReplyTo:string;
XMLDocument1 : IXMLDocument;
implementation
uses U_Connect;
procedure TSendEmail.SendEmail(ReceiverPath, CopyToPath,
AttachmentPath: TStringList; FSubject, FBody, DID: String);
var i:integer;
FFileName,ConfFilePath,AppPath:string;
PostParams : TStringList;
nodexml,RValue: IXMLNode;
begin
if ReceiverPath.Count=0 then
begin
showmessage('请选择收件人!');
exit;
end ;
AppPath:=ExtractFilePath(Application.ExeName);
ConfFilePath := AppPath+'ini\SendEmailConfigure.xml' ;
if FileExists(ConfFilePath) then
begin
XMLDocument1 := TXMLDocument.Create(nil);
try
XMLDocument1.LoadFromFile(ConfFilePath);
XMLDocument1.Encoding := 'UTF-8' ;
XMLDocument1.Active := true;
nodexml := XMLDocument1.DocumentElement.ChildNodes['mail'].ChildNodes['service'];
FHost := nodexml.ChildNodes['Host'].NodeValue;
FFrom := nodexml.ChildNodes['From'].NodeValue;
FFromName := nodexml.ChildNodes['FromName'].NodeValue;
Port := nodexml.ChildNodes['Port'].NodeValue;
Mailer := nodexml.ChildNodes['Mailer'].NodeValue;
SMTPAuth := nodexml.ChildNodes['SMTPAuth'].NodeValue;
WordWrap := nodexml.ChildNodes['WordWrap'].NodeValue;
Username := nodexml.ChildNodes['Username'].NodeValue;
Password := nodexml.ChildNodes['Password'].NodeValue;
ContentType := nodexml.ChildNodes['ContentType'].NodeValue;
ReplyTo := nodexml.ChildNodes['ReplyTo'].NodeValue;
finally
XMLDocument1 := nil;
//DocIntf := nil;
end;
end
else
begin
showmessage('缺少邮件服务器配置文件!');
exit;
end;
IdSMTP1:=TIdSMTP.Create(nil);
IdMessage1:=TIdMessage.Create(nil);
IdSMTP1.Host:=FHost;
IdSMTP1.Port:=strtoint(Port);
IdSMTP1.Username:=Username;
IdSMTP1.Password:=Password;
IdMessage1.From.Address:=FFrom; //发件人地址
IdMessage1.From.Name := FFromName;
IdMessage1.ContentType := ContentType;
IdMessage1.Subject:=FSubject; //主题
IdMessage1.Body.Text:=FBody; //内容
// IdMessage1.ReplyTo.Add.Text := ReplyTo;
try
try
IdSMTP1.Connect;
if IdSMTP1.AuthSchemesSupported.IndexOf('LOGIN')>-1 then
begin
IdSMTP1.AuthenticationType := atLogin;
IdSMTP1.Authenticate;
end;
//收件人地址列表
for i:=0 to ReceiverPath.Count-1 do
begin
IdMessage1.Recipients.Add.Text := ReceiverPath.Strings[i];
end;
//抄送地址列表
if CopyToPath.Count<>0 then
begin
for i:=0 to CopyToPath.Count-1 do
begin
//IdMessage1.BccList.Add.Text:=CopyToPath.Strings[i]; //暗送地址
IdMessage1.CCList.Add.Text := CopyToPath.Strings[i]; //抄送地址;
end;
end;
//附件
if AttachmentPath.Count=0 then FFileName:=''
else
begin
for i:=0 to AttachmentPath.Count-1 do
begin
FFileName := AttachmentPath.Strings[i];
if trim(FFileName)<>'' then
TIdAttachment.Create(IdMessage1.MessageParts,FFileName);
end;
end;
IdSMTP1.Send(IdMessage1);
Application.ProcessMessages;
showmessage('邮件发送成功!');
except
on E:Exception do
raise Exception.Create('程序在试图发送邮件时出现错误!'+#13+'出错原因:'+e.Message);
end;
finally
if IdSMTP1.Connected then
IdSMTP1.Disconnect;
end;
//--------------添加到历史记录----------------------
for i:=0 to ReceiverPath.Count-1 do
begin
PostParams:=TStringList.Create;
PostParams.Add('adminjob=delivery');
PostParams.Add('kind=history');
PostParams.Add('DID='+DID);
PostParams.Add('Msg='+'发送邮件至:'+ReceiverPath.Strings[i]);
RValue := FConnect.Post(PostParams);
end;
end;
end.
分享到:
相关推荐
在Delphi编程环境中,发送电子邮件是一项常见的任务,尤其在企业级应用中,它通常用于自动化通知、报告或者数据传输。本篇文章将详细讲解如何在Delphi中通过代码实现这一功能,包括设置抄送、密送,调整邮件优先级...
DELPHI发送邮件是一项常见的开发任务,特别是在企业级应用中,需要向用户或者特定人群发送包含数据的电子邮件。本文将详细讲解如何使用DELPHI进行邮件发送,包括连接数据库、查询数据以及将查询结果作为附件添加到...
标题 "Delphi发邮件代码" 描述的是一个使用Delphi编程语言编写的电子邮件发送和接收应用程序。这个程序可能包含了一个用户界面,允许用户输入邮件信息,包括收件人、主题和正文,并能发送附件。从描述中我们可以推断...
根据提供的Delphi发送邮件代码,我们可以总结出以下关键知识点: ### 1. 使用 IdSMTP 组件进行邮件发送 #### 1.1 初始化 IdSMTP 组件 - `IdSMTP1.AuthenticationType := atLogin;`:设置身份验证类型为登录验证。 ...
本文将详细介绍如何使用Delphi进行邮件的发送和接收,并且能够处理邮件附件。 首先,Delphi支持多种库来处理邮件功能,如Indy(Internet Direct)和Synapse等。在这里,我们主要以Indy为例,它是Delphi的一个广泛...
在本文中,我们将深入探讨如何使用Delphi编程语言发送电子邮件,特别关注"Delphi发邮件实例源码.rar"这个压缩包中的示例。这个实例基于SendDLL.dll控件,它是一个方便的第三方组件,用于在Delphi应用程序中实现邮件...
在Delphi中发送邮件是常见的需求,特别是在开发企业级应用程序时,例如自动通知、数据报告或其他服务。本篇将详细介绍如何在Delphi中使用SMTP(Simple Mail Transfer Protocol)服务器发送邮件。 首先,我们需要...
总结来说,Delphi 发邮件和群发邮件主要涉及以下步骤: 1. 引入Indy库,并实例化 `TIdSMTP` 和 `TIdMessage` 组件。 2. 配置 `TIdSMTP` 的服务器连接参数,包括Host、Port、Username和Password。 3. 使用 `...
1.支持SSL发送邮件; 2.支持32位和64位程序; 3.支持纯文本邮件和 HTML 格式邮件; 4.支持同步发送邮件和异步(线程)发送邮件 5.支持发送结果回调; 6.只需要调用一个函数,使用简单; var SMTPServer : string; ...
关于“DELPHI发送邮件源代码”的主题,我们可以深入探讨如何使用Delphi来实现邮件发送功能,这对于创建需要与用户进行电子邮件通信的应用程序至关重要。 1. **SMTP协议基础**: 发送邮件通常涉及简单邮件传输协议...
在Delphi编程环境中,发送邮件是一项常见的任务,用于与用户或服务器进行通信。"Delphi sendmail发送邮件一例"这个标题暗示我们将讨论如何在Delphi应用中利用SMTP(Simple Mail Transfer Protocol)服务来实现电子...
Delphi 实现邮件收发功能 Delphi 是一款功能强大且灵活的开发工具,通过使用 Delphi,我们可以轻松地实现邮件收发功能,并且拥有收发附件、删除邮箱中已收邮件的功能。这样,我们可以打造适合自己操作习惯的邮件...
用Delphi2010 实现邮件附件收发功能 TIdPOP3组件简介 TIdPOP3 是用来接收邮件服务器的邮件信息到用户端的一个组件。它实现了RFC 1939协议。 在使用TIdPOP3组件时需设置它的几个成员属性。 Host :指定邮件服务器,...
在这个特定的场景中,我们关注的是使用Delphi来编写一个能够发送包含图片的电子邮件的小程序,而且具备群发功能。下面将详细介绍这个主题涉及的关键知识点。 1. **SMTP协议**:SMTP(Simple Mail Transfer Protocol...
这个压缩包“Delphi发邮件(SendDLL.dll)应用例子.rar”显然是一个使用 Delphi 开发的示例项目,其中包含了一个名为 "SendDLL.dll" 的动态链接库,该库用于发送电子邮件。在这个例子中,我们将探讨如何在 Delphi ...
1. 支持SSL发送邮件; 2. 支持32位和64位程序; 3. 支持纯文本邮件和 HTML 格式邮件; 4. 支持同步发送邮件和异步(线程)发送邮件 5. 支持发送结果回调; 6. 只需要调用一个函数,使用简单;
在Delphi XE10版本中,开发人员经常会遇到与邮件系统集成的需求,例如发送邮件。本篇将深入探讨如何利用Delphi XE10与QQ 163邮箱服务器进行邮件发送,并解决在发送过程中可能出现的中文乱码问题。 首先,我们要理解...
delphi网页邮件抓发系统 delphi网页邮件抓发系统 delphi网页邮件抓发系统 delphi网页邮件抓发系统 delphi网页邮件抓发系统 delphi网页邮件抓发系统 delphi网页邮件抓发系统 delphi网页邮件抓发系统 delphi网页邮件抓...
一个简单的Delphi7.0 邮件发送示例 含源码文件,将窗口中的邮件主题、收件人、邮件标题、邮件地址等信息填写完毕后,单击按钮即可发送邮件,基于SMTP发邮件的例子。部分代码段先睹为快: Clear; Subject := Edit...