m_csMIMEContentType = _T( "multipart/mixed");\r
m_csPartBoundary = _T( "WC_MAIL_PaRt_BoUnDaRy_05151998" );\r
m_csNoMIMEText = _T( "This is a multi-part message in MIME format." );\r
-// m_csCharSet = _T("\r\n\tcharset=\"iso-8859-1\"\r\n");\r
+ //m_csCharSet = _T("\r\n\tcharset=\"iso-8859-1\"\r\n");\r
}\r
\r
CHwSMTP::~CHwSMTP()\r
return TRUE;\r
}\r
// ÀûÓÃsocket·¢ËÍÊý¾Ý£¬Êý¾Ý³¤¶È²»Äܳ¬¹ý10M\r
-BOOL CHwSMTP::Send(LPCTSTR lpszData, ... )\r
+BOOL CHwSMTP::Send(CString &str )\r
{\r
if ( !m_bConnected )\r
{\r
return FALSE;\r
}\r
\r
- TCHAR *buf = NULL;\r
- // Ñ»·¸ñʽ»¯×Ö·û´®£¬Èç¹û»º³å²»¹»Ôò½«»º³å¼Ó´óÈ»ºóÖØÊÔÒÔ±£Ö¤»º³å¹»ÓÃͬʱÓÖ²»ÀË·Ñ\r
- for ( int nBufCount = 1024; nBufCount<10*1024*1024; nBufCount += 1024 )\r
- {\r
- buf = new TCHAR[nBufCount];\r
- if ( !buf )\r
- {\r
- ::AfxThrowMemoryException ();\r
- return FALSE;\r
- }\r
- memset ( buf, 0, nBufCount*sizeof(TCHAR) );\r
-\r
- va_list va;\r
- va_start (va, lpszData);\r
- int nLen = _vsnprintf_hw ((TCHAR*)buf, nBufCount-sizeof(TCHAR), lpszData, va);\r
- va_end(va);\r
- if ( nLen <= (int)(nBufCount-sizeof(TCHAR)) )\r
- break;\r
- delete[] buf; buf = NULL;\r
- }\r
- if ( !buf )\r
- {\r
- m_csLastError.Format ( _T("Memory too small or data too big.") );\r
- return FALSE;\r
- }\r
-\r
- CMultiByteString cbsData ( buf );\r
- delete[] buf; buf = NULL;\r
+ CMultiByteString cbsData ( str );\r
+ \r
TRACE ( _T("Send : %s\r\n"), cbsData.GetBuffer() );\r
if ( m_SendSock.Send ( cbsData.GetBuffer(), cbsData.GetLength() ) != cbsData.GetLength() )\r
{\r
gethostname ( (char*)szLocalHostName, sizeof(szLocalHostName) );\r
\r
// hello£¬ÎÕÊÖ\r
- if ( !Send ( _T("HELO %s\r\n"), GetCompatibleString(szLocalHostName,FALSE) ) )\r
+ CString str;\r
+ str.Format(_T("HELO %s\r\n"), GetCompatibleString(szLocalHostName,FALSE));\r
+ if ( !Send ( str ))\r
{\r
return FALSE;\r
}\r
return FALSE;\r
}\r
// ½áÊøÓʼþÕýÎÄ\r
- if ( !Send ( _T(".\r\n") ) ) return FALSE;\r
+ if ( !Send ( CString(_T(".\r\n") ) ) ) return FALSE;\r
if ( !GetResponse ( _T("250") ) )\r
return FALSE;\r
\r
// Í˳ö·¢ËÍ\r
if ( HANDLE_IS_VALID(m_SendSock.m_hSocket) )\r
- Send ( _T("QUIT\r\n") );\r
+ Send ( CString(_T("QUIT\r\n")) );\r
m_bConnected = FALSE;\r
\r
return bRet;\r
BOOL CHwSMTP::auth()\r
{\r
int nResponseCode = 0;\r
- if ( !Send ( _T("auth login\r\n") ) ) return FALSE;\r
+ if ( !Send ( CString(_T("auth login\r\n")) ) ) return FALSE;\r
if ( !GetResponse ( _T("334"), &nResponseCode ) ) return FALSE;\r
if ( nResponseCode != 334 ) // ²»ÐèÒªÑéÖ¤Óû§ÃûºÍÃÜÂë\r
return TRUE;\r
CString csBase64_UserName = GetCompatibleString ( Base64Encode.Encode ( cbsUserName.GetBuffer(), cbsUserName.GetLength() ).GetBuffer(0), FALSE );\r
CString csBase64_Passwd = GetCompatibleString ( Base64Encode.Encode ( cbsPasswd.GetBuffer(), cbsPasswd.GetLength() ).GetBuffer(0), FALSE );\r
\r
- if ( !Send ( _T("%s\r\n"), csBase64_UserName ) ) return FALSE;\r
+ CString str;\r
+ str.Format( _T("%s\r\n"), csBase64_UserName );\r
+ if ( !Send ( str ) ) \r
+ return FALSE;\r
+\r
if ( !GetResponse ( _T("334") ) )\r
{\r
m_csLastError.Format ( _T("Authentication UserName failed") );\r
return FALSE;\r
}\r
+ \r
+ str.Format(_T("%s\r\n"), csBase64_Passwd );\r
+ if ( !Send ( str ) ) \r
+ return FALSE;\r
\r
- if ( !Send ( _T("%s\r\n"), csBase64_Passwd ) ) return FALSE;\r
if ( !GetResponse ( _T("235") ) )\r
{\r
m_csLastError.Format ( _T("Authentication Password failed") );\r
\r
BOOL CHwSMTP::SendHead()\r
{\r
- if ( !Send ( _T("MAIL From: <%s>\r\n"), m_csAddrFrom ) ) return FALSE;\r
+ CString str;\r
+ str.Format( _T("MAIL From: <%s>\r\n"), m_csAddrFrom );\r
+ if ( !Send ( str ) ) return FALSE;\r
+\r
if ( !GetResponse ( _T("250") ) ) return FALSE;\r
- if ( !Send ( _T("RCPT TO: <%s>\r\n"), m_csAddrTo ) ) return FALSE;\r
+ \r
+ str.Format(_T("RCPT TO: <%s>\r\n"), m_csAddrTo );\r
+ if ( !Send ( str ) ) return FALSE;\r
if ( !GetResponse ( _T("250") ) ) return FALSE;\r
\r
for ( int i=0; i<m_StrAryCC.GetSize(); i++ )\r
{\r
- if ( !Send ( _T("RCPT TO: <%s>\r\n"), m_StrAryCC.GetAt(i) ) ) return FALSE;\r
+ str.Format(_T("RCPT TO: <%s>\r\n"), m_StrAryCC.GetAt(i) );\r
+ if ( !Send ( str ) ) return FALSE;\r
if ( !GetResponse ( _T("250") ) ) return FALSE;\r
}\r
- if ( !Send ( _T("DATA\r\n") ) ) return FALSE;\r
- if ( !GetResponse ( _T("354") ) ) return FALSE; \r
+ if ( !Send ( CString(_T("DATA\r\n") ) ) ) return FALSE;\r
+ if ( !GetResponse ( CString(_T("354") )) ) return FALSE; \r
\r
return TRUE;\r
}\r
csSubject += _T("\r\n");\r
csSubject += FormatString ( _T("From: %s\r\nTo: %s\r\n"), m_csSenderName, m_csReceiverName );\r
csSubject += FormatString ( _T("Subject: %s\r\n"), m_csSubject );\r
- csSubject += FormatString ( _T("X-Mailer: chrys\r\nMIME-Version: 1.0\r\nContent-Type: %s; %s boundary=%s\r\n\r\n") , \r
+ csSubject += FormatString ( _T("X-Mailer: TortoiseGit\r\nMIME-Version: 1.0\r\nContent-Type: %s; %s boundary=%s\r\n\r\n") , \r
m_csMIMEContentType, m_csCharSet, m_csPartBoundary );\r
\r
return Send ( csSubject );\r
csBody += csTemp;\r
}\r
\r
- csTemp.Format ( _T("%s\r\n"), m_csBody );\r
- csBody += csTemp;\r
-\r
- if ( m_StrAryAttach.GetSize() > 0 )\r
- {\r
- csTemp.Format ( _T("--%s\r\n"), m_csPartBoundary );\r
- csBody += csTemp;\r
- }\r
+ //csTemp.Format ( _T("%s\r\n"), m_csBody );\r
+ csBody += m_csBody;\r
+ csBody += _T("\r\n");\r
\r
return Send ( csBody );\r
}\r
CString csShortFileName = csTemp.GetBuffer(0) + csTemp.ReverseFind ( '\\' );\r
csShortFileName.TrimLeft ( _T("\\") );\r
\r
+ csTemp.Format ( _T("--%s\r\n"), m_csPartBoundary );\r
+ csAttach += csTemp;\r
+\r
csTemp.Format ( _T("Content-Type: application/octet-stream; file=%s\r\n"), csShortFileName );\r
csAttach += csTemp;\r
\r
if(!SendBuffer( filedata.GetBuffer() ))\r
return FALSE;\r
\r
- csAttach.Empty();\r
- csTemp.Format ( _T("--%s\r\n"), m_csPartBoundary );\r
- csAttach += csTemp;\r
\r
delete[] pBuf;\r
\r
- return Send ( csAttach );\r
+ return TRUE;\r
+ //return Send ( csAttach );\r
}\r
\r
CString CHwSMTP::GetLastErrorText()\r