Example #1
0
BOOL CEmailThread::DoThread( LPVOID pData )
{
	HANDLE	phCmd[ 3 ];

	phCmd[ 0 ] = m_hStop;
	phCmd[ 1 ] = m_hEmail;

	// Wait
	DWORD ret = WaitForMultipleObjects( 2, phCmd, FALSE, INFINITE );

	// Verify range
	if ( ret < WAIT_OBJECT_0 ) return TRUE;

	// Get event index
	ret -= WAIT_OBJECT_0;

	// Check for stop
	if ( ret == 0 ) return FALSE;

	// Do we want to send an e-mail?
	else if ( ret == 1 )
	{
		SendEmail();
		ResetEvent( m_hEmail );
	} // end else if

	return TRUE;
}
Example #2
0
int main(int artc, char **argv)
{
    S8 s8EmailTo[128] = {"*****@*****.**"};/* 邮件发送地址 */
    S8 s8EmailFrom[128] = {"*****@*****.**"};/* 邮件发送账户 */
    S8 s8EmailPwd[128]= {"3306492351"}; /* 邮件发送账户密码 */
    S8 s8EmailTitle[128]={"test"};/* 邮件标题 */
    S8 s8EmailBody[1024]={"It's an email test with two jpeg picture!"};/* 邮件内容 */ 
    S8 s8EmailAccount[128] ={"tango_zhu"};
    S8 s8AttachName[32] = {"9.jpg"};    
    S8 s8AttachPath[32] = {"./9.jpg"};
    S8 s8AttachName1[32] = {"8.jpg"};    
    S8 s8AttachPath1[32] = {"./8.jpg"};
    int i;
    EMAIL_INFO_STRU stEmailInfo;
    ATTACHMENT_ARRAY_STRU stAttach;
    stEmailInfo.ps8EmailBody = s8EmailBody;
    stEmailInfo.ps8EmailFrom = s8EmailFrom;
    stEmailInfo.ps8EmailPwd = s8EmailPwd;
    stEmailInfo.ps8EmailTitle = s8EmailTitle;
    stEmailInfo.ps8EmailTo = s8EmailTo;   
    stEmailInfo.ps8EmailAccount = s8EmailAccount;
    memset(&stAttach, 0, sizeof(ATTACHMENT_ARRAY_STRU));
    stAttach.stAttachment[0].ps8FileName = s8AttachName;
    stAttach.stAttachment[0].ps8FilePath = s8AttachPath;
    stAttach.stAttachment[1].ps8FileName = s8AttachName1;
    stAttach.stAttachment[1].ps8FilePath = s8AttachPath1;
    stAttach.u32AttachSum = 2;

   while(1)
   {
        i ++;
        printf("send email %d times \n",i);
        SendEmail(&stEmailInfo, &stAttach);
        sleep(1800);
    
   }   
   return 0;
}
Example #3
0
void main(int argc, char *argv[])
{
    void getBinPath(char* argv, char* des);
    char receiver[50]={0};//收件人
    char subject[1024]={0}; //主题
    char content[EMAILLEN]={0};//正文
    FILE *fp;
    //printf("%s\n",argv[0]);
    char path[1024];
    char path1[1024];

    getBinPath(argv[0], path);
    //printf("%s\n", path);

    strcpy(path1, path);
    strcat(path1, "/receiver");
    if(fp = fopen(path1,"r"))
    {
	fgets(receiver, 50, fp);
	fclose(fp);
    }
    else
	printf("open receiver fail\n");

    strcpy(path1, path);
    strcat(path1, "/subject");
    if(fp = fopen(path1,"r"))
    {
	fgets(subject, 1024, fp);
	fclose(fp);
    }
    else
	printf("open subject fail\n");

    strcpy(path1, path);
    strcat(path1, "/content");
    //下面先把content进行一次字符转换,不然在windows受到邮件中文会乱码
    /***********/
    char temp[1024];
//    strcpy(temp, "iconv -f utf-8 -t gb2312 ");
//    strcpy(temp, "iconv -f utf-8 -t GPK  ");
    strcpy(temp, "iconv -f UTF-8 -t CP936 ");
    strcat(temp, path1);
    strcat(temp, " -o ");
    strcat(temp, path);
    strcat(temp, "/content.temp");
    //printf("%s\n",temp);
    system(temp);
    strcpy(temp, "mv ");
    strcat(temp, path);
    strcat(temp, "/content.temp ");
    strcat(temp, path1);
    //printf("%s\n", temp);
    system(temp);
    /***********/
    if(fp = fopen(path1,"r"))
    {
	char temp[1024]={0};
	while(1)
	{
	    if(NULL == fgets(temp, 1024, fp))
		break;
	    strcat(content, temp);
	}
	fclose(fp);
    }
    else
	printf("open content fail\n");

    //printf("%s\n",receiver);
    //printf("%s\n",subject);
    //printf("%s\n",content);
    SendEmail(receiver, content, subject);
}
Example #4
0
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;
}
Example #5
0
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;
}