Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Outlook Express, Отправка e-mail с прицепом 
:(
    Опции темы
mrBlood
  Дата 4.6.2002, 09:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 4.6.2002

Репутация: нет
Всего: нет



Здравствуйте!

При написании своей программы столкнулся со следующей проблемой. Нужно из программы отправить письмо с прицепленным к нему файлом через установленный по умолчанию почтовый клиент. Эта функция должна работать по возможности через любые почтовые программы.
Через ShellExecute насколько я понимаю прицепить файл нельзя.
Пробовал через MAPI. Долго переписывался с Еленой Филиповой из Королевства Делфи по этому поводу. В конце концов выяснилось, что через MAPI Outlook Express работать не хочет.

Не подскажет ли кто как решить мою проблему? Если можно то пришлите пример.
PM MAIL   Вверх
Song
Дата 4.6.2002, 09:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Sysman.ru
***


Профиль
Группа: Участник
Сообщений: 1095
Регистрация: 2.6.2002

Репутация: 2
Всего: 4



Фигня всё это.. Ещё как хочет и может.

Delhi и Outlook
MAPI


--------------------
Прежде чем сказать "Невозможно", подумай, прав ли ты
PM WWW ICQ   Вверх
Vit
Дата 4.6.2002, 15:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 48
Всего: 207



Outlook Express ты использовать на прямую не сможешь, это точно, у него нет ни COM интерфейса(как у Outlook), ни API. У тебя есть следующие фарианты:
1) Использовать MAPI (пример привел Song в предыдущем сообщении)
2) Использовать SMTP - там все просто
3) Использовать COM интерфейс Outlook - там тоже все просто, я даже постил где-то пример
4) Писать свой SMTP Relay сервер и отсылать email напрямую, минуя любые сервера.


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
Vit
Дата 4.6.2002, 17:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 48
Всего: 207



Пример с delphi.mastak.ru мне понравился(который нашел song), я решил его сюда скопировать, может кому понадобится:


Код

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.



--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
Song
Дата 4.6.2002, 18:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Sysman.ru
***


Профиль
Группа: Участник
Сообщений: 1095
Регистрация: 2.6.2002

Репутация: 2
Всего: 4



Вы его в фак скопируйте или ссылу на мастаков.


--------------------
Прежде чем сказать "Невозможно", подумай, прав ли ты
PM WWW ICQ   Вверх
Vit
Дата 4.6.2002, 18:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 48
Всего: 207



Цитата(Song @ 04.6.2002, 10:20)
Вы его в фак скопируйте или ссылу на мастаков.

Я копирую все регулярно, но даю "отлежаться" кодам и ответам несколько недель в форуме на случай если кто найдет ошибки или предложит какие варианты. А по поводу прошивания ссылок на другие ресурсы - это не ко мне, это к хозяивам форума, все-таки реклама чужих ресурсов вопрос деликатного свойства. Впрочем даже если не учитывать рекламу, я за то чтобы копировать сюда полезности, вместо хранения ссылок - надежнее, ресурс в сети может исчезнуть, поменяться, поменять хостинг, URL  и т.п...


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
neutrino
Дата 4.6.2002, 20:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Gothic soul
****


Профиль
Группа: Модератор
Сообщений: 3041
Регистрация: 25.3.2002
Где: Верхняя Галилея, Кармиэль

Репутация: нет
Всего: 62



А я, кастати, поместил на некоторых ответах (на которых, был явный автор) ссылки на места, откуда они были взяты. Уж точно ничего рекламировать не хотел. Правда некоторые авторы (тот же известный SunTexx [Song его точно знает]) просят, чтоб поместили ссылку на исходное место. Так что выбор таков: или помешать ссылку, или не помешать вообше. Если я сделал ошибку, поместив эти ссылки, то могу удалить все сообшения их содержашие.


--------------------
The truth comes from within ...

Покойся с миром, Vit 
PM MAIL WWW ICQ Skype GTalk   Вверх
Vit
Дата 4.6.2002, 20:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 48
Всего: 207



Если я что-то понимаю в копирайте, то на защищенной копирайтом странице должно быть указано, что информация защищена авторским правом и не может быть опубликована без ведома автора, в противном случае по-моему ссылки на источник должно быть достаточно для возможности копирования или я не прав?


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
mrBlood
Дата 5.6.2002, 09:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 4.6.2002

Репутация: нет
Всего: нет



Спасибо всем, кто прислал ответы на мой вопрос.

По поводу примера, который нашел song. Я попробовал его использовать.
Во-первых, нашел в нем несколько мелких ошибок: SusUtils вместо SysUtils, ulRecerved вместо ulReserved.
Во-вторых, мне не понятно назначение функции IsOnline, ее что нужно вызывать перед вызовом функции SendEmail? Кроме того на строку
RASConn: TRASConn;
компилятор выдает ошибку, что не знает такого класса TRASConn. Нет ли здесь тоже какой ошибки и где этот класс описан?
В-третьих, попробовал наконец использовать саму функцию SendEmail:
SendEmail('Фирма', '[email protected]', 'заказ', 'D:\order.txt')
и получил при ее выполнении ошибку MAPI_USER_ABORT.

Нашел в Инете исходники компонента для отправки e-mail через MAPI, с ним вылазиет та же самая ошибка.

Что я делаю не правильно?
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0610 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.