如何在 Outlook 中读取 Internet 标题和电子邮件
Posted
技术标签:
【中文标题】如何在 Outlook 中读取 Internet 标题和电子邮件【英文标题】:How to read Internet header of and email in outlook 【发布时间】:2017-03-11 19:20:26 【问题描述】:我尝试阅读电子邮件 Internet 标头,我们可以在 Outlook 应用程序的电子邮件属性中查看它 我问是否有一个选项,所以我可以得到这个我使用这个代码来阅读 Outlook 中的电子邮件
Outlook::Application outlook;
if (!outlook.isNull())
Outlook::NameSpace session(outlook.Session());
session.Logon();
Outlook::MAPIFolder *folder = session.GetDefaultFolder(Outlook::olFolderInbox);
Outlook::Items* mails = new Outlook::Items(folder->Items());
mails->Sort("ReceivedTime");
int num = mails->Count();
ui->label->setText(QString("I have %1 of messages").arg(QString::number(num)));
// Indexing starts from 1
for (int i = 1; i < num; i++)
Outlook::MailItem mail(mails->Item(i));
QString s = mail.Subject(); // do something with subject
QString b = mail.Body(); // do something with body
ui->plainTextEdit->appendPlainText("subject : \n" + s);
ui->plainTextEdit->appendPlainText("Body : " + b);
ui->plainTextEdit->appendPlainText("-----------------------------------------------");
我正在检查 Outlook::MailItem 以获取获取此 Internet 标头的功能,但我没有找到,所以如果有人之前尝试过或有任何解决此问题的想法 提前致谢
【问题讨论】:
我设置了 3 个 Outlook 配置文件(3 个不同的电子邮件帐户)。那么如何选择使用哪个配置文件(帐户)的收件箱? 【参考方案1】:您可以通过 PR_TRANSPORT_MESSAGE_HEADERS_W 属性访问 Internet 标头。该属性和其他 MAPI 属性可通过 PropertyAccessor 对象检索。请注意,虽然单个 x-headers 无法通过命名的 MAPI 属性访问,但它们捆绑在邮件标头中,因此您需要解析每一行文本以查找任何特定的标头记录。
【讨论】:
我从 Outlook::MailItem 制作 PropertyAccessor 对象然后我应该怎么做然后我尝试使用 GetProperty("PR_TRANSPORT_MESSAGE_HEADERS_W ") 但它给了我无效的 QVarint 抱歉,请使用该属性的 DASL 名称:.GetProperty("schemas.microsoft.com/mapi/proptag/0x007D001F") 请您将代码的完整部分添加到您的答案中谢谢 这是我尝试的: Outlook::PropertyAccessor *acc = mail.PropertyAccessor(); QVariant var = acc->GetProperty("schemas.microsoft.com/mapi/proptag/0x007D001F"); 我收到了这个错误:QAxBase: Error calling IDispatch member GetProperty: Unknown error以上是关于如何在 Outlook 中读取 Internet 标题和电子邮件的主要内容,如果未能解决你的问题,请参考以下文章
Internet Explorer /Microsoft Outlook 中的表格宽度
VSTO - Outlook 如何从邮件 ID 跟踪电子邮件
如何从不在 Outlook 中的硬盘中打开 Outlook .msg 文件?