Не могу отослать письмо с помощью MAPISendMail функция возвращяет ошибку. (MAPI_E_FAILURE One or more unspecified errors occurred; no message was sent.)
В Q&A по этому вопросу был там автор из за громоздкости примера ссылается на демонстрационный проекте. Где этот самый демонстрационный проект?
Помогите люди делаю вроде всё как в Win32 SDK написанно.
Здравствуйте, xZeus, Вы писали:
Z>Не могу отослать письмо с помощью MAPISendMail функция возвращяет ошибку. (MAPI_E_FAILURE One or more unspecified errors occurred; no message was sent.)
Z>В Q&A по этому вопросу был там автор из за громоздкости примера ссылается на демонстрационный проекте. Где этот самый демонстрационный проект?
Z>Помогите люди делаю вроде всё как в Win32 SDK написанно.
Z>
Приведи код, так сложно сразу сказать, нюансов просто валом
Здравствуйте, ziserg, Вы писали:
Z>Здравствуйте, xZeus, Вы писали:
Z>>Не могу отослать письмо с помощью MAPISendMail функция возвращяет ошибку. (MAPI_E_FAILURE One or more unspecified errors occurred; no message was sent.)
Z>>В Q&A по этому вопросу был там автор из за громоздкости примера ссылается на демонстрационный проекте. Где этот самый демонстрационный проект?
Z>>Помогите люди делаю вроде всё как в Win32 SDK написанно.
Z>>
Z>Приведи код, так сложно сразу сказать, нюансов просто валом
MapiMessage Message;
Message.ulReserved=0;
Message.lpszSubject="Test";
// Body text
Message.lpszNoteText="Text";
Message.lpszMessageType=NULL;
// Sender (From
MapiRecipDesc From;
From.ulReserved=0;
From.ulRecipClass=0;
From.lpszName="Alex";
From.lpszAddress="SMTP:khan_a@ngs.ru";
Message.lpOriginator=&From;
// To:
MapiRecipDesc To[1];
To[0].ulReserved=0;
To[0].ulRecipClass=1;
To[0].lpszName="Luda";
To[0].lpszAddress="SMTP:milika@ngs.ru";
Message.nRecipCount=1;
Message.lpRecips=To;
// No attachments
Message.nFileCount=0;
Message.lpFiles=NULL;
typedef ULONG (FAR PASCAL *MAPISendMail) (LHANDLE lhSession,
ULONG ulUIParam,
lpMapiMessage lpMessage,
FLAGS flFlags,
ULONG ulReserved);
HMODULE h = LoadLibrary("Mapi32.dll");
if(h!=NULL)
{
MAPISendMail fnSend = (MAPISendMail)GetProcAddress(h,"MAPISendMail");
if(fnSend!=NULL)
{
// Call MAPI function MAPISendMail ----
int ret = fnSend(0, // Create new sesion
(ULONG)Form1->Handle, // All displayed windows as modal
&Message, // The Message
MAPI_LOGON_UI | MAPI_NEW_SESSION, // Flags MAPI_DIALOG
0); // Reserved mast be zeero
// processing return value
if(ret==SUCCESS_SUCCESS)
Application->MessageBox("Message sends SUCCESSful", "Ok!", MB_OK);
else
{
// Функция DecodeErrorMessage(ret) прост преобразует код ошобки в текст
Application->MessageBox(DecodeErrorMessage(ret).c_str(), "Error", MB_OK);
}
}else Application->MessageBox("Can't get DLL function", "Error!", MB_OK);
FreeLibrary(h);
}else Application->MessageBox("Can't load DLL", "Error!", MB_OK);
Здравствуйте, xZeus, Вы писали:
Z>Здравствуйте, ziserg, Вы писали:
Z>>Здравствуйте, xZeus, Вы писали:
Z>>>Не могу отослать письмо с помощью MAPISendMail функция возвращяет ошибку. (MAPI_E_FAILURE One or more unspecified errors occurred; no message was sent.)
Z>>>В Q&A по этому вопросу был там автор из за громоздкости примера ссылается на демонстрационный проекте. Где этот самый демонстрационный проект?
Z>>>Помогите люди делаю вроде всё как в Win32 SDK написанно.
Z>>>
Z>>Приведи код, так сложно сразу сказать, нюансов просто валом
Z>MapiMessage Message;
Z>Message.ulReserved=0;
Z>Message.lpszSubject="Test";
Z>// Body text
Z>Message.lpszNoteText="Text";
Z>Message.lpszMessageType=NULL;
Z>// Sender (From:)
Z>MapiRecipDesc From;
Z>From.ulReserved=0;
Z>From.ulRecipClass=0;
Z>From.lpszName="Alex";
Z>From.lpszAddress="SMTP:khan_a@ngs.ru";
Z>Message.lpOriginator=&From;
Z>// To:
Z>MapiRecipDesc To[1];
Z>To[0].ulReserved=0;
Z>To[0].ulRecipClass=1;
Z>To[0].lpszName="Luda";
Z>To[0].lpszAddress="SMTP:milika@ngs.ru";
Z>Message.nRecipCount=1;
Z>Message.lpRecips=To;
Z>// No attachments
Z>Message.nFileCount=0;
Z>Message.lpFiles=NULL;
Z>typedef ULONG (FAR PASCAL *MAPISendMail) (LHANDLE lhSession,
Z> ULONG ulUIParam,
Z> lpMapiMessage lpMessage,
Z> FLAGS flFlags,
Z> ULONG ulReserved);
Z>HMODULE h = LoadLibrary("Mapi32.dll");
Z>if(h!=NULL)
Z>{
Z> MAPISendMail fnSend = (MAPISendMail)GetProcAddress(h,"MAPISendMail");
Z> if(fnSend!=NULL)
Z> {
Z> // Call MAPI function MAPISendMail ----
Z> int ret = fnSend(0, // Create new sesion
Z> (ULONG)Form1->Handle, // All displayed windows as modal
Z> &Message, // The Message
Z> MAPI_LOGON_UI | MAPI_NEW_SESSION, // Flags MAPI_DIALOG
Z> 0); // Reserved mast be zeero
Z> // processing return value
Z> if(ret==SUCCESS_SUCCESS)
Z> Application->MessageBox("Message sends SUCCESSful", "Ok!", MB_OK);
Z> else
Z> {
Z> // Функция DecodeErrorMessage(ret) прост преобразует код ошобки в текст
Z> Application->MessageBox(DecodeErrorMessage(ret).c_str(), "Error", MB_OK);
Z> }
Z> }else Application->MessageBox("Can't get DLL function", "Error!", MB_OK);
Z>FreeLibrary(h);
Z>}else Application->MessageBox("Can't load DLL", "Error!", MB_OK);
Пофиксеный код
MapiMessage Message = { 0 } ;
//Message.ulReserved=0; // Не надо изврата
Message.lpszSubject="Test";
// Body text
Message.lpszNoteText="Text";
// Sender (From:)
MapiRecipDesc From = { 0 } ;
From.lpszName="Alex";
From.lpszAddress="khan_a@ngs.ru";
Message.lpOriginator=&From;
// To:
MapiRecipDesc To[1] = { 0 }; // Не забываем обнулять!!!
To[0].ulRecipClass=1;
To[0].lpszName="Luda";
To[0].lpszAddress="milika@ngs.ru";
Message.nRecipCount=1;
Message.lpRecips=To;
[skipped...]
Здравствуйте, ziserg, Вы писали:
Z>Здравствуйте, xZeus, Вы писали:
Z>>Здравствуйте, ziserg, Вы писали:
Z>>>Здравствуйте, xZeus, Вы писали:
Z>>>>Не могу отослать письмо с помощью MAPISendMail функция возвращяет ошибку. (MAPI_E_FAILURE One or more unspecified errors occurred; no message was sent.)
Z>>>>В Q&A по этому вопросу был там автор из за громоздкости примера ссылается на демонстрационный проекте. Где этот самый демонстрационный проект?
Z>>>>Помогите люди делаю вроде всё как в Win32 SDK написанно.
Z>>>>
Z>>>Приведи код, так сложно сразу сказать, нюансов просто валом
Z>Z>>MapiMessage Message;
Z>>Message.ulReserved=0;
Z>>Message.lpszSubject="Test";
Z>>// Body text
Z>>Message.lpszNoteText="Text";
Z>>Message.lpszMessageType=NULL;
Z>>// Sender (From:)
Z>>MapiRecipDesc From;
Z>>From.ulReserved=0;
Z>>From.ulRecipClass=0;
Z>>From.lpszName="Alex";
Z>>From.lpszAddress="SMTP:khan_a@ngs.ru";
Z>>Message.lpOriginator=&From;
Z>>// To:
Z>>MapiRecipDesc To[1];
Z>>To[0].ulReserved=0;
Z>>To[0].ulRecipClass=1;
Z>>To[0].lpszName="Luda";
Z>>To[0].lpszAddress="SMTP:milika@ngs.ru";
Z>>Message.nRecipCount=1;
Z>>Message.lpRecips=To;
Z>>// No attachments
Z>>Message.nFileCount=0;
Z>>Message.lpFiles=NULL;
Z>>typedef ULONG (FAR PASCAL *MAPISendMail) (LHANDLE lhSession,
Z>> ULONG ulUIParam,
Z>> lpMapiMessage lpMessage,
Z>> FLAGS flFlags,
Z>> ULONG ulReserved);
Z>>HMODULE h = LoadLibrary("Mapi32.dll");
Z>>if(h!=NULL)
Z>>{
Z>> MAPISendMail fnSend = (MAPISendMail)GetProcAddress(h,"MAPISendMail");
Z>> if(fnSend!=NULL)
Z>> {
Z>> // Call MAPI function MAPISendMail ----
Z>> int ret = fnSend(0, // Create new sesion
Z>> (ULONG)Form1->Handle, // All displayed windows as modal
Z>> &Message, // The Message
Z>> MAPI_LOGON_UI | MAPI_NEW_SESSION, // Flags MAPI_DIALOG
Z>> 0); // Reserved mast be zeero
Z>> // processing return value
Z>> if(ret==SUCCESS_SUCCESS)
Z>> Application->MessageBox("Message sends SUCCESSful", "Ok!", MB_OK);
Z>> else
Z>> {
Z>> // Функция DecodeErrorMessage(ret) прост преобразует код ошобки в текст
Z>> Application->MessageBox(DecodeErrorMessage(ret).c_str(), "Error", MB_OK);
Z>> }
Z>> }else Application->MessageBox("Can't get DLL function", "Error!", MB_OK);
Z>>FreeLibrary(h);
Z>>}else Application->MessageBox("Can't load DLL", "Error!", MB_OK);
Z>
Z>Пофиксеный код
Z>Z>MapiMessage Message = { 0 } ;
Z>//Message.ulReserved=0; // Не надо изврата
Z>Message.lpszSubject="Test";
Z>// Body text
Z>Message.lpszNoteText="Text";
Z>// Sender (From:)
Z>MapiRecipDesc From = { 0 } ;
Z>From.lpszName="Alex";
Z>From.lpszAddress="khan_a@ngs.ru";
Z>Message.lpOriginator=&From;
Z>// To:
Z>MapiRecipDesc To[1] = { 0 }; // Не забываем обнулять!!!
Z>To[0].ulRecipClass=1;
Z>To[0].lpszName="Luda";
Z>To[0].lpszAddress="milika@ngs.ru";
Z>Message.nRecipCount=1;
Z>Message.lpRecips=To;
Z>[skipped...]
Z>
Фурычиит!!! Спасбо!!!