发送邮件

unit Ufsmtp;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient,
  IdMessageClient, IdSMTP, StdCtrls, ExtCtrls, IdMessage,IniFiles, Buttons,
  ComCtrls;

type
  TForm1 = class(TForm)
    IdSMTP1: TIdSMTP;
    Panel1: TPanel;
    Panel2: TPanel;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    IdMessage1: TIdMessage;
    Label8: TLabel;
    Button1: TButton;
    Memo1: TMemo;
    OpenDialog1: TOpenDialog;
    GroupBox1: TGroupBox;
    Label10: TLabel;
    Label11: TLabel;
    Label12: TLabel;
    Edit5: TEdit;
    Edit6: TEdit;
    Edit7: TEdit;
    Label13: TLabel;
    Edit8: TEdit;
    grpAttachment: TGroupBox;
    lvFiles: TListView;
    btnAttachment: TBitBtn;
    IdMsgSend: TIdMessage;
    Edit9: TEdit;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure btnAttachmentClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    procedure ReadConfiguration;
    procedure ResetAttachmentListView;
  end;

var
  Form1: TForm1;
   SmtpServerName: String;
   SmtpServerPort: Integer;
   SmtpServerUser: String;
   SmtpServerPassword: String;
   SmtpAuthType: Integer;
   UserEmail: String;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
ReadConfiguration;
 end;

procedure TForm1.ReadConfiguration;
var
  MailIni: TIniFile;
begin
  MailIni := TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'Mail.ini');
  with MailIni do begin

    SmtpServerName := ReadString('Smtp', 'ServerName', 'smtp.server.com');
    SmtpServerPort := StrToInt(ReadString('Smtp', 'ServerPort', '25'));
    SmtpServerUser := ReadString('Smtp', 'ServerUser', 'your_login');
    SmtpServerPassword := ReadString('Smtp', 'ServerPassword', 'your_password');
    SmtpAuthType := ReadInteger('Smtp', 'SMTPAuthenticationType', 0);

    UserEmail := ReadString('Email', 'PersonalEmail', 'allen@springboardtechnologies.ie');
  end;
  MailIni.Free;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  try
    IdSMTP1.AuthenticationType:=atLogin; //设置登陆类型
    IdSMTP1.Username:=Edit1.Text; //设置登陆帐号
    IdSMTP1.Password:=Edit2.Text; //设置登陆密码
    IdSMTP1.Host:=Edit3.Text; //设置SMTP地址
    IdSMTP1.Port:=strtoint(Edit4.Text); //设置端口  必须转化为整型
    IdSMTP1.Connect;       //开始连接服务器
  except
    Showmessage('连接失败,请重试!');
    Exit; //连接失败 的话 退出该执行过程
  end;

  IdMessage1.Body.Clear;  //先清空上次发送的内容
  IdMessage1.MessageParts.Clear;   //   附件
  IdMessage1.Subject:=Edit5.Text;  //设置邮件发送的标题
  IdMessage1.Body.Assign(Memo1.Lines);  //设置邮件发送的主体
  IdMessage1.From.Address:=Edit6.Text; //设置邮件的发件人  也就是说该邮件来自什么地方
  IdMessage1.Recipients.EMailAddresses:=Edit7.Text;  //收件人的地址
  IdMessage1.CCList.EMailAddresses := Edit8.Text; //抄送

  //if FileExists(edit7.Text) then
  // begin
    //  TIdAttachment.Create(IdMessage1.MessageParts,edit9.Text);
       //TIdAttachment.Create(IdMessage1.MessageParts,edit9.Text);
 // end;

  try
    idSMTP1.Send(IdMessage1);
    idSMTP1.Disconnect;
    Showmessage('邮件发送成功!');
  except
    idSMTP1.Disconnect;
    Showmessage('邮件发送失败!');
  end;
end;

procedure TForm1.btnAttachmentClick(Sender: TObject);
begin
         if OpenDialog1.Execute then
      begin
         TIdAttachment.Create(IdMsgSend.MessageParts, OpenDialog1.FileName);
         ResetAttachmentListView;
      end;
end;

procedure TForm1.ResetAttachmentListView;
var li: TListItem;
   idx: Integer;
begin
   lvFiles.Items.Clear;
   for idx := 0 to Pred(IdMsgSend.MessageParts.Count) do
      begin
         li := lvFiles.Items.Add;
         if IdMsgSend.MessageParts.Items[idx] is TIdAttachment then
            begin
               li.ImageIndex := 0;
               li.Caption := TIdAttachment(IdMsgSend.MessageParts.Items[idx]).Filename;
               li.SubItems.Add(TIdAttachment(IdMsgSend.MessageParts.Items[idx]).ContentType);
            end
         else
            begin
               li.ImageIndex := 1;
               li.Caption := IdMsgSend.MessageParts.Items[idx].ContentType;
            end;
      end;
end;

end.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值