#include "StdAfx.h"\r
#include "Patch.h"\r
+#include "csmtp.h"\r
+#include "registry.h"\r
+#include "unicodeutils.h"\r
\r
CPatch::CPatch()\r
{\r
\r
}\r
\r
+int CPatch::Send(CString &pathfile,CString &TO,CString &CC,bool bAttachment)\r
+{\r
+ CSmtp mail;\r
+ \r
+ if(mail.GetLastError() != CSMTP_NO_ERROR )\r
+ {\r
+ return -1;\r
+ }\r
+ \r
+ if(this->Parser(pathfile) )\r
+ return -1;\r
+\r
+\r
+ CRegString server(REG_SMTP_SERVER);\r
+ CRegDWORD port(REG_SMTP_PORT,25);\r
+ CRegDWORD bAuth(REG_SMTP_ISAUTH);\r
+ CRegDWORD user(REG_SMTP_USER);\r
+ CRegDWORD password(REG_SMTP_PASSWORD);\r
+\r
+ mail.SetSMTPServer(CUnicodeUtils::GetUTF8(server),port);\r
+\r
+ AddRecipient(mail,TO,false);\r
+ AddRecipient(mail,CC,true);\r
+\r
+ if( bAttachment )\r
+ mail.AddAttachment(CUnicodeUtils::GetUTF8(pathfile));\r
+\r
+ CString name,address;\r
+ GetNameAddress(this->m_Author,name,address);\r
+ mail.SetSenderName(CUnicodeUtils::GetUTF8(name));\r
+ mail.SetSenderMail(CUnicodeUtils::GetUTF8(address));\r
+\r
+ mail.SetXPriority(XPRIORITY_NORMAL);\r
+ mail.SetXMailer("The Bat! (v3.02) Professional");\r
+\r
+ mail.SetSubject(CUnicodeUtils::GetUTF8(this->m_Subject));\r
+\r
+ mail.SetMessageBody((char*)&this->m_Body[0]);\r
+\r
+ if(bAuth)\r
+ {\r
+ mail.SetLogin(CUnicodeUtils::GetUTF8((CString&)user));\r
+ mail.SetPassword(CUnicodeUtils::GetUTF8((CString&)password));\r
+ }\r
+\r
+ return !mail.Send();\r
+\r
+}\r
+\r
int CPatch::Parser(CString &pathfile)\r
{\r
CString str;\r
i++; \r
}\r
\r
+ m_Body.resize(PatchFile.GetLength() - PatchFile.GetPosition());\r
+ PatchFile.Read(&m_Body.at(0),PatchFile.GetLength() - PatchFile.GetPosition());\r
\r
PatchFile.Close();\r
\r
+}\r
+\r
+void CPatch::GetNameAddress(CString &in, CString &name,CString &address)\r
+{\r
+ int start,end;\r
+ start=in.Find(_T('<'));\r
+ end=in.Find(_T('>'));\r
+\r
+ if(start >=0 && end >=0)\r
+ {\r
+ name=in.Left(start);\r
+ address=in.Mid(start+1,end-start-1);\r
+ }\r
+ else\r
+ address=in;\r
+}\r
+\r
+void CPatch::AddRecipient(CSmtp &mail, CString &tolist, bool isCC)\r
+{\r
+ int pos=0;\r
+ while(pos>=0)\r
+ {\r
+ CString one=tolist.Tokenize(_T(";"),pos);\r
+ int start=one.Find(_T('<'));\r
+ int end = one.Find(_T('>'));\r
+ CStringA name;\r
+ CStringA address;\r
+ if( start>=0 && end >=0)\r
+ {\r
+ name=CUnicodeUtils::GetUTF8(one.Left(start));\r
+ address=CUnicodeUtils::GetUTF8(one.Mid(start+1,end-start-1));\r
+ if(address.IsEmpty())\r
+ continue;\r
+ if(isCC)\r
+ mail.AddCCRecipient(address,name);\r
+ else\r
+ mail.AddRecipient(address,name);\r
+\r
+ }else\r
+ {\r
+ if(one.IsEmpty())\r
+ continue;\r
+ if(isCC)\r
+ mail.AddCCRecipient(CUnicodeUtils::GetUTF8(one));\r
+ else\r
+ mail.AddRecipient(CUnicodeUtils::GetUTF8(one));\r
+ }\r
+ }\r
}
\ No newline at end of file