Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Прочитать адрес отправителя сообщения для MS Outlook

Delphi , Интернет и Сети , Почтовый клиент

Прочитать адрес отправителя сообщения для MS Outlook

Оформил: DeeCo
Автор: http://www.swissdelphicenter.ch

{ 
  If you tried to work with messages from Delphi, you know that received message have the 
  SenderName property (name of sender) but doesn't allow to read the real address of sender. 
  Something like SenderAddress is not available. 

  There exist a few methods to retrieve this information: 

  1. help file says that sender is in Recipients collection 
  with Type property - 0 (olOriginator). 
  But this way does work for any version of MS Outlook. 
  So just iterate thru collection of Recipients and find an item with Type=0 
  couldn't return required value 

  2. as alternative you can read a ReplyTo property - there you'll receive an address 
  (but generally ReplyTo and Sender could be different). 
  For example, in messages which I send from own mail account these values are different. 

  3. to create a new MailItem (just will be destroyed without saving in end of work), 
  define a Recipient as value which you received from SenderName of your original 
  message and call a Resolve method - after that you'll recieve a correct email address of this sender. 

  4. more correct and fast solution is the next: 
}

 var
  s: string;
  objCDO: OLEVariant;
 begin
   objCDO := CreateOLEObject('MAPI.Session');
   objCDO.Logon('', '', False, False);
   objMsg := objCDO.GetMessage(itemOL.EntryID, itemOL.Parent.StoreID);

   s := objMsg.Sender.Address;
   ShowMessage(s);
   objMsg := Unassigned;
   objCDO := Unassigned;
 end


 { where itemOL is a MailItem which contain a SenderName but doesn't contain a SenderAddress }

Программный код на Delphi, который читает адрес электронной почты отправителя из сообщения MS Outlook с помощью различных методов.

Метод 1: Итерация по коллекции Recipients и поиск элемента с свойством Type, установленным в 0 (olOriginator).

For i := 0 to objMsg.Recipients.Count - 1 do
  If objMsg.Recipients.Items[i].Type = olOriginator then
    s := objMsg.Recipients.Items[i].Address;

Метод 2: Использование свойства ReplyTo, которое может содержать адрес электронной почты, отличный от реального адреса отправителя.

s := objMsg.ReplyRecipients.Item[1].Address;

Метод 3: Создание нового объекта MailItem, определение получателя с именем отправителя, и вызов метода Resolve для получения правильного адреса электронной почты.

var
  mailItem: MailItem;
begin
  mailItem := MailItem.Create;
  mailItem.Recipients.Add(senderName);
  s := mailItem.Resolve;
end;

Метод 4: Использование объекта MAPI.Session для создания нового сеанса, входа в MS Outlook и получения адреса электронной почты отправителя.

var
  objCDO: OLEVariant;
begin
  objCDO := CreateOLEObject('MAPI.Session');
  objCDO.Logon('', '', False, False);
  objMsg := objCDO.GetMessage(itemOL.EntryID, itemOL.Parent.StoreID);
  s := objMsg.Sender.Address;
  ShowMessage(s);
  objMsg := Unassigned;
  objCDO := Unassigned;
end;

В этом коде itemOL является объектом MailItem, содержащим имя отправителя, но не адрес электронной почты. Код использует Метод 4, который создает новый объект MAPI.Session и вход в MS Outlook с пустым строковым значением для имени пользователя и пароля.

Метод GetMessage получает сообщение с указанным идентификатором из хранилища с указанным родительским идентификатором. Затем свойство Sender используется для получения адреса электронной почты отправителя, который сохраняется в переменной s.

Наконец, код отображает адрес электронной почты отправителя с помощью функции ShowMessage и освобождает любые выделенные ресурсы кодом с помощью процедуры Unassigned.

В статье описывается несколько способов чтения адреса отправителя электронного сообщения в MS Outlook, включая использование свойств Recipients и ReplyTo, а также создания временного объекта MailItem.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Почтовый клиент ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-19 13:29:56
2024-10-24 20:02:03/0.00364089012146/0