Получение адреса из входящего сообщения в MS Outlook
Последняя степень одиночества: даже спаммеры не пишут.
Function GetEAddr(InputMailItem : Variant {mailitem}) : String;
Var
MapiFile: TextFile;
FirstLine, MailAddress : String;
StrLength, Index : Integer;
begin
MailAddress := '';
// Сохраняем сообщение в текстовом файле...
InputMailItem.SaveAs(WideString(ExtractFilePath(Application.EXEName)
+ 'mailitem.txt'), $00000000);
// Если рассмотреть структуру созданного файла, то в первой строке// кроме всего прочего, содержится электронный адрес отправителя.// Задача состоит в том, чтобы прочитать его...
AssignFile(MapiFile, ExtractFilePath(Application.EXEName) + 'mailitem.txt');
Reset(MapiFile);
Readln(MapiFile, FirstLine);
CloseFile(MapiFile);
If Pos('@', Trim(FirstLine)) > 0 ThenBegin
StrLength := Length(Trim(FirstLine));
Index := StrLength;
While FirstLine[Index] < > ' ' Do Dec(Index);
MailAddress := Copy(FirstLine, Index + 1, StrLength - Index);
For Index := 1 To Length(Trim(MailAddress)) DoIf (MailAddress[Index] = '[') Or (MailAddress[Index] = ']')
Then MailAddress[Index] := ' ';
MailAddress := Trim(MailAddress);
EndElse
MailAddress := Trim(InputMailItem.SenderName);
Result := MailAddress;
// В том случае, если адрес все же не определен, возвращаем известный нам
SenderName...
end;
Перевод контента на русский язык:
Функция Delphi под названием GetEAddr принимает в качестве входного параметра объект электронной почты MS Outlook и возвращает адрес электронной почты отправителя. Вот подробное описание того, что код делает:
Функция сохраняет входящий объект электронной почты в текстовом файле с именем mailitem.txt в том же каталоге, где находится исполняемый файл.
Затем она читает первую строку текстового файла, которая содержит информацию о адресе электронной почты отправителя.
Если первая строка содержит символ @, функция извлекает адрес электронной почты из этой строки с помощью различных функций обработки строк (например, Pos, Trim, Copy, Length).
Если адрес электронной почты не найден в первой строке, функция переходит к использованию свойства SenderName входящего объекта электронной почты.
Функция возвращает извлеченный или альтернативный адрес электронной почты в виде строки.
Некоторые предложения по улучшению:
Вместо сохранения всего объекта электронной почты в файл и последующего чтения, можно напрямую прочитать адрес электронной почты отправителя из объекта InputMailItem с помощью его свойств (например, SenderEmailAddress, SenderName).
Код предполагает, что первая строка текстового файла содержит адрес электронной почты в конкретном формате. Если это предположение не всегда верно, может быть лучше извлечь адрес электронной почты из всего содержимого объекта электронной почты вместо зависимости от первой строки.
Можно добавить механизмы обработки ошибок и журналирования для обработки потенциальных проблем при чтении или записи файлов, таких как ошибка не найденного файла или запрещенная операция.
Вот альтернативное реализацию, которая читает адрес электронной почты отправителя напрямую из объекта InputMailItem:
Эта реализация проще и более эффективна, так как она избегает сохранения и чтения файлов. Однако, если вам нужно извлечь другие сведения из объекта электронной почты, оригинальный код может все еще быть полезен.
В статье описывается способ программированного получения электронного адреса отправителя из входящего сообщения в MS Outlook с помощью языка программирования Delphi.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.