我想从我的Gmail帐户中获取一封电子邮件的电子邮件正文,所以我使用此代码,我在一个示例中找到了如何使用c ++ builder pop3阅读电子邮件的代码
提取使用过的正文的代码
TIdText *EText;
int message = SpinEdit1->Value;
MyPoP3->Retrieve(message, MyEmail);
Edit1->Text = MyEmail->Subject + " | " + MyEmail->From->Address;
Memo1->Clear();
for (int i = 0; i < MyEmail->MessageParts->Count; i++) {
Memo1->Lines->Add(MyEmail->MessageParts->Items[i]->ContentType);
EText = dynamic_cast<TIdText*>(MyEmail->MessageParts->Items[i]);
Memo1->Lines->Add(EText->Body);
}
问题是我对TidText定义了未定义的符号,而我试图将其从TIdText
更改为TIdMessage
,但是我无法转换为它。
我也尝试过无循环或MyEmail->Body->Text
的东西
此返回空字符串。
我从中获取了这段代码的视频here我不知道他使用的c ++构建器可能是旧的。现在我想知道如何从电子邮件地址中提取正文。
预先感谢。
答案 0 :(得分:1)
问题是我没有为TidText定义符号
您的代码缺少#include <IdText.hpp>
语句。
我试图将其从
TIdText
更改为TIdMessage
,但我知道我无法转换为它。
因为TIdMessage
不包含嵌套的TIdMessage
对象。
我还尝试了不带循环或其他任何操作
MyEmail->Body->Text
,这会返回空字符串。
如果您的电子邮件是MIME编码的,则其文本不会存储在TIdMessage::Body
属性中,而是存储在TIdText
集合内的嵌套TIdMessage::MessageParts
对象中。您必须查看TIdMessage::ContentType
属性,才能知道电子邮件包含哪种结构。例如,如果CT以text/
开头,则文本在TIdMessage::Body
中。但是,如果CT以multipart/
开头,则该文本位于TIdMessage::MessageParts
中。
您应该阅读Indy网站上的此博客文章,以获取有关电子邮件的结构示例:
我从视频中获得了这段代码的视频在这里,我不知道他使用的c ++构建器可能是旧的。
不,不是。