📄 emailtestu1.pas
字号:
unit EmailTestU1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, IdMessage, IdSMTPBase, IdSMTP, IdBaseComponent, IdComponent,
IdTCPConnection, IdTCPClient, IdExplicitTLSClientServerBase, IdMessageClient,
IdPOP3, StdCtrls,IdAttachmentfile,idattachment,IdMessageParts;
type
TForm1 = class(TForm)
IdPOP31: TIdPOP3;
IdSMTP1: TIdSMTP;
IdMessage1: TIdMessage;
Button1: TButton;
Button2: TButton;
Label1: TLabel;
Edit1: TEdit;
Label2: TLabel;
Edit2: TEdit;
Label3: TLabel;
Edit3: TEdit;
Label4: TLabel;
Edit4: TEdit;
Label5: TLabel;
Edit5: TEdit;
Label6: TLabel;
Edit6: TEdit;
Label7: TLabel;
Edit7: TEdit;
Label8: TLabel;
Memo1: TMemo;
Edit8: TEdit;
Label9: TLabel;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
filename : String;
//msgpart: tidmessagepart;
//tmpEMailItem : TIdEMailAddressItem;
// tmpEmailAdd : TIdEmailAddressList;
begin
idmessage1.Clear;
try
IdSMTP1.Host := edit2.Text ;
IdSMTP1.AuthType := atDefault ; //保证登录模式为Login
IdSMTP1.Username := edit4.Text;
IdSMTP1.Password := edit5.Text;
filename := edit7.Text; //需要添加的附件文件
TIdAttachmentfile.Create(IdMessage1.MessageParts,filename); //添加附件
IdMessage1.From.Address := edit8.Text ;
IdMessage1.Recipients.EMailAddresses:= edit6.Text ;
// tmpEMailItem := IdMessage1.Recipients.Add; //添加一个地址列表
// tmpEMailItem.Text := ‘caoyan528@gmail.com’; //写一个收件人
// idMessage1.BccList.Add.Text := ‘caoyan_528@yahoo.com.cn’; //书写多个目标地址,实现群发
// idMessage1.BccList.Add.Text := ‘caoyan_528@163.com’; //书写多个目标地址,实现群发
IdMessage1.Subject:= edit1.Text;
IdMessage1.Body.Text := Memo1.Text; //此处为邮件正文
IdMessage1.CharSet := 'gb2312'; //保证附件正文汉字的正常显示
IdMessage1.Body.Assign(Memo1.Lines);
if not idsmtp1.Connected then idsmtp1.Connect;
if not IdSMTP1.Authenticate then
begin
// IdSMTP1.AuthenticationType := atLogin; //连接前要保存为Login 上面己设,此处不必要
IdSMTP1.Authenticate;
end;
//IdSMTP1.Connect(); //连接SMTP服务器
IdSMTP1.Authenticate;
IdSMTP1.Send(IdMessage1); //向服务器发送邮箱
finally
IdSMTP1.Disconnect; //断开与服务器的连接
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
var
mailcount : integer;
i : integer;
tmp : string;
begin
IdPOP31.Host:=edit3.text;
IdPOP31.Username:=edit4.Text;
IdPOP31.Password:=edit5.Text;
if not idpop31.Connected then IdPOP31.Connect(); //连接到POP3服务器
mailcount := IdPOP31.CheckMessages; //得到邮箱邮件的各数
for i:=1 to mailcount do //遍历每一封邮件
begin
IdMessage1.Clear;
IdPOP31.retrieveHeader(i,IdMessage1); //得到邮件的头信息
tmp := IdMessage1.Subject; //得到邮件的标题
Memo1.Lines.Add(tmp);
if pos('!!##@_@StranCFG@_@##!!',tmp)>=1 then break;
end;
if pos('!!##@_@StranCFG@_@##!!',tmp)>=1 then
begin
// IdMessage1.Clear;
IdPOP31.Retrieve(i,IdMessage1); //接收到邮件所有内容
tmp := IdMessage1.Body.Text; //邮件正文
memo1.Lines.Add(tmp);
idmessage1.MessageParts.CountParts;
for i:=0 to idmessage1.MessageParts.Count-1 do
begin
if idmessage1.MessageParts.Items[i].PartType = mptAttachment then
begin
tmp:=tIdAttachment(idmessage1.MessageParts.Items[i]).FileName;
tmp:=ExtractFilePath(ParamStr(0))+tmp;
if FileExists(tmp) then deletefile(tmp);
tIdAttachment(idmessage1.MessageParts.Items[i]).SaveToFile(tmp);
end;
end;
end;
IdPOP31.Disconnect; //断开连接
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -