OSDN Git Service

Fix tail mass data problem at end of mail.
[tortoisegit/TortoiseGitJp.git] / src / TortoiseProc / Patch.cpp
index 7bebda9..bdf20e2 100644 (file)
@@ -31,46 +31,28 @@ void CPatch::ConvertToArray(CString &to,CStringArray &Array)
 \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
+       CHwSMTP mail;\r
        if(this->Parser(pathfile)       )\r
                return -1;\r
 \r
-       int at=TO.Find(_T('@'));\r
-       int start =0;\r
-       TO = TO.Tokenize(_T(";"),start);\r
-\r
-       CString server=TO.Mid(at+1);\r
-\r
-       PDNS_RECORD pDnsRecord; \r
-\r
-       DnsQuery(server, DNS_TYPE_MX,DNS_QUERY_BYPASS_CACHE,\r
-                                           NULL,                   //Contains DNS server IP address.\r
-                        &pDnsRecord,                //Resource record that contains the response.\r
-                        NULL); \r
-\r
-       CString name,address;\r
-       GetNameAddress(this->m_Author,name,address);\r
-\r
-\r
-       CStringArray attchments,CCArray;\r
+       CStringArray attachments,CCArray;\r
        if(bAttachment)\r
        {\r
-               attchments.Add(pathfile);\r
+               attachments.Add(pathfile);\r
        }\r
        \r
-       ConvertToArray(CC,CCArray);\r
+       //ConvertToArray(CC,CCArray);\r
 \r
-       SendEmail(FALSE,pDnsRecord->Data.MX.pNameExchange,\r
-               NULL,NULL,FALSE,address,TO,this->m_Author,TO,this->m_Subject,m_strBody,0,&attchments,&CCArray);\r
-                                       \r
-       DnsRecordListFree(pDnsRecord,DnsFreeRecordList);\r
+       CString sender;\r
+       sender.Format(_T("%s <%s> "),g_Git.GetUserName(),g_Git.GetUserEmail());\r
 \r
+       if(mail.SendSpeedEmail(this->m_Author,TO,this->m_Subject,this->m_strBody,NULL,&attachments,CC,25,sender))\r
+               return 0;\r
+       else\r
+       {\r
+               this->m_LastError=mail.GetLastErrorText();\r
+               return -1;\r
+       }\r
 #if 0\r
        CRegString server(REG_SMTP_SERVER);\r
        CRegDWORD  port(REG_SMTP_PORT,25);\r
@@ -109,40 +91,94 @@ int CPatch::Send(CString &pathfile,CString &TO,CString &CC,bool bAttachment)
 \r
 \r
 }\r
+int CPatch::Send(CTGitPathList &list,CString &To,CString &CC, CString &subject,bool bAttachment,CString *errortext)\r
+{\r
+       CStringArray attachments;\r
+       CString body;\r
+       for(int i=0;i<list.GetCount();i++)\r
+       {\r
+               CPatch patch;\r
+               patch.Parser((CString&)list[i].GetWinPathString());\r
+               if(bAttachment)\r
+               {\r
+                       attachments.Add(list[i].GetWinPathString());\r
+                       body+=patch.m_Subject;\r
+                       body+=_T("\r\n");\r
+\r
+               }else\r
+               {\r
+                       g_Git.StringAppend(&body,(BYTE*)patch.m_Body.GetBuffer(),CP_ACP,patch.m_Body.GetLength());\r
+               }\r
+\r
+       }\r
+\r
+       CHwSMTP mail;\r
+       \r
+       CString sender;\r
+       sender.Format(_T("%s <%s> "),g_Git.GetUserName(),g_Git.GetUserEmail());\r
+\r
+       if(mail.SendSpeedEmail(sender,To,subject,body,NULL,&attachments,CC,25,sender))\r
+               return 0;\r
+       else\r
+       {\r
+               if(errortext)\r
+                       *errortext=mail.GetLastErrorText();\r
+               return -1;\r
+       }\r
+\r
+}\r
 \r
 int CPatch::Parser(CString &pathfile)\r
 {\r
        CString str;\r
 \r
-       CStdioFile PatchFile;\r
+       CFile PatchFile;\r
 \r
        m_PathFile=pathfile;\r
        if( ! PatchFile.Open(pathfile,CFile::modeRead) )\r
                return -1;\r
        \r
        int i=0;\r
-       while(PatchFile.ReadString(str))\r
-       {\r
+#if 0\r
+       while(i<4)\r
+       {   PatchFile.ReadString(str);\r
                if(i==1)\r
                        this->m_Author=str.Right( str.GetLength() - 6 );\r
                if(i==2)\r
                        this->m_Date = str.Right( str.GetLength() - 6 );\r
                if(i==3)\r
                        this->m_Subject = str.Right( str.GetLength() - 8 );\r
-               if(i==4)\r
-                       break;\r
+               \r
                i++;            \r
        }\r
 \r
-       m_Body.resize(PatchFile.GetLength() - PatchFile.GetPosition());\r
-       PatchFile.Read(&m_Body.at(0),PatchFile.GetLength() - PatchFile.GetPosition());\r
-       m_Body.push_back(0);\r
-\r
+       LONGLONG offset=PatchFile.GetPosition();\r
+#endif\r
+       PatchFile.Read(m_Body.GetBuffer(PatchFile.GetLength()),PatchFile.GetLength());\r
+       m_Body.ReleaseBuffer();\r
        PatchFile.Close();\r
 \r
-       g_Git.StringAppend(&m_strBody,&m_Body[0],CP_ACP);\r
-       \r
+       int start=0;\r
+       CStringA one;\r
+       one=m_Body.Tokenize("\n",start);\r
+\r
+       one=m_Body.Tokenize("\n",start);\r
+       if(one.GetLength()>6)\r
+               g_Git.StringAppend(&m_Author,(BYTE*)one.GetBuffer()+6,CP_ACP,one.GetLength()-6);\r
+\r
+       one=m_Body.Tokenize("\n",start);\r
+       if(one.GetLength()>6)\r
+               g_Git.StringAppend(&m_Date,(BYTE*)one.GetBuffer()+6,CP_ACP,one.GetLength()-6);\r
 \r
+       one=m_Body.Tokenize("\n",start);\r
+       if(one.GetLength()>8)\r
+               g_Git.StringAppend(&m_Subject,(BYTE*)one.GetBuffer()+8,CP_ACP,one.GetLength()-8);\r
+\r
+       //one=m_Body.Tokenize("\n",start);\r
+       \r
+       g_Git.StringAppend(&m_strBody,(BYTE*)m_Body.GetBuffer()+start+1,CP_ACP,m_Body.GetLength()-start-1);\r
+       \r
+       return 0;\r
 }\r
 \r
 void CPatch::GetNameAddress(CString &in, CString &name,CString &address)\r
@@ -159,7 +195,7 @@ void CPatch::GetNameAddress(CString &in, CString &name,CString &address)
        else\r
                address=in;\r
 }\r
-\r
+#if 0\r
 void CPatch::AddRecipient(CSmtp &mail, CString &tolist, bool isCC)\r
 {\r
        int pos=0;\r
@@ -191,4 +227,5 @@ void CPatch::AddRecipient(CSmtp &mail, CString &tolist, bool isCC)
                                mail.AddRecipient(CUnicodeUtils::GetUTF8(one));\r
                }\r
        }\r
-}
\ No newline at end of file
+}\r
+#endif
\ No newline at end of file