当前位置: 移动技术网 > IT编程>开发语言>Delphi > Delphi - Indy TIdMessage和TIdSMTP实现邮件的发送

Delphi - Indy TIdMessage和TIdSMTP实现邮件的发送

2019年08月29日  | 移动技术网IT编程  | 我要评论

idmessage / idsmtp

首先对idmessage类的各种属性进行赋值(邮件的基本信息,如收件人、邮件主题、邮件正文等),其次通过idsmtp连接邮箱服务器,最后通过idsmtp的send方法将idmessage发送出去。

界面布局如下: 

代码如下:

  1 unit umain;
  2 
  3 interface
  4 
  5 uses
  6   windows, messages, sysutils, variants, classes, graphics, controls, forms,
  7   dialogs, extctrls, rzpanel, rzshelldialogs, idmessage, idbasecomponent,
  8   idcomponent, idtcpconnection, idtcpclient, idmessageclient, idsmtp,
  9   rzbutton, stdctrls, rzedit, rzbtnedt, mask, rzlabel;
 10 
 11 type
 12   tmainfrm = class(tform)
 13     gbmsgset: trzgroupbox;
 14     gbsrvset: trzgroupbox;
 15     lbsubject: trzlabel;
 16     lbrsd: trzlabel;
 17     lbcc: trzlabel;
 18     lbbcc: trzlabel;
 19     lbath: trzlabel;
 20     lbbdy: trzlabel;
 21     lbusername: trzlabel;
 22     lbhost: trzlabel;
 23     lbpsd: trzlabel;
 24     edtsub: trzedit;
 25     edtrsd: trzedit;
 26     edtcc: trzedit;
 27     edtbcc: trzedit;
 28     beath: trzbuttonedit;
 29     mmbdy: trzmemo;
 30     btnsendmail: trzbitbtn;
 31     edtun: trzedit;
 32     edthst: trzedit;
 33     edtpsd: trzedit;
 34     idsmtp: tidsmtp;
 35     idmessage: tidmessage;
 36     odmain: trzopendialog;
 37     procedure beathbuttonclick(sender: tobject);
 38     procedure btnsendmailclick(sender: tobject);
 39   private
 40     { private declarations }
 41   public
 42     { public declarations }
 43   end;
 44 
 45 var
 46   mainfrm: tmainfrm;
 47 
 48 implementation
 49 
 50 {$r *.dfm}
 51 
 52 procedure tmainfrm.beathbuttonclick(sender: tobject);
 53 begin
 54   with odmain do
 55   begin
 56     execute;
 57     if filename <> '' then
 58     begin
 59       beath.text := filename;
 60     end;
 61   end;
 62 end;
 63 
 64 procedure tmainfrm.btnsendmailclick(sender: tobject);
 65 begin
 66   try
 67     if (trim(edtcc.text) = '') and (trim(edtrsd.text) = '') and (trim(edtbcc.text) = '') then
 68     begin
 69       messagedlg('you should input rsd, please check,thanks!', mtinformation, [mbok], 0);
 70       edtrsd.setfocus;
 71       exit;
 72     end;
 73     with idmessage do
 74     begin
 75       clear;
 76       subject := edtsub.text;
 77       from.text := edtun.text;
 78       recipients.emailaddresses := edtrsd.text;
 79       cclist.emailaddresses := edtcc.text;
 80       bcclist.emailaddresses := edtbcc.text;
 81       priority := tidmessagepriority(4);
 82       if trim(beath.text) <> '' then
 83       begin
 84         tidattachment.create(messageparts, trim(beath.text));
 85       end;
 86       body.assign(mmbdy.lines);
 87     end;
 88   except
 89     on e: exception do
 90     begin
 91       messagedlg('msg set failed with err information [' + e.message + ']', mtwarning, [mbok], 0);
 92       exit;
 93     end;
 94   end;
 95   try
 96     if (trim(edtun.text) = '') or (trim(edthst.text) = '') or (trim(edtpsd.text) = '') then
 97     begin
 98       messagedlg('you should input un, please check,thanks!', mtinformation, [mbok], 0);
 99       edtun.setfocus;
100       exit;
101     end;
102     with idsmtp do
103     begin
104       if connected then disconnect;
105       authenticationtype := atlogin;
106       port := 25;
107       username := edtun.text;
108       password := edtpsd.text;
109       host := edthst.text;
110       connect;
111     end;
112   except
113     on e: exception do
114     begin
115       messagedlg('srv set failed with err information [' + e.message + ']', mtwarning, [mbok], 0);
116       exit;
117     end;
118   end;
119 
120   try
121     idsmtp.send(idmessage);
122     idsmtp.disconnect;
123     messagedlg('ok!', mtinformation, [mbok], 0);
124   except
125     on e: exception do
126     begin
127       messagedlg('send failed with err information [' + e.message + ']', mtwarning, [mbok], 0);
128       exit;
129     end;
130   end;
131 
132 end;
133 
134 end.

 

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网