Delphirus - прграммирование на delphi
   Все о delphi Delphirus - прграммирование на delphi
blocks.gif
Навигация
 

Главная
Статьи
Базы данных
Графика
Защита
Интернет
Система
Тексты
Мультимедиа
Файлы
Формы и окна
Другое
Советы
Базы данных
Графика
Интернет
Мультимедиа
Система
Тексты
Файлы
Файлы
Исходники
Компоненты
Инфо
Поиск по сайту
Обратная связь
Самое популярное
Аккаунт
Карта сайта

 
 
 

Советы по delphi \ Интернет и сети \ E-mail \ Отправлять электронную почту

Отправлять электронную почту

В D5 Вы можете попробовать использовать компоненты TNMSMTP и TNMPOP3,

в D6 и Kylix компоненты от NetMasters заменены компонентами Indy.

Алгоритм простой (для сторонних компонентов он принципиально ничем не отличается):

  • необходимо заполнить структуру PostMessage;
  • отправить эту структуру при помощи метода SendMail.

Структура PostMessage:

  • (*) FromName: string - имя отправителя;
  • FromAddress: string - Почтовый адресс отправителя
  • ReplyToAddress: string - Адрес, по которому следует ответить на письмо;
  • Organization: string
  • LocalProgram: string - Имя почтовой программы отправителя;
  • (*) ToAddress: TStringList - Почтовый адрес главного получателя (ей)
  • ToCC: TStringList - Список получателей Carbon Copy
  • ToBCC: TSringList - Список получателей Blind Carbon Copy
  • Attachments: TStringList - Список вложений
  • Body: TStringList - Собственно текст письма
  • Subject: string - Строка темы письма.

(*) - помечены обязательные поля. С остальным не сложно разобраться самому.

Также это можно сделать при помощи MAPI.

Т.е. письмо будет отправлено средствами _почтовой_программы_по_умолчанию_ - со всеми недостатками :) (например письмо будет помещено в папку "отправленные"). Зато без всяких там компонент и просто :)

Hиже готовая функция, в которой:

  • From - от кого
  • Dest - кому
  • Subject - тема
  • Text - текст письма
  • FileName - путь к вложению (если '', то соответственно ничего и не вкладываем)
  • Outlook - показывать или нет письмо перед отправкой (в твоём случае False)
Uses MAPI;
...

function SendMail(const From, Dest, Subject, Text, FileName: PChar;
Outlook: boolean):Integer;
var
  Message: TMapiMessage;
  Recipient, Sender: TMapiRecipDesc;
  File_Attachment: TMapiFileDesc;
                                                               
  function MakeMessage: TMapiMessage;
  begin
    FillChar(Sender, SizeOf(Sender), 0);
    Sender.ulRecipClass := MAPI_ORIG;
    Sender.lpszAddress := From;
                                               
    FillChar(Recipient, SizeOf(Recipient), 0);
    Recipient.ulRecipClass := MAPI_TO;
    Recipient.lpszAddress := Dest;

    FillChar(File_Attachment, SizeOf(File_Attachment), 0);
    File_Attachment.nPosition := Cardinal(-1);
    File_Attachment.lpszPathName := FileName;

    FillChar(Result, SizeOf(Result), 0);
    with Message do begin
      lpszSubject := Subject;
      lpszNoteText := Text;
      lpOriginator := @Sender;
      nRecipCount := 1;
      lpRecips := @Recipient;
      nFileCount := 1;
      lpFiles := @File_Attachment;
    end;
  end;

var
  SM: TFNMapiSendMail;
  MAPIModule: HModule;
  MAPI_FLAG: Cardinal;
begin
  if Outlook then
   MAPI_FLAG:=MAPI_DIALOG
  else
   MAPI_FLAG:=0;
  MAPIModule := LoadLibrary(PChar(MAPIDLL));
  if MAPIModule = 0 then
    Result := -1
  else
    try
      @SM := GetProcAddress(MAPIModule, 'MAPISendMail');
      if @SM <> nil then begin
        MakeMessage;
        Result := SM(0, Application.Handle, Message, MAPI_FLAG, 0);
      end else Result := 1;
    finally
      FreeLibrary(MAPIModule);
    end;
end;

Название: Отправлять электронную почту
Дата публикации: 2004-09-02 (3294 Прочтено)

 
 

 

Page generation 0.037 seconds