Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 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
11-1057497948
JanvVlad
2003-07-06 17:25
2004.04.04
OnCheck в TreeView


4-1075293731
GrayFace
2004-01-28 15:42
2004.04.04
Как получить список шрифтоф, кодировок и т.д.


14-1078834884
Undert
2004-03-09 15:21
2004.04.04
Посоветуйте программку


6-1075463880
BBCHa
2004-01-30 14:58
2004.04.04
Программно создать TWebBrowser


14-1078836708
wild_arg
2004-03-09 15:51
2004.04.04
Глюки





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский