47#define READ_BUF_SIZE 4096
49#define STORE_UNICODE_OK 0x00040000
89 char *subjectA =
NULL, *bodyA =
NULL;
93 IMAPITable* msg_table;
105 TRACE(
"Using Extended MAPI wrapper for MAPISendMail\n");
135 else if (rows->
cRows != 1)
174 unicode_aware =
TRUE;
180 WARN(
"No Unicode-capable mail client, and MAPI_FORCE_UNICODE is specified. MAPISendMail failed.\n");
199 TRACE(
"Unable to open Drafts folder; opening Outbox instead\n");
223 p.Value.bin.cb =
props[0].Value.bin.cb;
224 p.Value.bin.lpb =
props[0].Value.bin.lpb;
233 p.Value.lpszW =
message->lpszSubject;
240 p.Value.lpszA = subjectA;
269 ULONG num_attach = 0;
280 if (!
message->lpFiles[
i].lpszPathName)
301 if (
message->lpFiles[
i].lpszPathName[
i] ==
'\\' ||
302 message->lpFiles[
i].lpszPathName[
i] ==
'/')
316 TRACE(
"Unable to create attachment\n");
364 TRACE(
"%d bytes written of attachment\n",
size);
366 IStream_Commit(
stream, STGC_DEFAULT);
406 message_flags =
props->Value.ul;
439 TRACE(
"ShowForm failure: %x\n",
ret);
ACPI_SIZE strlen(const char *String)
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
#define ReadFile(a, b, c, d, e)
#define INVALID_HANDLE_VALUE
#define HeapFree(x, y, z)
#define FILE_ATTRIBUTE_NORMAL
#define WideCharToMultiByte
#define MultiByteToWideChar
static void cleanup(void)
static const WCHAR messageW[]
VOID WINAPI FreeProws(LPSRowSet lpRowSet)
MAPI_FUNCTIONS mapiFunctions
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
GLboolean GLenum GLenum GLvoid * values
GLuint GLint GLboolean GLint GLenum access
GLsizei const GLuint * paths
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat token
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
#define IDS_NO_MAPI_CLIENT
DECLSPEC_HIDDEN HINSTANCE hInstMAPI32
#define MAPI_E_USER_ABORT
#define MAPI_E_NOT_SUPPORTED
MAPISENDDOCUMENTS MAPISendDocuments
MAPISENDMAILW MAPISendMailW
#define MAPI_E_LOGIN_FAILURE
#define MAPI_FORCE_UNICODE
#define MAPI_E_UNICODE_NOT_SUPPORTED
MAPISENDMAIL MAPISendMail
MAPIFREEBUFFER MAPIFreeBuffer
#define MAPI_E_USER_CANCEL
#define IMsgStore_OpenEntry(p, a, b, c, d, e, f)
#define IMessage_CreateAttach(p, a, b, c, d)
#define IMAPIFolder_Release(p)
#define IAttach_SetProps(p, a, b, c)
#define IAttach_OpenProperty(p, a, b, c, d, e)
#define IMAPITable_SetColumns(p, a, b)
#define SizedSPropTagArray(n, id)
#define IAttach_SaveChanges(p, a)
#define IMessage_OpenProperty(p, a, b, c, d, e)
#define IMsgStore_Release(p)
#define IMessage_SaveChanges(p, a)
#define IMsgStore_GetReceiveFolder(p, a, b, c, d, e)
#define IAttach_Release(p)
#define IMessage_SetProps(p, a, b, c)
#define IMAPITable_QueryRows(p, a, b, c)
#define IMAPIFolder_CreateMessage(p, a, b, c)
#define IMAPITable_Release(p)
#define KEEP_OPEN_READONLY
#define IMessage_GetProps(p, a, b, c, d)
#define IMAPIFolder_GetProps(p, a, b, c, d)
#define IMessage_Release(p)
#define IMsgStore_GetProps(p, a, b, c, d)
#define KEEP_OPEN_READWRITE
#define IMAPISession_Logoff(p, a, b, c)
#define IMAPISession_GetMsgStoresTable(p, a, b)
#define IMAPISession_Release(p)
MAPIUNINITIALIZE MAPIUninitialize
#define IMAPISession_PrepareForm(p, a, b, c)
#define IMAPISession_OpenMsgStore(p, a, b, c, d, e, f)
MAPIINITIALIZE MAPIInitialize
#define IMAPISession_ShowForm(p, a, b, c, d, e, f, g, h, i, j, k)
static CHAR filenameA[MAX_PATH]
interface IStream * LPSTREAM
static ULONG sendmail_extended_mapi(LHANDLE mapi_session, ULONG_PTR uiparam, lpMapiMessageW message, FLAGS flags)
static lpMapiRecipDesc convert_recipient_from_unicode(lpMapiRecipDescW recipW, lpMapiRecipDesc dest)
static LPSTR convert_from_unicode(LPCWSTR wstr)
static LPWSTR convert_to_unicode(LPSTR str)
LPMAPISENDMAIL MAPISendMail
LPMAPISENDDOCUMENTS MAPISendDocuments
LPMAPISENDMAILW MAPISendMailW
lpMapiRecipDesc lpOriginator
static const WCHAR props[]
_Must_inspect_result_ _In_ WDFKEY _In_ PCUNICODE_STRING _Out_opt_ PUSHORT _Inout_opt_ PUNICODE_STRING Value
static const WCHAR * error_msg[8]
int WINAPI LoadStringW(_In_opt_ HINSTANCE hInstance, _In_ UINT uID, _Out_writes_to_(cchBufferMax, return+1) LPWSTR lpBuffer, _In_ int cchBufferMax)
int WINAPI MessageBoxW(_In_opt_ HWND hWnd, _In_opt_ LPCWSTR lpText, _In_opt_ LPCWSTR lpCaption, _In_ UINT uType)
#define MB_ICONEXCLAMATION