Init
This commit is contained in:
121
Samples/CrashReporter/SendFileTo.cpp
Normal file
121
Samples/CrashReporter/SendFileTo.cpp
Normal file
@ -0,0 +1,121 @@
|
||||
/*
|
||||
* Original work: Copyright (c) 2014, Oculus VR, Inc.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This source code is licensed under the BSD-style license found in the
|
||||
* RakNet License.txt file in the licenses directory of this source tree. An additional grant
|
||||
* of patent rights can be found in the RakNet Patents.txt file in the same directory.
|
||||
*
|
||||
*
|
||||
* Modified work: Copyright (c) 2016-2017, SLikeSoft UG (haftungsbeschränkt)
|
||||
*
|
||||
* This source code was modified by SLikeSoft. Modifications are licensed under the MIT-style
|
||||
* license found in the license.txt file in the root directory of this source tree.
|
||||
*/
|
||||
|
||||
#include "slikenet/WindowsIncludes.h"
|
||||
#include "SendFileTo.h"
|
||||
#include <shlwapi.h>
|
||||
#include <tchar.h>
|
||||
#include <stdio.h>
|
||||
#include <direct.h>
|
||||
#include "slikenet/linux_adapter.h"
|
||||
#include "slikenet/osx_adapter.h"
|
||||
|
||||
bool CSendFileTo::SendMail(HWND hWndParent, const char *strAttachmentFilePath, const char *strAttachmentFileName, const char *strSubject, const char *strBody, const char *strRecipient)
|
||||
{
|
||||
// if (strAttachmentFileName==0)
|
||||
// return false;
|
||||
|
||||
// if (!hWndParent || !::IsWindow(hWndParent))
|
||||
// return false;
|
||||
|
||||
HINSTANCE hMAPI = LoadLibrary(_T("MAPI32.DLL"));
|
||||
if (!hMAPI)
|
||||
return false;
|
||||
|
||||
ULONG (PASCAL *SendMail)(ULONG, ULONG_PTR, MapiMessage*, FLAGS, ULONG);
|
||||
(FARPROC&)SendMail = GetProcAddress(hMAPI, "MAPISendMail");
|
||||
|
||||
if (!SendMail)
|
||||
return false;
|
||||
|
||||
// char szFileName[_MAX_PATH];
|
||||
// char szPath[_MAX_PATH];
|
||||
char szName[_MAX_PATH];
|
||||
char szSubject[_MAX_PATH];
|
||||
char szBody[_MAX_PATH];
|
||||
char szAddress[_MAX_PATH];
|
||||
char szSupport[_MAX_PATH];
|
||||
//strcpy_s(szFileName, strAttachmentFileName);
|
||||
//strcpy_s(szPath, strAttachmentFilePath);
|
||||
if (strAttachmentFileName)
|
||||
strcpy_s(szName, strAttachmentFileName);
|
||||
strcpy_s(szSubject, strSubject);
|
||||
strcpy_s(szBody, strBody);
|
||||
sprintf_s(szAddress, "SMTP:%s", strRecipient);
|
||||
//strcpy_s(szSupport, "Support");
|
||||
|
||||
char fullPath[_MAX_PATH];
|
||||
if (strAttachmentFileName && strAttachmentFilePath)
|
||||
{
|
||||
if (strlen(strAttachmentFilePath)<3 ||
|
||||
strAttachmentFilePath[1]!=':' ||
|
||||
(strAttachmentFilePath[2]!='\\' &&
|
||||
strAttachmentFilePath[2]!='/'))
|
||||
{
|
||||
// Make relative paths absolute
|
||||
_getcwd(fullPath, _MAX_PATH);
|
||||
strcat_s(fullPath, "/");
|
||||
strcat_s(fullPath, strAttachmentFilePath);
|
||||
}
|
||||
else
|
||||
strcpy_s(fullPath, strAttachmentFilePath);
|
||||
|
||||
|
||||
// All slashes have to be \\ and not /
|
||||
int len=(unsigned int)strlen(fullPath);
|
||||
int i;
|
||||
for (i=0; i < len; i++)
|
||||
{
|
||||
if (fullPath[i]=='/')
|
||||
fullPath[i]='\\';
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
MapiFileDesc fileDesc;
|
||||
if (strAttachmentFileName && strAttachmentFilePath)
|
||||
{
|
||||
ZeroMemory(&fileDesc, sizeof(fileDesc));
|
||||
fileDesc.nPosition = (ULONG)-1;
|
||||
fileDesc.lpszPathName = fullPath;
|
||||
fileDesc.lpszFileName = szName;
|
||||
}
|
||||
|
||||
MapiRecipDesc recipDesc;
|
||||
ZeroMemory(&recipDesc, sizeof(recipDesc));
|
||||
recipDesc.lpszName = szSupport;
|
||||
recipDesc.ulRecipClass = MAPI_TO;
|
||||
recipDesc.lpszName = szAddress+5;
|
||||
recipDesc.lpszAddress = szAddress;
|
||||
|
||||
MapiMessage message;
|
||||
ZeroMemory(&message, sizeof(message));
|
||||
message.nRecipCount = 1;
|
||||
message.lpRecips = &recipDesc;
|
||||
message.lpszSubject = szSubject;
|
||||
message.lpszNoteText = szBody;
|
||||
if (strAttachmentFileName && strAttachmentFilePath)
|
||||
{
|
||||
message.nFileCount = 1;
|
||||
message.lpFiles = &fileDesc;
|
||||
}
|
||||
|
||||
int nError = SendMail(0, (ULONG_PTR)hWndParent, &message, MAPI_LOGON_UI|MAPI_DIALOG, 0);
|
||||
|
||||
if (nError != SUCCESS_SUCCESS && nError != MAPI_USER_ABORT && nError != MAPI_E_LOGIN_FAILURE)
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
Reference in New Issue
Block a user