`

delphi 发送邮件

 
阅读更多

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发邮件代码

    标题 "Delphi发邮件代码" 描述的是一个使用Delphi编程语言编写的电子邮件发送和接收应用程序。这个程序可能包含了一个用户界面,允许用户输入邮件信息,包括收件人、主题和正文,并能发送附件。从描述中我们可以推断...

    delphi发送邮件代码

    根据提供的Delphi发送邮件代码,我们可以总结出以下关键知识点: ### 1. 使用 IdSMTP 组件进行邮件发送 #### 1.1 初始化 IdSMTP 组件 - `IdSMTP1.AuthenticationType := atLogin;`:设置身份验证类型为登录验证。 ...

    Delphi收发邮件例子代码

    本文将详细介绍如何使用Delphi进行邮件的发送和接收,并且能够处理邮件附件。 首先,Delphi支持多种库来处理邮件功能,如Indy(Internet Direct)和Synapse等。在这里,我们主要以Indy为例,它是Delphi的一个广泛...

    Delphi发邮件实例源码.rar

    在本文中,我们将深入探讨如何使用Delphi编程语言发送电子邮件,特别关注"Delphi发邮件实例源码.rar"这个压缩包中的示例。这个实例基于SendDLL.dll控件,它是一个方便的第三方组件,用于在Delphi应用程序中实现邮件...

    delphi发送邮件

    在Delphi中发送邮件是常见的需求,特别是在开发企业级应用程序时,例如自动通知、数据报告或其他服务。本篇将详细介绍如何在Delphi中使用SMTP(Simple Mail Transfer Protocol)服务器发送邮件。 首先,我们需要...

    Delphi 发邮件

    总结来说,Delphi 发邮件和群发邮件主要涉及以下步骤: 1. 引入Indy库,并实例化 `TIdSMTP` 和 `TIdMessage` 组件。 2. 配置 `TIdSMTP` 的服务器连接参数,包括Host、Port、Username和Password。 3. 使用 `...

    Delphi 发送HTML格式邮件和纯文本邮件源代码,支持SSL,包含SSL所需要的动态库,是后台进行邮件注册认证的必备!

    1.支持SSL发送邮件; 2.支持32位和64位程序; 3.支持纯文本邮件和 HTML 格式邮件; 4.支持同步发送邮件和异步(线程)发送邮件 5.支持发送结果回调; 6.只需要调用一个函数,使用简单; var SMTPServer : string; ...

    DELPHI发送邮件源代码

    关于“DELPHI发送邮件源代码”的主题,我们可以深入探讨如何使用Delphi来实现邮件发送功能,这对于创建需要与用户进行电子邮件通信的应用程序至关重要。 1. **SMTP协议基础**: 发送邮件通常涉及简单邮件传输协议...

    Delphi sendmail发送邮件一例

    在Delphi编程环境中,发送邮件是一项常见的任务,用于与用户或服务器进行通信。"Delphi sendmail发送邮件一例"这个标题暗示我们将讨论如何在Delphi应用中利用SMTP(Simple Mail Transfer Protocol)服务来实现电子...

    Delphi下实现邮件收发功能

    Delphi 实现邮件收发功能 Delphi 是一款功能强大且灵活的开发工具,通过使用 Delphi,我们可以轻松地实现邮件收发功能,并且拥有收发附件、删除邮箱中已收邮件的功能。这样,我们可以打造适合自己操作习惯的邮件...

    用Delphi2010 实现邮件附件收发功能

    用Delphi2010 实现邮件附件收发功能 TIdPOP3组件简介 TIdPOP3 是用来接收邮件服务器的邮件信息到用户端的一个组件。它实现了RFC 1939协议。 在使用TIdPOP3组件时需设置它的几个成员属性。 Host :指定邮件服务器,...

    delphi发送图片邮件

    在这个特定的场景中,我们关注的是使用Delphi来编写一个能够发送包含图片的电子邮件的小程序,而且具备群发功能。下面将详细介绍这个主题涉及的关键知识点。 1. **SMTP协议**:SMTP(Simple Mail Transfer Protocol...

    Delphi发邮件(SendDLL.dll)应用例子.rar

    这个压缩包“Delphi发邮件(SendDLL.dll)应用例子.rar”显然是一个使用 Delphi 开发的示例项目,其中包含了一个名为 "SendDLL.dll" 的动态链接库,该库用于发送电子邮件。在这个例子中,我们将探讨如何在 Delphi ...

    Delphi开发的支持SSL并且可以发送HTML格式邮件的EXE程序(Send-Mail.exe)

    1. 支持SSL发送邮件; 2. 支持32位和64位程序; 3. 支持纯文本邮件和 HTML 格式邮件; 4. 支持同步发送邮件和异步(线程)发送邮件 5. 支持发送结果回调; 6. 只需要调用一个函数,使用简单;

    Delphi XE10 QQ 163 发送邮件

    在Delphi XE10版本中,开发人员经常会遇到与邮件系统集成的需求,例如发送邮件。本篇将深入探讨如何利用Delphi XE10与QQ 163邮箱服务器进行邮件发送,并解决在发送过程中可能出现的中文乱码问题。 首先,我们要理解...

    delphi网页邮件抓发系统.zip

    delphi网页邮件抓发系统 delphi网页邮件抓发系统 delphi网页邮件抓发系统 delphi网页邮件抓发系统 delphi网页邮件抓发系统 delphi网页邮件抓发系统 delphi网页邮件抓发系统 delphi网页邮件抓发系统 delphi网页邮件抓...

    Delphi 邮件发送示例 含源码文件.rar

    一个简单的Delphi7.0 邮件发送示例 含源码文件,将窗口中的邮件主题、收件人、邮件标题、邮件地址等信息填写完毕后,单击按钮即可发送邮件,基于SMTP发邮件的例子。部分代码段先睹为快:  Clear;  Subject := Edit...

Global site tag (gtag.js) - Google Analytics