Search code examples
qtemailoutlookqt5.8qaxobject

How to read Internet header of and email in outlook


I try to read an email Internet headers that we can view it in email properties in outlook app I ask if there is an option so I can get this I use this code to read the emails in 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("-----------------------------------------------");
  }
  }

and I was check the Outlook::MailItem for a function to get this Internet header but I not found so if any one try it before or have any idea to solve this Thanks in advance


Solution

  • You can access the Internet headers via the PR_TRANSPORT_MESSAGE_HEADERS_W property. That property and other MAPI properties are retrievable via the PropertyAccessor object. Note though that individual x-headers are not accessible via a named MAPI property, they are bundled within the message headers so you'll need to parse every line of text to find any particular header record.