📄 cmailview.cpp
字号:
// CMAILVIEW.cpp : implementation file
//
#include "stdafx.h"
#include "SendMail.h"
#include "SendMailDlg.h"
#include "MAILVIEW.h"
#include "MailModi.h"
#include "User.h"
#include "SMTP.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CMAILVIEW dialog
CMAILVIEW::CMAILVIEW(CWnd* pParent /*=NULL*/)
: CDialog(CMAILVIEW::IDD, pParent)
{
//{{AFX_DATA_INIT(CMAILVIEW)
m_Body = _T("");
m_Flag = _T("");
m_From = _T("");
m_To = _T("");
//}}AFX_DATA_INIT
}
void CMAILVIEW::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CMAILVIEW)
DDX_Control(pDX, IDC_VIEW_TIME, m_lbxTime);
DDX_Text(pDX, IDC_VIEW_BODY, m_Body);
DDX_Text(pDX, IDC_VIEW_FLAG, m_Flag);
DDX_Text(pDX, IDC_VIEW_FROM, m_From);
DDX_Text(pDX, IDC_VIEW_TO, m_To);
//}}AFX_DATA_MAP
}
//连接数据库并将数据插入Listbox;
void CMAILVIEW::FillListboxWithTime()
{
int iIndex;
CDatabase db;
CMailModi* pTimeset=NULL;
try
{
if (db.Open("mail"))
{
pTimeset=new CMailModi();
pTimeset->Open(CRecordset::snapshot,"select * from mail ORDER BY mail_id ASC");
do
{
if (pTimeset->m_time!=CString(_T("")))
{
User* pUser=new User();
pUser->m_UserBody=pTimeset->m_message;
pUser->m_UserFlag=pTimeset->m_flag;
pUser->m_UserFrom=pTimeset->m_mail_from;
pUser->m_UserTo=pTimeset->m_mail_to;
pUser->m_UserTime=pTimeset->m_time;
iIndex=m_lbxTime.AddString(pTimeset->m_time);
m_lbxTime.SetItemData(iIndex,(DWORD)pUser);
}
pTimeset->MoveNext();
}while(!pTimeset->IsEOF());
m_lbxTime.AddString("");
pTimeset->Close();
delete pTimeset;
db.Close();
}
}
catch(CDBException* pe)
{
AfxMessageBox(pe->m_strError);
if(pTimeset)
{
if(pTimeset->IsOpen())
{
pTimeset->Close();
}
delete pTimeset;
}
if(db.IsOpen())
{
db.Close();
}
pe->Delete();
}
}
//检索到列表框中被选择的当前的用户
BOOL CMAILVIEW::GetSelectedTime(int* piIndex,User** ppUser)
{
BOOL bSuccess=FALSE;
int iIndex;
if (LB_ERR!=(iIndex=m_lbxTime.GetCurSel()))
{
*piIndex=iIndex;
*ppUser=(User*)m_lbxTime.GetItemData(iIndex);
bSuccess=TRUE;
}
return bSuccess;
}
//删除记录
BOOL CMAILVIEW::DeleteTime(User* pUser)
{
BOOL bSuccess=FALSE;
CDatabase db;
try
{
if (db.Open("mail"))
{
CString strSQL=CString("delete from mail where time='");
strSQL+=pUser->m_UserTime+CString("'");
db.ExecuteSQL(strSQL);
bSuccess=TRUE;
}
}
catch(CDBException* pe)
{
AfxMessageBox(pe->m_strError);
if (db.IsOpen())
{
db.Close();
}
pe->Delete();
}
return bSuccess;
}
BEGIN_MESSAGE_MAP(CMAILVIEW, CDialog)
//{{AFX_MSG_MAP(CMAILVIEW)
ON_BN_CLICKED(IDC_VIEW_QUERY, OnViewQuery)
ON_LBN_SELCHANGE(IDC_VIEW_TIME, OnSelchangeViewTime)
ON_BN_CLICKED(IDC_VIEW_DEL, OnViewDel)
ON_BN_CLICKED(IDC_VIEW_PREPARESEND, OnViewPreparesend)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CMAILVIEW message handlers
void CMAILVIEW::OnViewQuery()
{
FillListboxWithTime(); //发送邮件时间插入列表框
m_lbxTime.SetCurSel(-1);
}
//显示数据
void CMAILVIEW::OnSelchangeViewTime()
{
// TODO: Add your control notification handler code here
int iIndex;
User* pUser;
int i;
int j=3;
i=m_lbxTime.GetCurSel();
j=m_lbxTime.GetCount();
if (i!=j-1)
{
if (GetSelectedTime(&iIndex,&pUser))
{
m_Body=pUser->m_UserBody;
m_From=pUser->m_UserFrom;
m_To=pUser->m_UserTo;
m_Flag=pUser->m_UserFlag;
}
}
UpdateData(FALSE);
}
void CMAILVIEW::OnViewDel()
{
// TODO: Add your control notification handler code here
int iIndex;
User* pUser=NULL;
if (GetSelectedTime(&iIndex,&pUser))
{
if(pUser)
{
UpdateData();
CString strMSG;
strMSG="确定删除时间为";
strMSG+=pUser->m_UserTime;
strMSG+="?";
if (IDYES==AfxMessageBox(strMSG,MB_YESNOCANCEL))
{
if (DeleteTime(pUser))
{
if (LB_ERR==m_lbxTime.DeleteString(iIndex))
{
AfxMessageBox("删除成功,但从列表框中删除有点问题!");
}
m_lbxTime.SetCurSel(-1);
m_Body="";
m_Flag="";
m_From="";
m_To="";
UpdateData(FALSE);
}
else
{
AfxMessageBox("删除失败!");
}
}
}
}
else
{
AfxMessageBox("必须作删除选定!");
}
}
void CMAILVIEW::OnViewPreparesend()
{
CSMTP smtp( "" );
CMailMessage msg;
CString m_SMTP=CString("smtp.china.com");
UpdateData( TRUE );
smtp.SetServerProperties( m_SMTP );
msg.m_sFrom = m_From;
msg.AddMultipleRecipients( m_To );
msg.m_sSubject = m_To;
msg.m_sBody = m_Body;
if( !smtp.Connect() )
{
AfxMessageBox( smtp.GetLastError() );
return;
}
if( !smtp.SendMessage( &msg ) )
{
AfxMessageBox( smtp.GetLastError() );
smtp.Disconnect();
return;
}
smtp.Disconnect();
AfxMessageBox( _T( "信件成功发送!" ) );
m_To = _T( "" );
m_Body = _T( "" );
UpdateData( FALSE );
// CSendMailDlg send;
// send.DoModal();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -