NMPOP3的DeleteMailMessage如何使用(200分)

  • 主题发起人 主题发起人 wrgao
  • 开始时间 开始时间
W

wrgao

Unregistered / Unconfirmed
GUEST, unregistred user!
在NMPOP3控件中,如果将DeleteOnRead属性设置为TRUE,则在执行GetMailMessage方法的时候,产生返回message为'+OK'的异常
如果使用DeleteMailMessage方法时,也产生这个异常.请问如何处理?
即如何将一个邮件从Email服务器上删除
 
不会是你自己搞错了,不是有例子吗?
DeleteMailMessage方法时,当然是要返回ok了,你还想要err?
 
郑重推荐:SakMail控件,扔掉NM控件吧,太差了。
如果你一定要用呢,呵呵,返回OK是正常的。
 
当执行DeleteMailMessage时,产生一个异常
如不处理,导致程序退出
该异常返回的信息是"+OK"
而且实际上该邮件仍然存储在邮件服务器上
没有被删除.
 
你把程序贴出来看看,否则也不知道你出错在哪里。
 
NMPOP31.AttachFilePath := Edit4.Text;
NMPOP31.DeleteOnRead := True;
NMPOP31.ReportLevel := Status_Basic;
NMPOP31.TimeOut := 20000;
NMPOP31.Host := TJMail.Strings[5];
NMPOP31.Port := 110;
NMPOP31.UserID := TJMail.Strings[9];
NMPOP31.Password := TJMail.Strings[11];
if not NMPOP31.Connected then
begin
NMPOP31.Connect;
if NMPOP31.MailCount>0 then
begin
for i:=NMPOP31.MailCount downto 1 do
begin
NMPOP31.GetMailMessage(i);
Edit1.Text := NMPOP31.MailMessage.From;
Edit2.Text := NMPOP31.MailMessage.Subject;
Memo1.Lines.Add('标题:'+NMPOP31.MailMessage.Subject);
Memo1.Lines.Add('正文:');
Memo1.Lines.AddStrings(NMPOP31.MailMessage.Body);
Memo1.Lines.Add('附件:');
Memo1.Lines.AddStrings(NMPOP31.MailMessage.Attachments);
Memo1.Lines.Add('');
NMPOP31.DeleteMailMessage(i);
end;
end;
NMPOP31.Disconnect;
end;

当执行NMPOP3.DeleteMailMessage(i)时
程序产生一个异常
 
NMPOP31.DeleteOnRead := True;
~~~~~~~~~~~~~~~~
你都DeleteOnRead了,还手工删它干吗?就这里出错了。
 
DreamTiger是对的。deleteonread执行完后,msg已被删除了。
 
建议用sakemail
 
就是,dreamtiger是对的,你要手工删除,就将NMPOP31.DeleteOnRead :=False;
不就行了
 
诸位大侠谁有sakemail控件劳烦寄给小弟一份!

我的E_mail:xubaoqiang@china.com
 
procedure TForm1.Button2Click(Sender: TObject);
begin
if MessageDlg('真的要删除 ' + (ListBox1.Items.Text) + '?',mtConfirmation, [mbYes, mbNo], 0) = mrYes then
nmpop31.Deletemailmessage(listbox1.itemindex+1);

end;
我是这样做的,一点问题没有,这时DeleteOnRead:=false;
 
接受答案了.
 
后退
顶部