BOOL CSMTP::transmit_message(CMailMessage * msg) { CString sFrom; CString sTo; CString sTemp; CString sEmail; ASSERT( msg != NULL ); if( !m_bConnected ) { m_sError = _T( "Must be connected" ); return FALSE; } // Send the MAIL command // //sFrom.Format( _T( "MAIL From: <%s>\r\n" ), (LPCTSTR)msg->m_sFrom ); sFrom = _T( "MAIL From: <*****@*****.**>\r\n" ); OutputDebugString(sFrom); m_wsSMTPServer.Send( (LPCTSTR)sFrom, sFrom.GetLength() ); if( !get_response( GENERIC_SUCCESS ) ) return FALSE; // Send RCPT commands (one for each recipient) // for( int i = 0; i < msg->GetNumRecipients(); i++ ) { msg->GetRecipient( sEmail, sTemp, i ); sTo.Format( _T( "RCPT TO: <%s>\r\n" ), (LPCTSTR)sEmail ); OutputDebugString(sTo); m_wsSMTPServer.Send( (LPCTSTR)sTo, sTo.GetLength() ); get_response( GENERIC_SUCCESS ); } //*** Begin <JFO> for(int i = 0; i < msg->GetNumRecipients(CMailMessage::CC); i++ ) { msg->GetRecipient( sEmail, sTemp, i, CMailMessage::CC ); sTo.Format( _T( "RCPT TO: <%s>\r\n" ), (LPCTSTR)sEmail ); OutputDebugString(sTo); m_wsSMTPServer.Send( (LPCTSTR)sTo, sTo.GetLength() ); get_response( GENERIC_SUCCESS ); } for(int i = 0; i < msg->GetNumRecipients(CMailMessage::BCC); i++ ) { msg->GetRecipient( sEmail, sTemp, i, CMailMessage::BCC ); sTo.Format( _T( "RCPT TO: <%s>\r\n" ), (LPCTSTR)sEmail ); OutputDebugString(sTo); m_wsSMTPServer.Send( (LPCTSTR)sTo, sTo.GetLength() ); get_response( GENERIC_SUCCESS ); } //*** End // Send the DATA command sTemp = _T( "DATA\r\n" ); m_wsSMTPServer.Send( (LPCTSTR)sTemp, sTemp.GetLength() ); if( !get_response( DATA_SUCCESS ) ) { return FALSE; } // Send the header // m_wsSMTPServer.Send( (LPCTSTR)msg->m_sHeader, msg->m_sHeader.GetLength() ); // Send the body // sTemp = cook_body( msg ); m_wsSMTPServer.Send( (LPCTSTR)sTemp, sTemp.GetLength() ); // Signal end of data // sTemp = _T( "\r\n.\r\n" ); m_wsSMTPServer.Send( (LPCTSTR)sTemp, sTemp.GetLength() ); if( !get_response( GENERIC_SUCCESS ) ) { return FALSE; } return TRUE; }
BOOL CSMTP::transmit_message(CMailMessage * msg) { puts("transmit message"); CString sFrom; CString sTo; CString sTemp; CString sEmail; if( !m_bConnected ) { //m_sError = _T( "通信未建立" );//<%IDS_SMTP_14%> m_sError = ::FuncGetStringFromIDS("<%IDS_SMTP_14%>"); return FALSE; } // Send the MAIL command // sFrom.Format( _T( "MAIL From: <%s>\r\n" ), (LPCTSTR)msg->m_sFrom ); send(m_wsSMTPServer, (LPCTSTR)sFrom, sFrom.GetLength(), 0); if( !get_response( GENERIC_SUCCESS ) ) return FALSE; // Send RCPT commands (one for each recipient) // for( int i = 0; i < msg->GetNumRecipients(); i++ ) { msg->GetRecipient( sEmail, sTemp, i ); sTo.Format( _T( "RCPT TO: <%s>\r\n" ), (LPCTSTR)sEmail ); send(m_wsSMTPServer, (LPCTSTR)sTo, sTo.GetLength(), 0); get_response( GENERIC_SUCCESS ); } //*** Begin <JFO> for( i = 0; i < msg->GetNumRecipients(CMailMessage::CC); i++ ) { msg->GetRecipient( sEmail, sTemp, i, CMailMessage::CC ); sTo.Format( _T( "RCPT TO: <%s>\r\n" ), (LPCTSTR)sEmail ); send(m_wsSMTPServer, (LPCTSTR)sTo, sTo.GetLength(), 0); get_response( GENERIC_SUCCESS ); } for( i = 0; i < msg->GetNumRecipients(CMailMessage::BCC); i++ ) { msg->GetRecipient( sEmail, sTemp, i, CMailMessage::BCC ); sTo.Format( _T( "RCPT TO: <%s>\r\n" ), (LPCTSTR)sEmail ); send(m_wsSMTPServer, (LPCTSTR)sTo, sTo.GetLength(), 0); get_response( GENERIC_SUCCESS ); } //*** End // Send the DATA command sTemp = _T( "DATA\r\n" ); send(m_wsSMTPServer, (LPCTSTR)sTemp, sTemp.GetLength(), 0); if( !get_response( DATA_SUCCESS ) ) { return FALSE; } // Send the header // send(m_wsSMTPServer, (LPCTSTR)msg->m_sHeader, msg->m_sHeader.GetLength(), 0); // Send the body // sTemp = cook_body( msg ); send(m_wsSMTPServer, (LPCTSTR)sTemp, sTemp.GetLength(), 0); // Signal end of data // sTemp = _T( "\r\n.\r\n" ); send(m_wsSMTPServer, (LPCTSTR)sTemp, sTemp.GetLength(), 0); if( !get_response( GENERIC_SUCCESS ) ) { return FALSE; } return TRUE; }