⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sendmail.cpp

📁 同学通讯录系统,利用MFC编写,利用了数据库的技术
💻 CPP
字号:
// SendMail.cpp : implementation file
//

#include "stdafx.h"
#include "SuperWords.h"
#include "SendMail.h"
#include "MailMessage.h"
#include "smtp.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CSendMail dialog


CSendMail::CSendMail(CWnd* pParent /*=NULL*/)
	: CDialog(CSendMail::IDD, pParent)
{
	//{{AFX_DATA_INIT(CSendMail)
		// NOTE: the ClassWizard will add member initialization here
		m_body = _T("");
	m_email = _T("");
	m_name = _T("");
	m_fromemail = _T("");
	m_smtp = _T("smtp.21cn.com");
	m_from = _T("harry_meng@21cn.com");
	m_to = _T("harry_meng@21cn.com;mengsg@163.net;harry_meng@sina.com");
	m_subject = _T("name from :");
    m_brush.CreateSolidBrush(RGB(193,193,255));
	//}}AFX_DATA_INIT
}


void CSendMail::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CSendMail)
		// NOTE: the ClassWizard will add DDX and DDV calls here
		DDX_Text(pDX, IDC_BODY, m_body);
	DDX_Text(pDX, IDC_EMAIL, m_email);
	DDX_Text(pDX, IDC_NAME, m_name);
	DDX_Text(pDX, IDC_FROMEMAIL, m_fromemail);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CSendMail, CDialog)
	//{{AFX_MSG_MAP(CSendMail)
		// NOTE: the ClassWizard will add message map macros here
	ON_BN_CLICKED(IDC_SEND, OnSend)
	ON_WM_CTLCOLOR()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CSendMail message handlers

void CSendMail::OnSend() 
{
	// TODO: Add your control notification handler code here
	CString nametitle="主题是 ";
	CString emailaddress="\n 发件人是 ";
	CString returnchar="\n";
 
	UpdateData( TRUE );

	if(m_email.IsEmpty() || m_fromemail.IsEmpty())
	{
		MessageBox("[收件人] 和 [发件人] 不能空!","请填写",MB_ICONWARNING|MB_OK);
		return;
	}

	CString szSmtp;
	szSmtp.Empty();
	int iFind=m_fromemail.Find('@');
	szSmtp = m_fromemail.Mid(iFind+1);
	m_smtp = _T("smtp.");
	m_smtp += szSmtp;
	m_from = m_fromemail;//_T("harry_meng@21cn.com");
	m_to = m_email;//_T("harry_meng@21cn.com;mengsg@163.net;harry_meng@sina.com");
	m_subject = m_name;//_T("name from :");

//	CWinThread* m_Progress=AfxBeginThread(RUNTIME_CLASS(CProgressWin));

	CSMTP smtp( "" );
	CMailMessage msg;
	
	smtp.SetServerProperties( m_smtp );
	msg.m_sFrom = m_from;
	msg.AddMultipleRecipients( m_to );
	msg.m_sSubject = m_subject+m_name;

	msg.m_sBody = nametitle + m_name + emailaddress + m_email + returnchar + m_body;

    AfxMessageBox(msg.m_sBody);
	if( !smtp.Connect() )
	{ 
//	//	m_Progress->PostThreadMessage(WM_QUITTHREAD,0,0);
		AfxMessageBox( smtp.GetLastError() );
		
		return;
	}
	if( !smtp.SendMessage( &msg ) )
	{
	//	m_Progress->PostThreadMessage(WM_QUITTHREAD,0,0);
		AfxMessageBox( smtp.GetLastError() );
		smtp.Disconnect();
		
		return;
	}
	smtp.Disconnect();
//	m_Progress->PostThreadMessage(WM_QUIT,0,0);
	//m_Progress->PostThreadMessage(WM_QUITTHREAD,0,0);
	GetFocus();
	MessageBox("您的电子邮件已经发送出去!\n\n谢谢您的支持.","发送成功",MB_OK|MB_ICONINFORMATION);
	
	CDialog::OnOK();
	
}

HBRUSH CSendMail::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
{
	HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
	
	// TODO: Change any attributes of the DC here
	if(nCtlColor==CTLCOLOR_STATIC)
	{   pDC->SetBkMode(TRANSPARENT);
		return hbr;
	}
	if(nCtlColor==CTLCOLOR_EDIT)
	{  
		return NULL;
	}
	
	// TODO: Return a different brush if the default is not desired
	return hbr;
}



BOOL CSendMail::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
	//CDialog::OnInitDialog();
    CSuperWordsApp *pApp = (CSuperWordsApp *)AfxGetApp();
	m_email = pApp->m_szToEmail;
	UpdateData(FALSE);

	m_smtp = _T("smtp.21cn.com");
	m_from = m_fromemail;
	m_to = m_email;
	m_subject = m_name;
	//按纽
//	m_btnSend.SubclassDlgItem(IDC_SEND, this);
//	m_btnSend.SetIcon(IDI_ICON22); 
//	m_btnCancle.SubclassDlgItem(IDCANCEL, this);
//	m_btnCancle.SetIcon(IDI_ICON23); 
	
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

BOOL CSendMail::PreTranslateMessage(MSG *pMsg)
{
	
   if( pMsg->message == WM_KEYDOWN && pMsg->wParam == 13) 
	{   
		if(!(GetDlgItem(IDC_BODY) == GetFocus() || GetDlgItem(IDC_SEND) == GetFocus()))
	    	 pMsg->wParam=9;
	}	
	return CDialog::PreTranslateMessage(pMsg);

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -