邮件系统通常采用SMTP作为发送协议,POP3作为接受协议(具体内容参考RFC821、RFC1225)。无论是发邮件,还是收邮件都必须要与邮件服务器连接,再通过邮件信息结构发送邮件。VC里提供了三个类CPop3(连接接受邮件服务器)、CSMTP(连接发送邮件服务器)、CMailMessage(邮件信息结构)
下面是个例子,你参考一下!
//发送邮件
void CTestDlg::OnBtnSendMail()
{
//更新数据
UpdateData( TRUE
);
//建立CSMTP对象
CSMTP Smtp(m_SMTPServer
);
//新建CMailMessage对象,并初始化
CMailMessage msg;
msg.m_sFrom =
m_From;
msg.AddMultipleRecipients( m_To
);
msg.m_sSubject =
m_MailSubject;
msg.m_sBody =
m_MailBody;
//连接SMTP服务器
if( !Smtp.Connect()
)
{
AfxMessageBox( Smtp.GetLastError()
);
return;
}
//发送邮件
if( !Smtp.SendMessage(
&msg
)
)
{
AfxMessageBox( Smtp.GetLastError()
);
return;
}
//断开连接
if( !Smtp.Disconnect()
)
{
AfxMessageBox( Smtp.GetLastError()
);
return;
}
AfxMessageBox( _T(
"成功断开与服务器的连接!
" )
);
}
//接收邮件
void CTestDlg::OnBtnReceiveMail()
{
//更新数据
UpdateData( TRUE
);
//新建CPOP3对象
CPOP3 pop3(
m_Pop3Server
);
pop3.SetUserProperties(m_UserName,m_Password);
//连接POP3服务器
if (!pop3.Connect())
{
AfxMessageBox( pop3.GetLastError()
);
return;
}
//收取邮件
CMailMessage msg;
if (!pop3.GetMessage(1,&msg))
{
AfxMessageBox( pop3.GetLastError()
);
return;
}
//显示邮件
m_MailBody=msg.m_sBody;
m_MailSubject=msg.m_sSubject;
m_From=msg.m_sFrom;
m_To= " ";
for (int
a=0;
a
<msg.GetNumRecipients(); a++)
{
CString sEmail;
CString sFriendly;
msg.GetRecipient(sEmail,sFriendly,a);
m_To+=sEmail;
m_To+= " ";
}
m_To.TrimRight();
//断开连接
if( !pop3.Disconnect()
)
{
AfxMessageBox( pop3.GetLastError()
);
return;
}
AfxMessageBox( _T(
"成功断开与服务器的连接!
" )
);
UpdateData(FALSE);
}
下面是个例子,你参考一下!
//发送邮件
void
{
//更新数据
UpdateData(
//建立CSMTP对象
CSMTP
//新建CMailMessage对象,并初始化
CMailMessage
msg.m_sFrom
msg.AddMultipleRecipients(
msg.m_sSubject
msg.m_sBody
//连接SMTP服务器
if(
{
AfxMessageBox(
return;
}
//发送邮件
if(
{
AfxMessageBox(
return;
}
//断开连接
if(
{
AfxMessageBox(
return;
}
AfxMessageBox(
}
//接收邮件
void
{
//更新数据
UpdateData(
//新建CPOP3对象
CPOP3
pop3.SetUserProperties(m_UserName,m_Password);
//连接POP3服务器
if
{
AfxMessageBox(
return;
}
//收取邮件
CMailMessage
if
{
AfxMessageBox(
return;
}
//显示邮件
m_MailBody=msg.m_sBody;
m_MailSubject=msg.m_sSubject;
m_From=msg.m_sFrom;
m_To= " ";
for
{
CString
CString
msg.GetRecipient(sEmail,sFriendly,a);
m_To+=sEmail;
m_To+= "
}
m_To.TrimRight();
//断开连接
if(
{
AfxMessageBox(
return;
}
AfxMessageBox(
UpdateData(FALSE);
}