Форум: "Сети";
Текущий архив: 2004.04.04;
Скачать: [xml.tar.bz2];
ВнизОтправка 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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.03 c