#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include <ShellAPI.h>
int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPWSTR lpCmdLine, int nCmdShow)
{
ShellExecute(NULL, L"open",
L"mailto:someone@somewhere.com\
?Subject=Hello, world\
&body=The email sent from ShellExecute",
L"", L"", SW_SHOWNORMAL );
return 0;
}
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include <mapi.h>
BOOL SendMail(LPCSTR lpszSubject, LPCSTR lpszTo,
LPCSTR lpszName, LPCSTR lpszText);
int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPWSTR lpCmdLine, int nCmdShow)
{
SendMail("Hello", "SMTP:someone@somewhere.com",
"Name", "Text");
return 0;
}
BOOL SendMail(LPCSTR lpszSubject, LPCSTR lpszTo,
LPCSTR lpszName, LPCSTR lpszText)
{
HINSTANCE hMAPI = ::LoadLibrary(L"mapi32.dll");
LPMAPISENDMAIL lpfnMAPISendMail =
(LPMAPISENDMAIL)::GetProcAddress(hMAPI, "MAPISendMail");
char szTo[MAX_PATH] = { 0 };
strcat_s(szTo, lpszTo);
char szName[MAX_PATH] = { 0 };
strcat_s(szName, lpszName);
MapiRecipDesc recipient[1] = { 0 };
recipient[0].ulRecipClass = MAPI_TO;
recipient[0].lpszAddress = szTo;
recipient[0].lpszName = szName;
char szSubject[MAX_PATH] = { 0 };
strcat_s(szSubject, lpszSubject);
char szText[MAX_PATH] = { 0 };
strcat_s(szText, lpszText);
MapiMessage MAPImsg = { 0 };
MAPImsg.lpszSubject = szSubject;
MAPImsg.lpRecips = recipient;
MAPImsg.nRecipCount = 1;
MAPImsg.lpszNoteText = szText;
ULONG nSent = lpfnMAPISendMail(0, 0,
&MAPImsg, MAPI_LOGON_UI | MAPI_DIALOG, 0);
FreeLibrary(hMAPI);
return (nSent == SUCCESS_SUCCESS || nSent == MAPI_E_USER_ABORT);
}
HINSTANCE hMAPI = ::LoadLibrary(L"mapi32.dll");
LPMAPISENDMAIL lpfnMAPISendMail =
(LPMAPISENDMAIL)::GetProcAddress(hMAPI, "MAPISendMail");
MapiMessage MAPImsg = { 0 };
MAPImsg.lpszSubject = szSubject;
MAPImsg.lpRecips = recipient;
MAPImsg.nRecipCount = 1;
MAPImsg.lpszNoteText = szText;
MapiRecipDesc recipient[1] = { 0 };
recipient[0].ulRecipClass = MAPI_TO;
recipient[0].lpszAddress = szTo;
recipient[0].lpszName = szName;
ULONG nSent = pMAPISendMail(0, 0, &MAPImsg, NULL, 0);
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include <stdlib.h>
#include <mapi.h>
BOOL SendFile(LPCSTR lpszSubject, LPCSTR lpszTo,
LPCSTR lpszName, LPCSTR lpszText,
LPCSTR lpszFullFileName);
int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPWSTR lpCmdLine, int nCmdShow)
{
SendFile("Hello", "SMTP:somebody@nowhere.com",
"Cool Guy", "Message Text", "c:\\text.txt");
return 0;
}
BOOL SendFile(LPCSTR lpszSubject, LPCSTR lpszTo,
LPCSTR lpszName, LPCSTR lpszText,
LPCSTR lpszFullFileName)
{
HINSTANCE hMAPI = ::LoadLibrary(L"mapi32.dll");
LPMAPISENDMAIL lpfnMAPISendMail =
(LPMAPISENDMAIL)::GetProcAddress(hMAPI, "MAPISendMail");
char szDrive[_MAX_DRIVE] = { 0 };
char szDir[_MAX_DIR] = { 0 };
char szName[_MAX_FNAME] = { 0 };
char szExt[_MAX_EXT] = { 0 };
_splitpath_s(lpszFullFileName, szDrive, szDir, szName, szExt);
char szFileName[MAX_PATH] = { 0 };
strcat_s(szFileName, szName);
strcat_s(szFileName, szExt);
char szFullFileName[MAX_PATH] = { 0 };
strcat_s(szFullFileName, lpszFullFileName);
MapiFileDesc MAPIfile = { 0 };
ZeroMemory(&MAPIfile, sizeof(MapiFileDesc));
MAPIfile.nPosition = 0xFFFFFFFF;
MAPIfile.lpszPathName = szFullFileName;
MAPIfile.lpszFileName = szFileName;
char szTo[MAX_PATH] = { 0 };
strcat_s(szTo, lpszTo);
char szNameTo[MAX_PATH] = { 0 };
strcat_s(szNameTo, lpszName);
MapiRecipDesc recipient = { 0 };
recipient.ulRecipClass = MAPI_TO;
recipient.lpszAddress = szTo;
recipient.lpszName = szNameTo;
char szSubject[MAX_PATH] = { 0 };
strcat_s(szSubject, lpszSubject);
char szText[MAX_PATH] = { 0 };
strcat_s(szText, lpszText);
MapiMessage MAPImsg = { 0 };
MAPImsg.lpszSubject = szSubject;
MAPImsg.lpRecips = &recipient;
MAPImsg.nRecipCount = 1;
MAPImsg.lpszNoteText = szText;
MAPImsg.nFileCount = 1;
MAPImsg.lpFiles = &MAPIfile;
ULONG nSent = lpfnMAPISendMail(0, 0, &MAPImsg, NULL, 0);
FreeLibrary(hMAPI);
return (nSent == SUCCESS_SUCCESS || nSent == MAPI_E_USER_ABORT);
}
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include <mapi.h>
BOOL SendMail(LPCSTR lpszSubject, LPCSTR lpszTo,
LPCSTR lpszName, LPCSTR lpszText);
int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPWSTR lpCmdLine, int nCmdShow)
{
SendMail("Subject", "SMTP:someone@somewhere.com",
"Name", "Text. No mail client running.");
return 0;
}
BOOL SendMail(LPCSTR lpszSubject, LPCSTR lpszTo,
LPCSTR lpszName, LPCSTR lpszText)
{
HINSTANCE hMAPI = NULL;
LPMAPISENDMAIL lpfnMAPISendMail = NULL;
LPMAPILOGON lpfnMAPILogOn = NULL;
LPMAPILOGOFF lpfnMAPILogOff = NULL;
hMAPI = ::LoadLibrary(L"mapi32.dll");
lpfnMAPISendMail =
(LPMAPISENDMAIL)::GetProcAddress(hMAPI, "MAPISendMail");
lpfnMAPILogOn =
(LPMAPILOGON)::GetProcAddress(hMAPI, "MAPILogon");
lpfnMAPILogOff =
(LPMAPILOGOFF)::GetProcAddress(hMAPI, "MAPILogoff");
char szTo[MAX_PATH] = { 0 };
strcat_s(szTo, lpszTo);
char szName[MAX_PATH] = { 0 };
strcat_s(szName, lpszName);
MapiRecipDesc recipient[1] = { 0 };
recipient[0].ulRecipClass = MAPI_TO;
recipient[0].lpszAddress = szTo;
recipient[0].lpszName = szName;
char szSubject[MAX_PATH] = { 0 };
strcat_s(szSubject, lpszSubject);
char szText[MAX_PATH] = { 0 };
strcat_s(szText, lpszText);
MapiMessage MAPImsg = { 0 };
MAPImsg.lpszSubject = szSubject;
MAPImsg.lpRecips = recipient;
MAPImsg.nRecipCount = 1;
MAPImsg.lpszNoteText = szText;
LHANDLE lhSession;
lpfnMAPILogOn(0, NULL, NULL, 0, 0, &lhSession);
ULONG nSent = lpfnMAPISendMail(lhSession, 0,
&MAPImsg, MAPI_LOGON_UI | MAPI_DIALOG, 0);
lpfnMAPILogOff(lhSession, 0, 0, 0);
FreeLibrary(hMAPI);
return (nSent == SUCCESS_SUCCESS || nSent == MAPI_E_USER_ABORT);
}
Have a question about something in this article? You can receive help directly from the article author. Sign up for a free trial to get started.
Comments (1)
Commented: