delphi – 如何从某个IMAP邮箱获取所有电子邮件的正文文本?
发布时间:2020-12-15 09:33:42 所属栏目:大数据 来源:网络整理
导读:如何从Delphi中的某个IMAP邮箱获取所有电子邮件的正文文本?例如,从INBOX邮箱? 解决方法 有许多方法可以从所选邮箱中检索所有邮件的所有正文.我已经使用了那个,你在邮箱中迭代邮箱,每个邮箱中的邮件是 Retrieve .这种方式允许您修改代码,这样您就可以在需要
如何从Delphi中的某个IMAP邮箱获取所有电子邮件的正文文本?例如,从INBOX邮箱?
解决方法
有许多方法可以从所选邮箱中检索所有邮件的所有正文.我已经使用了那个,你在邮箱中迭代邮箱,每个邮箱中的邮件是
Retrieve .这种方式允许您修改代码,这样您就可以在需要时打破循环,例如在
RetrievePeek 之前替换
Retrieve ,它不会像上面提到的那样将消息标记为在服务器上读取.当从服务器检索消息时,它的所有部分都被迭代,当它是文本部分时,它的主体被附加到本地S变量.迭代后,S变量将添加到输出BodyTexts字符串列表中.因此,作为结果,您将获得字符串列表集合,其中每个项目由连接消息的文本部分主体组成,并且每个项目表示一条消息.
uses IdIMAP4,IdSSLOpenSSL,IdText,IdMessage,IdExplicitTLSClientServerBase; procedure GetGmailBodyTextParts(const UserName,Password: string; BodyTexts: TStrings); var S: string; MsgIndex: Integer; MsgObject: TIdMessage; PartIndex: Integer; IMAPClient: TIdIMAP4; OpenSSLHandler: TIdSSLIOHandlerSocketOpenSSL; begin BodyTexts.Clear; IMAPClient := TIdIMAP4.Create(nil); try OpenSSLHandler := TIdSSLIOHandlerSocketOpenSSL.Create(nil); try OpenSSLHandler.SSLOptions.Method := sslvSSLv3; IMAPClient.IOHandler := OpenSSLHandler; IMAPClient.Host := 'imap.gmail.com'; IMAPClient.Port := 993; IMAPClient.UseTLS := utUseImplicitTLS; IMAPClient.Username := UserName; IMAPClient.Password := Password; IMAPClient.Connect; try if IMAPClient.SelectMailBox('INBOX') then begin BodyTexts.BeginUpdate; try for MsgIndex := 1 to IMAPClient.MailBox.TotalMsgs do begin MsgObject := TIdMessage.Create(nil); try S := ''; IMAPClient.Retrieve(MsgIndex,MsgObject); MsgObject.MessageParts.CountParts; if MsgObject.MessageParts.TextPartCount > 0 then begin for PartIndex := 0 to MsgObject.MessageParts.Count - 1 do if MsgObject.MessageParts[PartIndex] is TIdText then S := S + TIdText(MsgObject.MessageParts[PartIndex]).Body.Text; BodyTexts.Add(S); end else BodyTexts.Add(MsgObject.Body.Text); finally MsgObject.Free; end; end; finally BodyTexts.EndUpdate; end; end; finally IMAPClient.Disconnect; end; finally OpenSSLHandler.Free; end; finally IMAPClient.Free; end; end; 此代码需要OpenSSL,因此不要忘记将libeay32.dll和ssleay32.dll库放到项目可见的路径中;您可以在不同版本和平台 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |