if (IdMessage1.MessageParts.Items[i] is TIdAttachment) then begin TIdAttachment(Message2000.MessageParts.Items[i]).SaveToFile()//是附件,存起来 inc(Attachmentcount); //是附件统统给哥加起来。 end 弱弱的问一句,上面给的方法成不成? 就是那个用这个 TIdAttachment.Create(IdMessage1.MessageParts,filename); 这玩意有保存 TIdAttachment(IdMessage1.MessageParts.Items[i]).SaveToFile()来收附件的我希望你给我全分。我不容易啊。给你倒腾的,累啊。呵呵。
if (IdMessage1.MessageParts.Items[i] is TIdAttachment) then begin inc(Attachmentcount); //如果是附件那么Attachmentcount+1 end 最后得到的Attachmentcount则是总数。 然后你拿这个Attachmentcount随便做你要做的什么,你要做循环就去做啊 for i:=1 to Attachmentcount do begin //做你要做的。 end;你可以得到这个数目之后再保存啊。没必要和我写的那个一样啊。变通,我们需要的是变通。if (IdMessage1.MessageParts.Items[i] is TIdAttachment) then begin TIdAttachment(Message2000.MessageParts.Items[i]).SaveToFile()//是附件,存起来 end 你觉得呢?
var
filename:string;
begin
if idsmtp1.Connected then
idsmtp1.Disconnect
else
begin
idsmtp1.Host := 'smtp.usish.com';
idsmtp1.Username := 'huang_xiao';
idsmtp1.Password:='huang';
idsmtp1.authenticationtype:=atlogin;
idsmtp1.Port:=25;
idsmtp1.Connect;
end;
idmessage1.From.Address:='[email protected]';
idmessage1.Recipients.EMailAddresses:='[email protected]';
idmessage1.From.Name:='THOMAS';
idmessage1.Subject:='test';
idmessage1.Body.Text:='hengheng';
filename := 'c:\x.ods';
TIdAttachment.Create(IdMessage1.MessageParts,filename);
idsmtp1.Send(idmessage1);
end;
1、创建工程,在窗体中加入IdSMTP1、IdMessage1和IdPOP31(Indy控件标签组)控件各一个。 2、设置 IdSMTP1.Host := 'SMTP.163.com';(我用的是163检试,具体也可选择其它服务器) IdSMTP1.Username := 'caoyan528';(此处即表示邮箱的帐号名,例如邮箱为:[email protected],则Username即为aaaaaa) IdSMTP1.Password := 'XXXXXXXX';(此处即为邮箱的密码,如[email protected]邮箱密码为123456,则Password即为123456)。 3、设置IdMessage1.From.Address := '[email protected]';(注意,此处的邮箱地址应在smtp.163.com中存在且就为以上设置的Username),IdMessage1.Recipients.EMailAddresses := ‘[email protected]’(此处表示收件人地址,只要是任何一个存在的邮箱地址即可) IdMessage1.Subject:= '第一个邮件客户端';(主题)具体源代码如下:procedure TForm1.Button4Click(Sender: TObject);
var
filename : String; tmpEMailItem : TIdEMailAddressItem;
// tmpEmailAdd : TIdEmailAddressList;
begin
try
IdSMTP1.Host := 'SMTP.163.com'; IdSMTP1.AuthenticationType := atLogin; //保证登录模式为Login
IdSMTP1.Username := 'caoyan_528';
IdSMTP1.Password := 'XXXXXX';
filename := 'E:\邮件发送程序\2003-12-22_253_04.jpg'; //需要添加的附件文件
TIdAttachment.Create(IdMessage1.MessageParts,filename); //添加附件 IdMessage1.From.Address := '[email protected]';
IdMessage1.Recipients.EMailAddresses:='[email protected]'; tmpEMailItem := IdMessage1.Recipients.Add; //添加一个地址列表 tmpEMailItem.Text := '[email protected]'; //写一个收件人 idMessage1.BccList.Add.Text := '[email protected]'; //书写多个目标地址,实现群发 idMessage1.BccList.Add.Text := '[email protected]'; //书写多个目标地址,实现群发
IdMessage1.Subject:= '第一个邮件客户端';
IdMessage1.Body.Text := Memo1.Text; //此处为邮件正文 IdMessage1.CharSet := 'gb2312'; //保证附件正文汉字的正常显示
IdMessage1.Body.Assign(Memo1.Lines);
if IdSMTP1.AuthSchemesSupported.IndexOf('LOGIN')>-1 then
begin
IdSMTP1.AuthenticationType := atLogin; //连接前要保存为Login 上面己设,此处不必要
IdSMTP1.Authenticate;
end; IdSMTP1.Connect(); //连接SMTP服务器
IdSMTP1.Authenticate;
IdSMTP1.Send(IdMessage1); //向服务器发送邮箱
finally
IdSMTP1.Disconnect; //断开与服务器的连接
end;
end;自此,memo1中所写的内容被当作邮件发送了出去。而filename所指的附件也一同被发送到了服务器。
4、接收邮件收以上的流程图不难看出,接收邮件完全是POP3服务器来完成的,客户只需连接到POP3服务器即可下载邮件。具体做法如下:设置IdPOP31.Host := POP.163.com IdPOP31.Username := 'caoyan_528'; IdPOP31.Password:= 'XXXXX'; (此处的设置与SMTP的设置相同) 源代码如下:procedure TForm1.Button5Click(Sender: TObject);
var
mailcount : integer;
i : integer;
tmp : string;
begin
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);
IdPOP31.Retrieve(i,IdMessage1); //接收到邮件所有内容
tmp := IdMessage1.Body.Text; //邮件正文
memo1.Lines.Add(tmp);
end;
IdPOP31.Disconnect; //断开连接
end;
这玩意有保存
TIdAttachment(Message2000.MessageParts.Items[i]).SaveToFile()来收附件的
if (IdMessage1.MessageParts.Items[i] is TIdAttachment) then
begin
TIdAttachment(Message2000.MessageParts.Items[i]).SaveToFile()//是附件,存起来
inc(Attachmentcount); //是附件统统给哥加起来。
end 弱弱的问一句,上面给的方法成不成?
就是那个用这个 TIdAttachment.Create(IdMessage1.MessageParts,filename);
这玩意有保存
TIdAttachment(IdMessage1.MessageParts.Items[i]).SaveToFile()来收附件的我希望你给我全分。我不容易啊。给你倒腾的,累啊。呵呵。
Attachmentcount:integer; //保存附件个数
if (IdMessage1.MessageParts.Items[i] is TIdAttachment) then
begin
inc(Attachmentcount); //如果是附件那么Attachmentcount+1
end 最后得到的Attachmentcount则是总数。
然后你拿这个Attachmentcount随便做你要做的什么,你要做循环就去做啊
for i:=1 to Attachmentcount do
begin
//做你要做的。
end;你可以得到这个数目之后再保存啊。没必要和我写的那个一样啊。变通,我们需要的是变通。if (IdMessage1.MessageParts.Items[i] is TIdAttachment) then
begin
TIdAttachment(Message2000.MessageParts.Items[i]).SaveToFile()//是附件,存起来
end 你觉得呢?