DragonNest/Server/ServiceManagerEx/SendMailDlg.cpp
2024-12-20 16:56:44 +08:00

130 lines
7.3 KiB
C++
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// SendMailDlg.cpp : 구현 파일입니다.
//
#include "stdafx.h"
#include "ServiceManagerEx.h"
#include "SendMailDlg.h"
#include "HttpUpdater.h"
#include "Log.h"
#include "ServerReporter.h"
#include "ServiceManager.h"
#include <sstream>
// CSendMailDlg 대화 상자입니다.
IMPLEMENT_DYNAMIC(CSendMailDlg, CDialog)
CSendMailDlg::CSendMailDlg(CWnd* pParent /*=NULL*/)
: CDialog(CSendMailDlg::IDD, pParent)
{
}
CSendMailDlg::~CSendMailDlg()
{
}
void CSendMailDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
}
BEGIN_MESSAGE_MAP(CSendMailDlg, CDialog)
ON_BN_CLICKED(IDOK, &CSendMailDlg::OnBnClickedOk)
END_MESSAGE_MAP()
void CSendMailDlg::OnBnClickedOk()
{
vector<RequestParam> parameters;
CString data;
GetDlgItemText(IDC_EDIT_EMAIL_SENDER, data);
parameters.push_back(RequestParam(L"SenderAddress", data.GetBuffer(0)));
GetDlgItemText(IDC_EDIT_EMAIL_RECIPIENTS, data);
parameters.push_back(RequestParam(L"ReceiverAddress", data.GetBuffer(0)));
GetDlgItemText(IDC_EDIT_EMAIL_SUBJECT, data);
parameters.push_back(RequestParam(L"Subject", data.GetBuffer(0)));
ServerReport::CServerReporter reporter;
const ConfigEx& config = ((CServiceManagerExApp*)::AfxGetApp())->GetConfigEx();
vector<ServerReport::CReportView*> report;
reporter.Report(config.serverReportDays, config.serverReportDetail, report);
wstringstream ss;
wchar_t partition_text [256];
g_pServiceManager->GetPartitionText(partition_text);
ss << partition_text << L"\r\n\r\n";
for each (ServerReport::CReportView* pReport in report)
{
ss << L"<" << pReport->GetDay() << L">" << L"\r\n\r\n";
for each (ServerReport::View* pView in pReport->GetViews())
{
ss << pView->overview.str();
}
ss << L"\r\n\r\n";
delete pReport;
}
parameters.push_back(RequestParam(L"Contents", ss.str()));
wstring buffer;
reporter.Report(config.serverReportDays, config.serverReportDetail, buffer);
if (buffer.size() >= 1024 * 1024 * 10)
buffer.clear();
vector<RequestParam> files;
files.push_back(RequestParam(L"AttachFile", GenerateServerReportFileName(), buffer));
const EMailConfig& email = config.GetEMailConfig();
RequestParam::boundary = email.boundary;
CHttpUpdater http;
if (!http.QueryPostUpload(email.serverIp.c_str(), NULL, NULL, email.serverPage.c_str(), parameters, files))
return;
g_Log.Log(LogType::_NORMAL, L"Send Email Succeeded.\r\n");
OnOK();
}
BOOL CSendMailDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: 여기에 추가 초기화 작업을 추가합니다.
const EMailConfig& email = ((CServiceManagerExApp*)::AfxGetApp())->GetConfigEx().GetEMailConfig();
SetDlgItemText(IDC_EDIT_EMAIL_SENDER, email.sender.c_str());
ServerReport::CServerReporter reporter;
const ConfigEx& config = ((CServiceManagerExApp*)::AfxGetApp())->GetConfigEx();
vector<ServerReport::CReportView*> report;
reporter.Report(config.serverReportDays, config.serverReportDetail, report);
wstringstream ss;
for (int i=0; i<(int)email.allowance.size(); i++)
{
if (!reporter.is_dbdelay && email.allowance[i].find(L"DB delayed") == 0)
continue;
ss << email.recipients[i] << L";";
}
SetDlgItemText(IDC_EDIT_EMAIL_RECIPIENTS, ss.str().c_str());
ss.str(L"");
CTime time = CTime::GetCurrentTime();
ss << GenerateServerReportNation() << L" " << time.Format(L"%Y-%m-%d").GetBuffer() << L" " << email.subject;
SetDlgItemText(IDC_EDIT_EMAIL_SUBJECT, ss.str().c_str());
ss.str(L"");
for each (wstring s in email.msg)
{
ss << s << L"\r\n";
}
SetDlgItemText(IDC_EDIT_EMAIL_MSG, ss.str().c_str());
return TRUE; // return TRUE unless you set the focus to a control
// 예외: OCX 속성 페이지는 FALSE를 반환해야 합니다.
}