邮件系统通常采用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);
}