Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.04.04;
Скачать: CL | DM;

Вниз

Отправка e-mail через программу   Найти похожие ветки 

 
MAxiMum   (2004-01-19 19:34) [0]

Не получается отправить сообщение, используя код в программе... MAPISendMail возвращает "Неизвестная ошибка" :). Посмотрите, пожалуйста, код. Может что подскажете.
// подготовить и отправить почтовое сообщение
function MAxSendEmail(Receiver, Title, MessageText:String; AttachmentPath: String = ""): Boolean;
var MapiMessage: TMapiMessage;
 MError:    Cardinal;
 Recipient:  TMapiRecipDesc;
 File_Attachment: TMapiFileDesc;
 Originator: TMapiRecipDesc;
begin
// Подготовить информацию отправителя
FillChar(Originator, SizeOf(Originator), 0);
Originator.ulRecipClass := MAPI_ORIG;
Originator.lpszName := "vabank@inbox.ru";

// Подготовить информацию получателя
FillChar(Recipient, SizeOf(Recipient), 0);
Recipient.ulRecipClass := MAPI_TO;
Recipient.lpszName := PChar(Receiver);

//Подготовить информацию прикрепленного файла
if Trim(AttachmentPath) <> "" then
begin
FillChar(File_Attachment, SizeOf(File_Attachment), 0);
File_Attachment.nPosition := ULONG(-1);
File_Attachment.lpszPathName := PChar(AttachmentPath);
end;

//Сформировать сообщение
with MapiMessage do
begin
ulReserved := 0;
lpszSubject := PChar(Title);
lpszNoteText := PChar(MessageText);
lpszMessageType := nil;
lpszDateReceived := nil;
lpszConversationID := nil;
flFlags := 0;
lpOriginator := nil;
nRecipCount := 1;
lpRecips := @Recipient;
if Trim(AttachmentPath) <> "" then
 begin
 nFileCount := 1;
 lpFiles := @File_Attachment;
 end
else
 begin
 nFileCount := 0;
   lpFiles := nil;
 end;
end;

//Попробовать отправить сообщение
MError := MapiSendMail(0, 0, MapiMessage, MAPI_DIALOG or MAPI_LOGON_UI or MAPI_NEW_SESSION, 0);
Result := MError = SUCCESS_SUCCESS;
if not Result then MAxShowError("Сообщение не было отправлено!");


 
MAxiMum   (2004-01-19 19:57) [1]

Никто не знает?


 
Эл ©   (2004-01-20 07:37) [2]

Как вариант: используя сокеты отправь по протоколу SMTP


 
MAxiMum   (2004-01-20 16:26) [3]

Нашел в чем ошибка: надо было убрать MAPI_DIALOG :((. Непоонятно только почему....

Другой вопрос: Как отправить несколько файлов (вложить в письмо)?


 
MAxiMum   (2004-01-20 21:14) [4]

Помогите! Не может найти файлов, хотя прописываю полные пути!


 
Sacha   (2004-01-21 19:47) [5]

var
 mapiMessage: TMapiMessage;
 FileAttach: TMapiFileDesc;
begin

 with mapiMessage do begin
   ...
   FillChar(FileAttach, SizeOf(FileAttach), 0);
   FileAttach.nPosition := Cardinal($FFFFFFFF);
   FileAttach.lpszPathName := PChar(FileName);

   nFileCount := 1;
   lpFiles := @FileAttach;
   ...
 end;

 ...
end;


 
MAxiMum   (2004-01-21 20:35) [6]

2Sacha:
Спасибо! но мне надо НЕСКОЛЬКО ФАЙЛОВ вложить!!!


 
Sacha   (2004-01-21 20:52) [7]

function MapiSendDocuments(
 ulUIParam: Cardinal;
 lpszDelimChar: LPSTR;
 lpszFilePaths: LPSTR;
 lpszFileNames: LPSTR;
 ulReserved: Cardinal
): Cardinal;

если не ошибаюсь


 
Sacha   (2004-01-21 20:57) [8]

1. или попробовать задать список файлов FileAttach.lpszPathName подобно lpszFileNames (в MapiSendDocuments); не забыть nFileCount := <количество файлов>;
2. не уверен (не пробовал) задать маску в FileAttach.lpszPathName


 
MAxiMum   (2004-01-22 09:16) [9]

MapiSendDocuments не хочется использовать, т.к. невозможно использовать body и даже, по-моему, тему.. но не суть.
Надо MapiSendMail использовать! Это уже очевидно.
Есть, конечно, два других варианта (zip-овать в один и использовать свой smtp-клиент). Но мне интересно пока найти ошибку, понять. Возможно, это мое слабое звено в понимании WinAPI.
Итак привожу изменненный откод, который я сделал для отправки нескольких файлов, но что у меня не вышло (ошибка №11 - не найден файл(ы) атачмента).
/ подготовить и отправить почтовое сообщение
function MAxSendEmail(Receiver, Title, MessageText:String; AttachmentPaths: Array of String): Boolean;
var MapiMessage: TMapiMessage;
 MError:    Cardinal;
 Recipient:  TMapiRecipDesc;
 File_Attachments: array of TMapiFileDesc;  CntFileAttachments: Integer; // количество вложений
 File_Attachment: TMapiFileDesc;
 Originator: TMapiRecipDesc;
 I: Integer; P: PChar;
begin
// Подготовить информацию отправителя
FillChar(Originator, SizeOf(Originator), 0);
Originator.ulRecipClass := MAPI_ORIG;
Originator.lpszName := "vabank@inbox.ru";

// Подготовить информацию получателя
FillChar(Recipient, SizeOf(Recipient), 0);
Recipient.ulRecipClass := MAPI_TO;
Recipient.lpszName := PChar(Receiver);

//Подготовить информацию прикрепленного файла
CntFileAttachments := Length(AttachmentPaths);
SetLength(File_Attachments, CntFileAttachments);
// подготовим структуру для каждого файла
FillChar(File_Attachment, SizeOf(File_Attachment), 0);
File_Attachment.nPosition := ULONG(-1);
for i := 0 to CntFileAttachments - 1 do
begin
File_Attachment.lpszPathName := PChar(AttachmentPaths[i]); // посылаю полный путь (правда, в стандарте Windows, ничего? Например, C:\File.txt
File_Attachments[i] := File_Attachment;
end;

//Сформировать сообщение
with MapiMessage do
begin
ulReserved := 0;
lpszSubject := PChar(Title);
lpszNoteText := PChar(MessageText);
lpszMessageType := nil;
lpszDateReceived := nil;
lpszConversationID := nil;
flFlags := 0;
lpOriginator := @Originator;
nRecipCount := 1;
lpRecips := @Recipient;
nFileCount := CntFileAttachments;
lpFiles := @File_Attachments;
end;

//Попробовать отправить сообщение
MError := MapiSendMail(0, 0, MapiMessage, MAPI_LOGON_UI or MAPI_NEW_SESSION, 0);
Result := MError = SUCCESS_SUCCESS;
if not Result then MAxShowError("Сообщение не было отправлено!");
end;


 
127.0.0.1 ©   (2004-01-22 19:32) [10]

Удалено модератором


 
MAxiMum   (2004-01-26 18:42) [11]

Что?



Страницы: 1 вся ветка

Текущий архив: 2004.04.04;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.043 c
4-1074541738
Vik_Mix
2004-01-19 22:48
2004.04.04
Прозрачная форма и StayOnTop


11-1058260237
anonymous
2003-07-15 13:10
2004.04.04
Как создать форму которая имеется в списке available forms ?


3-1078373711
Janbolat
2004-03-04 07:15
2004.04.04
Dbase без BDE а


1-1079117965
Dest
2004-03-12 21:59
2004.04.04
Повторное использование процедур в разных формах


14-1078856818
Undert
2004-03-09 21:26
2004.04.04
Может кто на пальцах объяснит механизм действия