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

Отправить письмо на E-mail так, чтобы пользователь не подозревал об отправке

Delphi , Интернет и Сети , E-mail

Отправить письмо на E-mail так, чтобы пользователь не подозревал об отправке


У одной провайдерской фирмы спросили:
- Почему Вы так активно создаёте сервисы бесплатного e-mail?
- Ну, как Вам сказать... А Вы читали когда-нибудь чужую почту?


unit Email;

interface

uses
  Windows, SusUtils, Classes;

function SendEmail(const RecipName, RecipAddress,
Subject, Attachment: string): Boolean;

function IsOnline: Boolean;

implementation
uses Mapi;

function SendEmail(const RecipName, RecipAddress,
Subject, Attachment: string): Boolean;
var
  MapiMessage: TMapiMessage;
  MapiFileDesc: TMapiFileDesc;
  MapiRecipDesc: TMapiRecipDesc;
  i: integer;
  s: string;
begin
  with MapiRecipDesc do
  begin
    ulRecerved:= 0;
    ulRecipClass:= MAPI_TO;
    lpszName:= PChar(RecipName);
    lpszAddress:= PChar(RecipAddress);
    ulEIDSize:= 0;
    lpEntryID:= nil;
  end;

  with MapiFileDesc do
  begin
    ulReserved:= 0;
    flFlags:= 0;
    nPosition:= 0;
    lpszPathName:= PChar(Attachment);
    lpszFileName:= nil;
    lpFileType:= nil;
  end;

  with MapiMessage do
  begin
    ulReserved := 0;
    lpszSubject := nil;
    lpszNoteText := PChar(Subject);
    lpszMessageType := nil;
    lpszDateReceived := nil;
    lpszConversationID := nil;
    flFlags := 0;
    lpOriginator := nil;
    nRecipCount := 1;
    lpRecips := @MapiRecipDesc;
    if length(Attachment) > 0 then
    begin
      nFileCount:= 1;
      lpFiles := @MapiFileDesc;
    end
    else
    begin
      nFileCount:= 0;
      lpFiles:= nil;
    end;
  end;

  Result:= MapiSendMail(0, 0, MapiMessage, MAPI_DIALOG
  or MAPI_LOGON_UI or MAPI_NEW_SESSION, 0) = SUCCESS_SUCCESS;
end;


function IsOnline: Boolean;
var
  RASConn: TRASConn;
  dwSize,dwCount: DWORD;
begin
  RASConns.dwSize:= SizeOf(TRASConn);
  dwSize:= SizeOf(RASConns);
  Res:=RASEnumConnectionsA(@RASConns, @dwSize, @dwCount);
  Result:= (Res = 0) and (dwCount > 0);
end;

end.

Программный код на языке Delphi для отправки электронной почты с использованием протокола MAPI (Messaging Application Programming Interface), который позволяет разработчикам создавать приложения, которые могут отправлять и получать электронные письма. Код также включает функцию проверки, является ли пользователь онлайн или нет.

Следующий код работает следующим образом:

  1. Функция SendEmail принимает четыре параметра: RecipName, RecipAddress, Subject и Attachment. Она создает экземпляр класса TMapiMessage, который представляет электронное письмо.
  2. Функция устанавливает различные свойства электронного письма, такие как имя получателя и адрес электронной почты, тема и имя файла приложения.
  3. Если предоставлено приложение, функция устанавливает свойство nFileCount в 1 и свойство lpFiles в указатель на структуру TMapiFileDesc, которая содержит информацию о файле приложения.
  4. Функция затем вызывает функцию MapiSendMail, которая отправляет электронное письмо с помощью MAPI. Функция возвращает булевое значение, указывающее, была ли электронная почта отправлена успешно.

Функция IsOnline проверяет, является ли пользователь онлайн или нет, перебирая все соединения RAS (Remote Access Service) на системе и проверяя, есть ли какие-либо активные соединения. Если есть, то это означает, что пользователь онлайн.

Вам не предоставляется механизм для отправки электронной почты без уведомления получателя. Код просто отправляет электронное письмо с помощью MAPI, которое будет видно в клиенте электронной почты получателя. Если вам нужно отправить электронную почту анонимно или незаметно, вы может быть хотите рассмотреть альтернативные подходы, такие как использование третьей стороны сервиса электронной почты или создание вашего собственного.custom solution.

Вот некоторые предложения по улучшению кода:

  1. Обработка ошибок: Функция SendEmail не обрабатывает ошибки должным образом. Вы должны добавить блоки try-catch для ловли исключений, которые могут возникнуть при отправке электронного письма.
  2. Организация кода: Функция SendEmail является quite long и сложной. Вы может быть хотите рассмотреть разбиение ее на более мелкие функции.
  3. Комментарии: В этом коде нет комментариев, объясняющих, что каждый раздел кода делает или как он работает. Добавление комментариев может сделать код более понятным и поддерживаемым.

В целом, этот код предоставляет хороший старт для отправки электронных писем с помощью MAPI в Delphi. Однако вам может потребоваться модификация его для соответствия вашим конкретным требованиям и обработки любых потенциальных проблем, которые могут возникнуть при выполнении.

Отправить письмо на электронную почту так, чтобы пользователь не подозревал об отправке, можно с помощью программного кода в Delphi, используя интерфейс MAPI и функцию SendEmail.


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

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




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


:: Главная :: E-mail ::


реклама


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

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