#include "StdAfx.h" #include "Threadfun.h" /************************************************************************/ /* 发送邮件线程:发送邮件 */ /************************************************************************/ UINT WorkForce(LPVOID lpParameter) { if(pReceiveThreadH) { WaitForSingleObject(pReceiveThreadH->m_hThread,INFINITE); } CString m_EmailAddr =_T("发件人邮箱地址"); CString m_strpwd = =_T("发件人邮箱密码"); CString MailAddr = m_EmailAddr;//发件邮件服务器 /////////////////////////////////////////////////////////////////// //发件邮件服务器:字符串拼接开始 //连接字符串, CString strstr; strstr = _T(":"); strstr += m_strpwd; strstr += _T("@"); MailAddr .Replace(_T("@"), strstr); MailAddr .Replace(_T("@"), _T("@smtp.")); //字符串拼接结束 ////////////////////////////////////////////////////////////////// //邮件内容字符串 CString FromName =_T("发件人姓名"); CString strTitle =_T("邮件主题"); CString strRstr = _T("发送给"); //插入数据库字符串; //邮箱地址。 CString strAddr=_T("收件人邮箱地址"); //邮箱内容。 CString strContent=_T("邮件内容"); //判断发送是否成功. bool isSuccess = true; try { jmail::IMessagePtr pmessage("JMail.message"); pmessage->AddRecipient ((_bstr_t)strAddr,"",""); //收件人邮箱地址,收件人姓名为空 pmessage->From =(_bstr_t)MailAddr; //发件人邮箱地址 pmessage->FromName =(_bstr_t)FromName; //发件人姓名 pmessage->Subject=(_bstr_t)strTitle; //邮件主题 pmessage->Body =(_bstr_t)strContent; //邮件正文 pmessage->Priority =3; //邮件优先级 pmessage->Charset ="GB2312"; //字符集 //发送邮件 pmessage->Send(_bstr_t(m_EmailAddr),VARIANT_FALSE); pmessage.Release (); } catch(_com_error e) { //设置isSuccess发送失败. isSuccess = false; } } /************************************************************************/ /* 接收邮件线程:接收邮件 */ /************************************************************************/ UINT WorkForceRecive(LPVOID lpParameter1) { if(pSendThreadH) { WaitForSingleObject(pSendThreadH->m_hThread,INFINITE); } PRECEIVEPARA receivepara = (PRECEIVEPARA)lpParameter1; //打开连接。 jmail::IPOP3Ptr pPOP3("JMail.POP3"); pPOP3->Timeout = 30; // 设置连接服务器超时限制 30S try { pPOP3->Connect( (LPCTSTR)receivepara->mailname, (LPCTSTR)receivepara->mailpswd, (LPCTSTR)receivepara->mailserver, 110); // 连接邮件服务器,110为pop3默认端口号 } catch (_com_error e) { //AfxMessageBox(_T("连接失败!请检查邮箱地址和密码是否正确!")); return 0; } m_Pop3 = pPOP3; //读取邮箱中的信件 jmail::IMessagesPtr pMessages; pMessages = m_Pop3->Messages; // 已下载的邮件的实际个数(因为第0个ITEM是未用的,所以-1) long lCount = pMessages->Count - 1; long undealID=1;//未做回复处理的邮件的ID //如果邮箱是空的就返回。 if(lCount == 0) { //AfxMessageBox(_T("信箱为空")); return 0; } else { jmail::IMessagePtr pMessage; // 遍历每封信,获取和最后一条记录的UID和发信人值相同的信的i值,即最后处理的那一封信 if(lastUIDinThread!=_T("")&&lastSenderinThread!=_T("")) { for(long i = 1; i <= lCount; i++) { try { pMessage = pMessages->Item[i]; } catch (_com_error e) { i=i-1; continue; } //信件的具体信息 _bstr_t bstrFrom = pMessage->From;//发信人 CString UID=(TCHAR*)m_Pop3->GetMessageUID(i);//收信的UID _bstr_t bstrSubject = pMessage->Subject;//发信主题 _bstr_t bstrBody = pMessage->Body;//发信内容 COleDateTime oleDate = pMessage->Date; //收信时间 pMessage.Release(); } } //////////////////////////////////////////////////////////////////////////////////////////////////// //断开POP3连接。 try { m_Pop3->Disconnect(); } catch(_com_error e) { //AfxMessageBox(_T("断开连接失败!请确认已连接!")); return 0; } }
浙公网安备 33010602011771号