Как отправить e-mail?

Способ 1 (самый простой) - гиперссылка "mailto:"

Способ 2 (Simple MAPI) - MAPISendDocuments

Способ 3 (Simple MAPI) - MAPISendMail

Этот вопрос возникает в ньюсгруппах с завидной постоянностью. Для отправки электронного письма существует несколько способов, доступных (или недоступных) в зависимости от настройки пользовательского компьютера. Не все они равноценны. Во всех примерах отсутствует проверка ошибок, так что не обольщайтесь - все еще сложнее, чем вы думаете :)

Способ 1 (самый простой) - гиперссылка "mailto:"

Доступен даже из bat-файлов (через команду start ). На компьютере должен быть установлен и настроен почтовый клиент. Если необходимо отправить письмо по адресам email1 и email2. копию - по адресу email3 с темой "Subject text " и текстом "Body\nText ", то достаточно сформировать гиперссылку:

mailto:email1;email2&cc=email3?subject=Subject%20text&body=Body%0dText

Ее можно поместить на веб-страницу (в теге <A href=. >). Щелчок мышью на такой ссылке приведет к открытию окна почтового клиента с готовыми параметрами письма. Пользователю останется только нажать кнопку "отправить". Открыть такую гиперссылку можно и программно (например, с помощью функции ShellExecute ).

Вложенные файлы таким способом отправить не удастся.

Способ 2 (Simple MAPI) - MAPISendDocuments

Доступен из WinAPI-приложений, в том числе из Visual Basic (для него существует специальная обертка этой библиотеки в файле MAPIVB32.BAS )

Ваша программа может использовать различные сервисы MAPI. Здесь я описываю Simple MAPI. В демонстрационном проекте можно найти пример использования CMC. Все описываемые функции недоступны через библиотеки импорта (вследствие очень гибкой архитектуры MAPI). Для их использования необходимо явно загрузить библиотеку mapi32.dll и получить адрес необходимой функции с помощью GetProcAddress.

Simple MAPI предоставляет несколько способов отправить письмо. Самый простой в реализации -

функция MAPISendDocuments. В отличие от предыдущего способа, здесь нет проблем с вложениями, но нельзя ввести текст письма:

ulUIParam - может содержать HWND окна, дочерним к которому будет диалог "Написать письмо". lpszDelimChar - разделитель имен вложенных файлов (в данном случае - ";"). Параметры lpszFullPaths и lpszFileNames соответственно описывают пути к существующим файлам (для вложения) и их названия в письме.

Microsoft Outlook 2000 настраивается по умолчанию в режиме Internet-only. При этом MAPI не поддерживается. Для того, чтобы включить MAPI, необходимо перевести Outlook 2000 в корпоративный режим и затем уже настроить учетные записи

Способ 3 (Simple MAPI) - MAPISendMail

Также предназначен для WinAPI-программ.

Наиболее функциональный способ, но по-прежнему требует наличия MAPI-совместимого клиента. Справедливо все, что говорилось про Simple MAPI. Ваша программа имеет выбор - скрыть интерфейс почтового клиента или нет, предоставить пользователю возможность авторизации или произвести ее самостоятельно, отправлять ли набор вложений и выбирать ли адресатов из адресной книги.

Из за громоздкости примера он приведен полностью в демонстрационном проекте (функция CMailerMAPI::send ). Здесь скажу только, что зачастую вместе с MAPISendMail используется "сладкая парочка" MAPILogon/MAPILogoff (для программной авторизации пользователя).

Способ 4 (более современный) - Collaboration Data Objects

Не все почтовые клиенты поддерживают модель CDO. Она есть, например, в Microsoft Outlook 2000 (но не устанавливается по умолчанию). Для ее установки необходимо выбрать опцию "Объекты совместной работы".

Модель объектов довольно удобная и понятная. Приведу пример на JScript:

Отмечу, что появляется возможность послать не сам файл, а ссылку (cdoFileLink=2) на него. Это имеет смысл, если у вас есть общий с адресатом файловый сервер. В этом случае система не проверяет достоверность имени файла.

Способ 5 (CDONTS NewMail)

Источник: www.rsdn.ru

Категория: Электронная почта

Похожие статьи: