利用VC++开发电子邮件成型组,可以使用windows自带的MAPI及相关通信协议如POP3等来实现,但是利用MAPI实现需要写很多代码。因此软件厂商提供了方便、简易与服务器无关且稳定的Jmail组件供程序员使用。使用前必须先注册,可以在网上看教程。
Jmail组件有以下对象(前3个常用):
1,POP3对象,是对POP3邮件接收服务器的操作。
2,Messages对象,是有关邮件集合的对象,是指针对象,也是POP3的成员指针。
3,Message对象,是有关邮件的对象,其是Jmail组件最常用的对象,能发送邮件信息,也能接收邮件信息。具体的信息存在Messages指针指向的Item数组中。
4,Header对象,是与邮件头相关的对象。
5,Recipients对象,是有关接收邮件集合的对象。
6,Recipient对象,是有关接收邮件的对象。
7,Attachments对象,是有关邮件附件集合的对象。
8,Attachment对象,是有关邮件附件的对象。
9,MailMerge对象,是有关邮件模板的对象。
10,PGPKeys对象,是有关邮件PGP密钥集合的对象。
11,PGPKeyInfo对象,是有关邮件PGP密钥信息的对象。
……
接收邮箱通常设置为一线程,核心程序如下:
...
Jmail::IPOP3Ptr pPOP3("Jmail.POP3");
Jmail::IMessagesPtr pMessages;
pPOP3->Timeout = 30; //设置连接服务器超时
pPOP3->Connect((LPCTSTR)User,(LPCTSTR)Psd,(LPCTSTR)Server,110); //110为POP3默认端口号
pMessages = pPOP3->Messages;
long lCount = pMessages->Count-1;
if(lCount == 0)
MessageBox("empty!");
else
{
Jmail::IMessagePtr pMessage;
for(i = 1;i<=lCount;i++) //遍历每封信
{
pMessage = pMessages->Item[i[;
From = pMessage->From;
Subject = pMessage->Subject;
Body = pMessage->Body;
Date = pMessage->Date;
pMessage.Release();
}
}
pPOP3->Disconnect();
...
发送邮件则设置一个按钮,添加单击事件即可。核心程序如下:
...
Jmail::IMessagePtr pMessage("Jmail.Message");
pMessage->From = (LPCTSTR)m_Sender;
pMessage->FromName = "hunterlew";
pMessage->AddRecipient((LPCTSTR)m_Address,"","");
pMesasge->Priority = 3; //优先级设置,1~5级逐次降低,3为中级
pMessage->Charset = "GB2312"; //编码方式设置
pMessage->Subject = (LPCTSTR)m_Title;
pMessage->Bpdy = (LPCTSTR)m_Content;
if(m_File != "") //附件
pMessage->AddAttachment((LPCTSTR)m_File,VARIANT_TRUE,"image/gif");
pMessage->Send((LPCTSTR)m_MailServer,VARIANT_FALSE);
pMessage.Release();
MessageBox("发送成功");
...