Delphi - Indy idMessage和idSMTP实现邮件的发送
2021-02-06 08:13
标签:pre zsh body open user port list put word idMessage / idSMTP 首先对idMessage类的各种属性进行赋值(邮件的基本信息,如收件人、邮件主题、邮件正文等),其次通过idSMTP连接邮箱服务器,最后通过idSMTP的Send方法将idMessage发送出去。 界面布局如下: 代码如下: Delphi - Indy idMessage和idSMTP实现邮件的发送 标签:pre zsh body open user port list put word 原文地址:https://www.cnblogs.com/jeremywucnblog/p/11427658.html 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.
文章标题:Delphi - Indy idMessage和idSMTP实现邮件的发送
文章链接:http://soscw.com/essay/51652.html