static ug_nfc_share_result_e ug_nfc_share_make_mime_type_data_from_file_path(const char *path, uint8_t *type_data, uint32_t *type_size) { ug_nfc_share_result_e result = UG_NFC_SHARE_ERROR; char *extension = NULL; LOGD("[%s(): %d] BEGIN >>>>", __FUNCTION__, __LINE__); retv_if(path == NULL, result); retv_if(type_data == NULL, result); retv_if(type_size == NULL, result); LOGD("typedata = %p, typesize = %d", type_data, *type_size); memset(type_data, 0, *type_size); *type_size = 0; extension = strrchr(path, '.'); LOGD("extension = %s\n", GET_SAFE_STRING(extension)); if (extension != NULL) { char *mime_str = NULL; if (mime_type_get_mime_type(extension+1, &mime_str) == MIME_TYPE_ERROR_NONE) { LOGD("mime_str[%s]", mime_str); *type_size = strlen(mime_str); memcpy(type_data, mime_str, *type_size); result = UG_NFC_SHARE_OK; } else { LOGD("ERROR :: mime_type_get_mime_type failed"); result = UG_NFC_SHARE_ERROR; } } LOGD("mime type : %s", GET_SAFE_STRING((char *)type_data)); LOGD("[%s(): %d] END >>>>", __FUNCTION__, __LINE__); return result; }
BOOL CHwSMTP::SendEmail ( LPCTSTR lpszSmtpSrvHost, LPCTSTR lpszUserName, LPCTSTR lpszPasswd, BOOL bMustAuth, LPCTSTR lpszAddrFrom, LPCTSTR lpszAddrTo, LPCTSTR lpszSubject, LPCTSTR lpszBody, LPCTSTR lpszCharSet, // 字符集类型,例如:繁体中文这里应输入"big5",简体中文时输入"gb2312" CStringArray *pStrAryAttach/*=NULL*/, LPCTSTR pStrAryCC/*=NULL*/, UINT nSmtpSrvPort,/*=25*/ LPCTSTR pSender, LPCTSTR pToList ) { TRACE ( _T("发送邮件:%s, %s\n"), lpszAddrTo, lpszBody ); m_StrAryAttach.RemoveAll(); m_StrCC += GET_SAFE_STRING(pStrAryCC); m_csSmtpSrvHost = GET_SAFE_STRING ( lpszSmtpSrvHost ); if ( m_csSmtpSrvHost.GetLength() <= 0 ) { m_csLastError.Format ( _T("Parameter Error!") ); return FALSE; } m_csUserName = GET_SAFE_STRING ( lpszUserName ); m_csPasswd = GET_SAFE_STRING ( lpszPasswd ); m_bMustAuth = bMustAuth; if ( m_bMustAuth && m_csUserName.GetLength() <= 0 ) { m_csLastError.Format ( _T("Parameter Error!") ); return FALSE; } m_csAddrFrom = GET_SAFE_STRING ( lpszAddrFrom ); m_csAddrTo = GET_SAFE_STRING ( lpszAddrTo ); // m_csFromName = GET_SAFE_STRING ( lpszFromName ); // m_csReceiverName = GET_SAFE_STRING ( lpszReceiverName ); m_csSubject = GET_SAFE_STRING ( lpszSubject ); m_csBody = GET_SAFE_STRING ( lpszBody ); this->m_csSender = GET_SAFE_STRING(pSender); this->m_csToList = GET_SAFE_STRING(pToList); m_nSmtpSrvPort = nSmtpSrvPort; if ( lpszCharSet && lstrlen(lpszCharSet) > 0 ) m_csCharSet.Format ( _T("\r\n\tcharset=\"%s\"\r\n"), lpszCharSet ); if ( m_csAddrFrom.GetLength() <= 0 || m_csAddrTo.GetLength() <= 0 ) { m_csLastError.Format ( _T("Parameter Error!") ); return FALSE; } if ( pStrAryAttach ) { m_StrAryAttach.Append ( *pStrAryAttach ); } if ( m_StrAryAttach.GetSize() < 1 ) m_csMIMEContentType = FormatString ( _T( "text/plain; %s" ), m_csCharSet); // 创建Socket m_SendSock.Close(); if ( !m_SendSock.Create () ) { int nResult = GetLastError(); m_csLastError.Format ( _T("Create socket failed!") ); return FALSE; } // 连接到服务器 if ( !m_SendSock.Connect ( m_csSmtpSrvHost, m_nSmtpSrvPort ) ) { m_csLastError.Format ( _T("Connect to [ %s ] failed"), m_csSmtpSrvHost ); TRACE ( _T("%d\n"), GetLastError() ); return FALSE; } if ( !GetResponse( _T("220") ) ) return FALSE; m_bConnected = TRUE; BOOL ret= SendEmail(); m_SendSock.Close(); return ret; }
CEMailObject ( LPCTSTR lpszSmtpSrvHost, LPCTSTR lpszUserName, LPCTSTR lpszPasswd, BOOL bMustAuth, LPCTSTR lpszAddrFrom, LPCTSTR lpszAddrTo, LPCTSTR lpszFromName, LPCTSTR lpszReceiverName, LPCTSTR lpszSubject, LPCTSTR lpszBody, LPCTSTR lpszCharSet, CStringArray *pStrAryAttach, LPCTSTR pStrAryCC, UINT nSmtpSrvPort, LPCTSTR pSender, LPCTSTR pToList ) { m_csSmtpSrvHost = GET_SAFE_STRING(lpszSmtpSrvHost); m_csUserName = GET_SAFE_STRING(lpszUserName); m_csPasswd = GET_SAFE_STRING(lpszPasswd); m_bMustAuth = bMustAuth; m_csAddrFrom = GET_SAFE_STRING(lpszAddrFrom); m_csAddrTo = GET_SAFE_STRING(lpszAddrTo); m_csFromName = GET_SAFE_STRING(lpszFromName); m_csReceiverName = GET_SAFE_STRING(lpszReceiverName); m_csSubject = GET_SAFE_STRING(lpszSubject); m_csBody = GET_SAFE_STRING(lpszBody); m_csCharSet = GET_SAFE_STRING(lpszCharSet); m_StrCC = GET_SAFE_STRING(pStrAryCC); m_csSender = GET_SAFE_STRING(pSender); m_csToList = GET_SAFE_STRING(pToList); if ( pStrAryAttach ) m_StrAryAttach.Append ( *pStrAryAttach ); m_nSmtpSrvPort = nSmtpSrvPort; m_hThread = NULL; }
BOOL CHwSMTP::SendSpeedEmail ( LPCTSTR lpszAddrFrom, LPCTSTR lpszAddrTo, LPCTSTR lpszSubject, LPCTSTR lpszBody, LPCTSTR lpszCharSet, CStringArray *pStrAryAttach, LPCTSTR pStrAryCC, UINT nSmtpSrvPort, LPCTSTR pSend ) { BOOL ret=true; CString To; To += GET_SAFE_STRING(lpszAddrTo); To += _T(";"); To += GET_SAFE_STRING(pStrAryCC); std::map<CString,std::vector<CString>> Address; int start = 0; while( start >= 0 ) { CString one= To.Tokenize(_T(";"),start); one=one.Trim(); if(one.IsEmpty()) continue; CString addr; addr = GetServerAddress(one); if(addr.IsEmpty()) continue; Address[addr].push_back(one); } std::map<CString,std::vector<CString>>::iterator itr1 = Address.begin(); for( ; itr1 != Address.end(); ++itr1 ) { PDNS_RECORD pDnsRecord; PDNS_RECORD pNext; DnsQuery(itr1->first , DNS_TYPE_MX,DNS_QUERY_STANDARD, NULL, //Contains DNS server IP address. &pDnsRecord, //Resource record that contains the response. NULL ); CString to; to.Empty(); for(int i=0;i<itr1->second.size();i++) { to+=itr1->second[i]; to+=_T(";"); } if(to.IsEmpty()) continue; pNext=pDnsRecord; while(pNext) { if(pNext->wType == DNS_TYPE_MX) if(SendEmail(pNext->Data.MX.pNameExchange,NULL,NULL,false, lpszAddrFrom,to,lpszSubject,lpszBody,lpszCharSet,pStrAryAttach,pStrAryCC, 25,pSend,lpszAddrTo)) break; pNext=pNext->pNext; } if(pNext == NULL) ret = false; //SendEmail(itr1.first,NULL,NULL,false,lpszAddrFrom,,lpszFromname); DnsRecordListFree(pDnsRecord,DnsFreeRecordList); } return ret; }