Delphi2009的Indy全接触之SMTP篇

使用TIdSMTP及TIdMessage控件实现邮件发送功能。
如下图所示新建工程:

后台代码如下:
  1. unit Unit1;
  2. interface
  3. uses
  4.   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  5.   Dialogs, StdCtrls, IdMessage, IdBaseComponent, IdComponent, IdTCPConnection,
  6.   IdTCPClient, IdExplicitTLSClientServerBase, IdMessageClient, IdSMTPBase,
  7.   IdSMTP;
  8. type
  9.   TForm1 = class(TForm)
  10.     Label1: TLabel;
  11.     Edit1: TEdit;
  12.     Label2: TLabel;
  13.     Edit2: TEdit;
  14.     Label3: TLabel;
  15.     Edit3: TEdit;
  16.     Label4: TLabel;
  17.     Edit4: TEdit;
  18.     ListBox1: TListBox;
  19.     Button1: TButton;
  20.     IdSMTP1: TIdSMTP;
  21.     IdMessage1: TIdMessage;
  22.     memoMsg: TMemo;
  23.     Label5: TLabel;
  24.     Edit5: TEdit;
  25.     Label6: TLabel;
  26.     Edit6: TEdit;
  27.     procedure FormCreate(Sender: TObject);
  28.     procedure IdSMTP1Status(ASender: TObject; const AStatus: TIdStatus;
  29.       const AStatusText: string);
  30.     procedure Button1Click(Sender: TObject);
  31.   private
  32.     { Private declarations }
  33.   public
  34.     { Public declarations }
  35.     procedure Status(AMsg: string);
  36.   end;
  37. var
  38.   Form1: TForm1;
  39. implementation
  40. {$R *.dfm}
  41. uses INIFiles;
  42. procedure TForm1.Button1Click(Sender: TObject);
  43. begin
  44.   Button1.Enabled := False;
  45.   try
  46.     with IdMessage1 do begin
  47.       Clear;
  48.       From.Text := Trim(Edit1.Text);
  49.       Recipients.Add.Text := Trim(Edit2.Text);
  50.       Subject := Trim(Edit5.Text);
  51.       Body.Assign(memoMsg.Lines);
  52.     end;
  53.     with IdSMTP1 do begin
  54.       Host := Trim(Edit6.Text);
  55.       Username := Edit3.Text;
  56.       Password := Edit4.Text;
  57.       Connect; try
  58.         Send(IdMessage1);
  59.       finally
  60.         Disconnect;
  61.       end;
  62.     end;
  63.     Status('Completed');
  64.   finally
  65.     Button1.Enabled := True;
  66.   end;
  67. end;
  68. procedure TForm1.FormCreate(Sender: TObject);
  69. var
  70.   LINIFile: string;
  71. begin
  72.   LINIFile := 'c:/SMTP.ini';
  73.   if FileExists(LINIFile) then begin
  74.     with TINIFile.Create(LINIFile) do
  75.     try
  76.       Edit1.Text := ReadString('Main''From''');
  77.       Edit2.Text := ReadString('Main''To''');
  78.       Edit3.Text := ReadString('Main''UserName''');
  79.       Edit4.Text := ReadString('Main''Password''');
  80.       Edit5.Text := ReadString('Main''Subject''');
  81.       Edit6.Text := ReadString('Main''SMTP Server''');
  82.       memoMsg.Lines.Text := ReadString('Main''Message''');
  83.     finally
  84.       Free;
  85.     end;
  86.   end;
  87. end;
  88. procedure TForm1.IdSMTP1Status(ASender: TObject; const AStatus: TIdStatus;
  89.   const AStatusText: string);
  90. begin
  91.   Status(AStatusText);
  92. end;
  93. procedure TForm1.Status(AMsg: string);
  94. begin
  95.   ListBox1.ItemIndex := ListBox1.Items.Add(AMsg);
  96.   Application.ProcessMessages;
  97.   Application.ProcessMessages;
  98.   Application.ProcessMessages;
  99. end;
  100. end.
在C盘根目录下新建文件:SMTP.ini
文件内容格式如下:
  1. [Main]
  2. From=XXXXXXXX@sina.com
  3. To=ZZZZZZZZ@hotmail.com
  4. Subject=Test
  5. SMTP Server=smtp.sina.com
  6. Message=I Miss You!
  7. UserName=XXXXXXXX
  8. Password=YYYYYYYY
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
//初始化邮件类 void InitEmail(C01waSendMail* m_globalEmail,String sendermail,String sender,String senderpwd,String srv,int port = 25,bool bSsl = false) { m_globalEmail->m_Auth = CPJNSMTPConnection::AuthenticationMethod::AUTH_AUTO; m_globalEmail->m_bAutoDial = true; m_globalEmail->m_bSSL = bSsl; m_globalEmail->m_sUsername = sender.c_str(); m_globalEmail->m_sAddress = sendermail.c_str(); m_globalEmail->m_sPassword = senderpwd.c_str(); m_globalEmail->m_sHost = srv.c_str(); m_globalEmail->m_nPort = port; m_globalEmail->m_sEncodingFriendly = _T("Chinese Simplified (GB2312)"); m_globalEmail->m_sEncodingCharset = _T("gb2312"); m_globalEmail->m_bMime = 1; m_globalEmail->m_bHTML = 1; m_globalEmail->m_Priority = CPJNSMTPMessage::PRIORITY::NormalPriority; m_globalEmail->m_bDSN = FALSE; m_globalEmail->m_bDSNSuccess = FALSE; m_globalEmail->m_bDSNFailure = FALSE; m_globalEmail->m_bDSNDelay = FALSE; m_globalEmail->m_bDSNHeaders = FALSE; m_globalEmail->m_bDNSLookup = FALSE; } //发送邮件 void SendEmail(const char* recvemail,const char* subject,const char* body,const char * sCC=NULL,const char * bCC = NULL,const char * attach = NULL) { //初始化邮箱 //注意释放内存 C01waSendMail *m_globalEmail = new C01waSendMail; if(strlen(m_con1.m_eamil)>0&&strlen(m_con1.m_pwd)&&strlen(m_con1.m_smtpsrv)&&m_con1.port>0) { char * p = strdup(m_con1.m_eamil); char * pp = strstr(p,"@"); if(pp>0) pp[0] = '\0'; InitEmail(m_globalEmail,m_con1.m_eamil,p,m_con1.m_pwd,m_con1.m_smtpsrv,m_con1.port,m_con1.ssl); free(p); if(subject>0) m_globalEmail->m_sSubject.Format("%s",subject); if(sCC>0) m_globalEmail->m_sCC.Format("%s",sCC); if(bCC>0) m_globalEmail->m_sBCC.Format("%s",bCC); if(body>0) m_globalEmail->m_sBody.Format("%s",body); if(attach>0) m_globalEmail->m_sFile.Format("%s",attach); if(recvemail>0) m_globalEmail->m_sTo.Format("%s",recvemail); m_globalEmail->SendEmail(); } }
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值