基于C++Builder 的电子邮件接收程序设计*
2022-08-04张静
张静
(河南省气象培训中心,河南 郑州450002)
在互联网上,与电子邮件相关的2 个协议是POP3(邮局协议)和SMTP(简单邮件传输协议)。其中,POP3 协议用于从POP3 服务器上接收邮件,而SMTP协议用于登录SM T P 服务器来发送邮件[1-2]。C++Builder 提供了NMPOP3 控件和NMSMTP 控件来实现这2 个邮件收发协议。本文利用C++Builder 中的NMPOP3 控件,创建一个能接收电子邮件的系统。
1 NMPOP3 控件的属性和方法
NMPOP3 控件用于从POP3 协议服务器的主机中接收邮件,所有POP3 接收邮件的功能都封装在该控件中,使用者只需修改该控件的属性、访问该控件的方法并对事件进行响应即可[3-4]。
1.1 NMPOP3 控件的属性
NMPOP3 控件的主要属性如表1 所示。
表1 NMPOP3 控件的属性
1.2 NMPOP3 控件的主要方法
NMPOP3 控件的主要方法如表2 所示。
表2 NMPOP3 控件的主要方法
表2 (续)
2 电子邮件接收程序设计
2.1 与服务器建立连接
在此步骤中,单击“Connect/Account”选项卡上的“连接服务器”,如图1 所示,将触发CntBtn 事件。在此事件处理函数中,先设置NMPOP3 控件的各项属性,然后与服务器建立连接,当连接成功后,设置此邮箱中的邮件数目。其源程序如下:
图1 连接与断开连接图
void __fastcall TRveForm::CntBtn(TObject*Sender)
{
...
MyPOP31->Host=HoEdt->Text;
MyPOP31->Port=StrToInt(PtEdt->Text);
MyPOP31->UserID=UIEdt->Text;
MyPOP31->Password=PWEdt->Text;
MyPOP31->Connect();
}
当客户成功连接到POP 服务器时,将触发OnConnect 事件,其代码如下:
MyStaBar1->SimpleText= “已经连接到服务器”;
当客户试图连接到服务器而失败时,将触发OnConnectionFailed 事件,其代码如下:
void__fastcallTRveForm::MyNMPOP31Connection Failed(TObject*Sender)
{
MyStaBar1->SimpleText = “连接服务器失败”;
}
2.2 显示邮件列表
显示邮件列表调用NMPOP3 控件的List()方法,其代码如下:
void __fastcall TRveForm::ListBtnClick(TObject
*Sender)
{
MyNMPOP31->List();
}
其中,NMPOP3 控件的List()方法触发OnList 事件,其代码如下:
void __fastcall TFmMyMain::MyNMPOP3List(int Msg,int Size)
{
If(Msg<2)
{
MyMo1->Clear();
MyMo1->Lines->Add(“邮件序号/邮件大小(字节)”);
}
MyMo1->Lines->Add(IntToStr(Msg)+ “ / ”+IntToStr(Size));
}
2.3 读取邮件信息
当邮件列表显示以后,就可以输入要读取的邮件编号,单击“Get Message”按钮显示邮件的详细内容,如图2 所示。首先调用NMPOP3 控件的GetMailMessage()方法,并将Edt5 中的邮件编号取出来,得到的邮件信息被保存在MailMessage 属性中。
图2 显示邮件图
其源程序如下:
void __fastcall TFmMyMain::Btn3Click(TObject*Sender)
{
MyNMPOP31->GetMailMessage(StrToInt(Edt5->Text));
Edt7->Text=MyNMPOP31->MailMessage->Subjec;
Edt9->Text=MyNMPOP31->MailMessage->Mess ageId;
myMe1->Lines->Assign(MyNMPOP31->MailMe ssage->Head);
myMe2->Lines->Assign(MyNMPOP31->MailMe ssage->Body);
}
单击“Get Summary”按钮,调用NMPOP3 控件的GetSummary()方法,显示邮件的概要信息,其代码如下:
void __fastcall TFmMyMain::Btn6Click(TObject*Sender)
{
MyNMPOP31->GetSummary(StrToInt(Edt5->Te xt));
Edt6->Text=MyNMPOP31->Summary->From;
Edt7->Text=MyNMPOP31->Summary->Subject;
Edt8->Text=ntToStr(MyNMPOP31->Summary->Bytes);
Edt9->Text=MyNMPOP31->Summary->MessageId;
}
单击“Delete”按钮,调用NMPOP3 控件的DeleteMailMessage()方法,删除邮件,其代码如下:
void __fastcall TRveForm::Btn7Click(TObject*Sender)
{
MyNMPOP31->DeleteMailMessage(StrToInt(Edt 5->Text));
}
2.4 断开与服务器的连接
单击“Disconnect”按钮,调用NMPOP3 控件的Disconnect()方法,断开与服务器的连接,其代码如下:
void __fastcall TRveForm::Btn2Ck(TObject*Sender)
{
MyNMPOP31->Disconnect();
}
当客户断开与服务器的连接时,将触发OnDisconnect 事件,其代码如下:
void __fastcall TRveForm::MyNMPOP31Dct(TObject*Sender)
{
If(MyStatusBar1!=0)
MyStatusBar1->SimpleText= “脱机工作”;
}
3 结语
本文基于C++Builder 开发平台,讨论了在应用程序中调用NMPOP3 控件接收电子邮件的方法,并设计了具体程序,其操作界面简单,同时经试验检测,具有很好的稳定性。