Code/Resource
Windows Develop
Linux-Unix program
Internet-Socket-Network
Web Server
Browser Client
Ftp Server
Ftp Client
Browser Plugins
Proxy Server
Email Server
Email Client
WEB Mail
Firewall-Security
Telnet Server
Telnet Client
ICQ-IM-Chat
Search Engine
Sniffer Package capture
Remote Control
xml-soap-webservice
P2P
WEB(ASP,PHP,...)
TCP/IP Stack
SNMP
Grid Computing
SilverLight
DNS
Cluster Service
Network Security
Communication-Mobile
Game Program
Editor
Multimedia program
Graph program
Compiler program
Compress-Decompress algrithms
Crypt_Decrypt algrithms
Mathimatics-Numerical algorithms
MultiLanguage
Disk/Storage
Java Develop
assembly language
Applications
Other systems
Database system
Embeded-SCM Develop
FlashMX/Flex
source in ebook
Delphi VCL
OS Develop
MiddleWare
MPI
MacOS develop
LabView
ELanguage
Software/Tools
E-Books
Artical/Document
SendDlg.cpp
Package: MailMulti.rar [view]
Upload User: tjsct008
Upload Date: 2016-12-02
Package Size: 3750k
Code Size: 3k
Category:
WEB Mail
Development Platform:
Visual C++
- // SendDlg.cpp : implementation file
- //
- #include "stdafx.h"
- #include "MailMulti.h"
- #include "SendDlg.h"
- #include "MailMessage.h"
- #include "SMTP.h"
- #ifdef _DEBUG
- #define new DEBUG_NEW
- #undef THIS_FILE
- static char THIS_FILE[] = __FILE__;
- #endif
- /////////////////////////////////////////////////////////////////////////////
- // CSendDlg dialog
- CSendDlg::CSendDlg(CWnd* pParent /*=NULL*/)
- : CDialog(CSendDlg::IDD, pParent)
- {
- //{{AFX_DATA_INIT(CSendDlg)
- m_strStatus = _T("");
- //}}AFX_DATA_INIT
- }
- void CSendDlg::DoDataExchange(CDataExchange* pDX)
- {
- CDialog::DoDataExchange(pDX);
- //{{AFX_DATA_MAP(CSendDlg)
- DDX_Control(pDX, IDC_ANIMATE, m_ctrlAnimate);
- DDX_Text(pDX, IDC_STATUS, m_strStatus);
- //}}AFX_DATA_MAP
- }
- BEGIN_MESSAGE_MAP(CSendDlg, CDialog)
- //{{AFX_MSG_MAP(CSendDlg)
- ON_MESSAGE(WM_THREADFINISHED,OnThreadFinished)
- //}}AFX_MSG_MAP
- END_MESSAGE_MAP()
- /////////////////////////////////////////////////////////////////////////////
- // CSendDlg message handlers
- int m_nCount = 0;
- void CSendDlg::OnCancel()
- {
- // TODO: Add extra cleanup here
- CDialog::OnCancel();
- }
- LRESULT CSendDlg::OnThreadFinished(WPARAM wParam,LPARAM lParam)
- {
- CDialog::OnOK();
- return 0;
- }
- BOOL CSendDlg::OnInitDialog()
- {
- CDialog::OnInitDialog();
- // TODO: Add extra initialization here
- AfxBeginThread(SendMailMulti,this);
- m_ctrlAnimate.Open(IDR_AVI);
- return TRUE; // return TRUE unless you set the focus to a control
- // EXCEPTION: OCX Property Pages should return FALSE
- }
- UINT SendMailMulti(LPVOID pParam)
- {
- CSendDlg * pSendThread = (CSendDlg *)pParam;
- CSMTP smtp(pSendThread->m_strSmtpServer,pSendThread->m_nPort);
- CMailMessage msg;
- msg.m_strFrom = pSendThread->m_strFrom;
- msg.m_strTo = pSendThread->m_strTo;
- msg.m_strBody = pSendThread->m_strBody;
- msg.m_strSubject = pSendThread->m_strSubject;
- pSendThread->EnableUI(FALSE,TRUE);
- pSendThread->SetDlgItemText(IDC_STATUS,"正在连接服务器....");
- if(!smtp.Connect())
- {
- AfxMessageBox(smtp.GetLastError());
- pSendThread->SetDlgItemText(IDC_STATUS,"连接服务器失败!");
- pSendThread->EnableUI(TRUE,TRUE);
- return FALSE;
- }
- CProgressCtrl * pBar;
- pBar = (CProgressCtrl *)
- pSendThread->GetDlgItem(IDC_PROGRESS_SEND);
- for(m_nCount;m_nCount<pSendThread->m_nCopyNumber;
- ::InterlockedIncrement((long *)&m_nCount))
- {
- if(!smtp.SendMessage(&msg))
- {
- AfxMessageBox(smtp.GetLastError());
- smtp.DisConnect();
- pSendThread->SetDlgItemText(IDC_STATUS,"发送信件出错!");
- pSendThread->EnableUI(FALSE,TRUE);
- return FALSE;
- }
- else
- {
- pSendThread->SetDlgItemText(IDC_STATUS,"正在发送邮件...");
- pSendThread->EnableUI(TRUE,TRUE);
- pBar->SetPos((m_nCount+1)*100/pSendThread->m_nCopyNumber);
- }
- }
- smtp.DisConnect();
- if(AfxMessageBox("邮件已成功发送!")==IDOK)
- {
- pSendThread->SetDlgItemText(IDC_STATUS,"发送完毕!");
- pSendThread->EnableUI(TRUE,FALSE);
- ::PostMessage((HWND)pParam,WM_THREADFINISHED,0,0);
- }
- m_nCount = 0;
- return TRUE;
- }
- void CSendDlg::EnableUI(BOOL bEnable,BOOL bAvi)
- {
- GetDlgItem(IDCANCEL)->EnableWindow(bEnable);
- if(bAvi)
- {
- m_ctrlAnimate.Play(0,(UINT)-1,(UINT)-1);
- }
- else
- {
- m_ctrlAnimate.Stop();
- m_ctrlAnimate.Seek(0);
- }
- }