Delphi - Indy idMessage和idSMTP實現郵件的發送

這篇文章主要介紹了Delphi - Indy idMessage和idSMTP實現郵件的發送,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑑價值,需要的朋友可以參考下

idMessage / idSMTP

首先對idMessage類的各種屬性進行賦值(郵件的基本信息,如收件人、郵件主題、郵件正文等),其次通過idSMTP連接郵箱服務器,最後通過idSMTP的Send方法將idMessage發送出去。

界面佈局如下:

代碼如下:

unit uMain;
interface
uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, ExtCtrls, RzPanel, RzShellDialogs, IdMessage, IdBaseComponent,
 IdComponent, IdTCPConnection, IdTCPClient, IdMessageClient, IdSMTP,
 RzButton, StdCtrls, RzEdit, RzBtnEdt, Mask, RzLabel;
type
 TMainFrm = class(TForm)
  gbMsgSet: TRzGroupBox;
  gbSrvSet: TRzGroupBox;
  lbSubject: TRzLabel;
  lbRsd: TRzLabel;
  lbCc: TRzLabel;
  lbBCc: TRzLabel;
  lbAth: TRzLabel;
  lbBdy: TRzLabel;
  lbUserName: TRzLabel;
  lbHost: TRzLabel;
  lbPsd: TRzLabel;
  edtSub: TRzEdit;
  edtRsd: TRzEdit;
  edtCc: TRzEdit;
  edtBCc: TRzEdit;
  beAth: TRzButtonEdit;
  mmBdy: TRzMemo;
  btnSendMail: TRzBitBtn;
  edtUN: TRzEdit;
  edtHst: TRzEdit;
  edtPsd: TRzEdit;
  IdSMTP: TIdSMTP;
  IdMessage: TIdMessage;
  odMain: TRzOpenDialog;
  procedure beAthButtonClick(Sender: TObject);
  procedure btnSendMailClick(Sender: TObject);
 private
  { Private declarations }
 public
  { Public declarations }
 end;
var
 MainFrm: TMainFrm;
implementation
{$R *.dfm}
procedure TMainFrm.beAthButtonClick(Sender: TObject);
begin
 with odMain do
 begin
  Execute;
  if FileName <> '' then
  begin
   beAth.Text := FileName;
  end;
 end;
end;
procedure TMainFrm.btnSendMailClick(Sender: TObject);
begin
 try
  if (Trim(edtCc.Text) = '') and (Trim(edtRsd.Text) = '') and (Trim(edtBCc.Text) = '') then
  begin
   MessageDlg('You should input Rsd, please check,thanks!', mtInformation, [mbOK], 0);
   edtRsd.SetFocus;
   Exit;
  end;
  with IdMessage do
  begin
   Clear;
   Subject := edtSub.Text;
   From.Text := edtUN.Text;
   Recipients.EMailAddresses := edtRsd.Text;
   CCList.EMailAddresses := edtCC.Text;
   BccList.EMailAddresses := edtBCc.Text;
   Priority := TIdMessagePriority(4);
   if Trim(beAth.Text) <> '' then
   begin
    TIdAttachment.Create(MessageParts, Trim(beAth.Text));
   end;
   Body.Assign(mmBdy.Lines);
  end;
 except
  on E: Exception do
  begin
   MessageDlg('Msg Set Failed with Err information [' + E.Message + ']', mtWarning, [mbOK], 0);
   Exit;
  end;
 end;
 try
  if (Trim(edtUN.Text) = '') or (Trim(edtHst.Text) = '') or (Trim(edtPsd.Text) = '') then
  begin
   MessageDlg('You should input UN, please check,thanks!', mtInformation, [mbOK], 0);
   edtUN.SetFocus;
   Exit;
  end;
  with IdSMTP do
  begin
   if Connected then Disconnect;
   AuthenticationType := atLogin;
   Port := 25;
   UserName := edtUN.Text;
   Password := edtPsd.Text;
   Host := edtHst.Text;
   Connect;
  end;
 except
  on E: Exception do
  begin
   MessageDlg('Srv Set Failed with Err information [' + E.Message + ']', mtWarning, [mbOK], 0);
   Exit;
  end;
 end;
 try
  IdSMTP.Send(IdMessage);
  IdSMTP.Disconnect;
  MessageDlg('OK!', mtInformation, [mbOK], 0);
 except
  on E: Exception do
  begin
   MessageDlg('Send Failed with Err information [' + E.Message + ']', mtWarning, [mbOK], 0);
   Exit;
  end;
 end;
end;

end.

總結

以上所述是小編給大家介紹的Delphi - Indy idMessage和idSMTP實現郵件的發送,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回覆大家的。在此也非常感謝大家對神馬文庫網站的支持!
如果你覺得本文對你有幫助,歡迎轉載,煩請註明出處,謝謝!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章