4 #include "registry.h"
\r
5 #include "unicodeutils.h"
\r
18 int CPatch::Send(CString &pathfile,CString &TO,CString &CC,bool bAttachment)
\r
22 if(mail.GetLastError() != CSMTP_NO_ERROR )
\r
27 if(this->Parser(pathfile) )
\r
31 CRegString server(REG_SMTP_SERVER);
\r
32 CRegDWORD port(REG_SMTP_PORT,25);
\r
33 CRegDWORD bAuth(REG_SMTP_ISAUTH);
\r
34 CRegDWORD user(REG_SMTP_USER);
\r
35 CRegDWORD password(REG_SMTP_PASSWORD);
\r
37 mail.SetSMTPServer(CUnicodeUtils::GetUTF8(server),port);
\r
39 AddRecipient(mail,TO,false);
\r
40 AddRecipient(mail,CC,true);
\r
43 mail.AddAttachment(CUnicodeUtils::GetUTF8(pathfile));
\r
45 CString name,address;
\r
46 GetNameAddress(this->m_Author,name,address);
\r
47 mail.SetSenderName(CUnicodeUtils::GetUTF8(name));
\r
48 mail.SetSenderMail(CUnicodeUtils::GetUTF8(address));
\r
50 mail.SetXPriority(XPRIORITY_NORMAL);
\r
51 mail.SetXMailer("The Bat! (v3.02) Professional");
\r
53 mail.SetSubject(CUnicodeUtils::GetUTF8(this->m_Subject));
\r
55 mail.SetMessageBody((char*)&this->m_Body[0]);
\r
59 mail.SetLogin(CUnicodeUtils::GetUTF8((CString&)user));
\r
60 mail.SetPassword(CUnicodeUtils::GetUTF8((CString&)password));
\r
63 return !mail.Send();
\r
67 int CPatch::Parser(CString &pathfile)
\r
71 CStdioFile PatchFile;
\r
73 m_PathFile=pathfile;
\r
74 if( ! PatchFile.Open(pathfile,CFile::modeRead) )
\r
78 while(PatchFile.ReadString(str))
\r
81 this->m_Author=str.Right( str.GetLength() - 6 );
\r
83 this->m_Date = str.Right( str.GetLength() - 6 );
\r
85 this->m_Subject = str.Right( str.GetLength() - 8 );
\r
91 m_Body.resize(PatchFile.GetLength() - PatchFile.GetPosition());
\r
92 PatchFile.Read(&m_Body.at(0),PatchFile.GetLength() - PatchFile.GetPosition());
\r
98 void CPatch::GetNameAddress(CString &in, CString &name,CString &address)
\r
101 start=in.Find(_T('<'));
\r
102 end=in.Find(_T('>'));
\r
104 if(start >=0 && end >=0)
\r
106 name=in.Left(start);
\r
107 address=in.Mid(start+1,end-start-1);
\r
113 void CPatch::AddRecipient(CSmtp &mail, CString &tolist, bool isCC)
\r
118 CString one=tolist.Tokenize(_T(";"),pos);
\r
119 int start=one.Find(_T('<'));
\r
120 int end = one.Find(_T('>'));
\r
123 if( start>=0 && end >=0)
\r
125 name=CUnicodeUtils::GetUTF8(one.Left(start));
\r
126 address=CUnicodeUtils::GetUTF8(one.Mid(start+1,end-start-1));
\r
127 if(address.IsEmpty())
\r
130 mail.AddCCRecipient(address,name);
\r
132 mail.AddRecipient(address,name);
\r
139 mail.AddCCRecipient(CUnicodeUtils::GetUTF8(one));
\r
141 mail.AddRecipient(CUnicodeUtils::GetUTF8(one));
\r