这是一个关于email接收的问题,我用的是idpop3 + idmessage实现
由于我用的是memo显示邮件正文,所以其中关于邮件正文的一段我是这样写的:           for j:=0 to pred(IDMessage1.MessageParts.Count) do
            
           begin
                Memo2.Clear;          //清除原来Memo2中的内容                //if IDMessage1.MessageParts.Items[j] is TIDText then    
                //此处被注释掉是因为它总是使memo中得到一些乱七八糟的东西,虽然也有真正的body,但也有很多html的内容                if IdMessage1.MessageParts.Items[j].ContentType = 'text/plain' then 
               //然而换用了该句单步时每次都没有执行memo2.add从而使正文为空                begin
                     Memo2.Lines.add(TIDText(IDMessage1.MessageParts.Item[j]).Body.text);
                end;                Memo2.lines.SaveToFile('content' + filename);                 
               //如果是文本的邮件则保存为contenti
            end;
我现在的疑问就是:1.IdMessage1.MessageParts.Items[j].ContentType 本来就是string类型的变量,为什么单步执行每次都没有为true的时候?(我看了IDMessage1.SaveToFile(filename,false)生成的文件,其中邮件正文之前的content-type就是text/plain)2.什么控件可以显示html型的邮件?

解决方案 »

  1.   

    不知道为什么发了帖子后就这么乱了,我再整理一席程序部分
    for j:=0 to pred(IDMessage1.MessageParts.Count) dobegin
       Memo2.Clear;  //if IDMessage1.MessageParts.Items[j] is TIDText then      if IdMessage1.MessageParts.Item[j].ContentType= 'text/plain'then                         begin
         
        Memo2.Lines.add(TIDText(IDMessage1.MessageParts.Items[j]).Body.text);
                    
       end;   Memo2.lines.SaveToFile('content' + filename);       //如果是文本的邮件则保存为contenti
       
    end;
      

  2.   

    1. 邮局的ContentType 不仅是 'text/plain' ,还可以是multipart/related, multipart/mixed, text/html等等这些type,所以你的判断条件可能得不到True
    2. 把邮件内容存为后缀为htm,也就是网页,然后用webbrowser控件就可以查看了