📄 unitmain.cpp
字号:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "UnitMain.h"
#include "UnitNewMail.h"
#include "UnitConfig.h"
#include "UnitMail.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TFormMain *FormMain;
//---------------------------------------------------------------------------
__fastcall TFormMain::TFormMain(TComponent* Owner)
: TForm(Owner)
{
MailList=new TList();//初始化
}
//---------------------------------------------------------------------------
void __fastcall TFormMain::N2Click(TObject *Sender)
{
FormNewMail->Show();
}
//---------------------------------------------------------------------------
void __fastcall TFormMain::N3Click(TObject *Sender)
{
FormConfig->ShowModal();
}
//---------------------------------------------------------------------------
void __fastcall TFormMain::N5Click(TObject *Sender)
{
//清空邮件列表
ListViewMail->Items->Clear();
MailList->Clear();
//连接POP3服务器
if(NMPOP31->Connected)
{
NMPOP31->Disconnect();
}
else
{
NMPOP31->AttachFilePath = ".";//存在当前目录下
NMPOP31->Host=FormConfig->EditPOP3->Text;
NMPOP31->UserID=FormConfig->EditUser->Text;
NMPOP31->Password=FormConfig->MaskEditPw->Text;
NMPOP31->DeleteOnRead=FormConfig->CheckBox1->Checked;
NMPOP31->ReportLevel = Status_Basic;
NMPOP31->TimeOut = 20000;
NMPOP31->Connect();
}
}
//---------------------------------------------------------------------------
void __fastcall TFormMain::N7Click(TObject *Sender)
{
Close();
}
//---------------------------------------------------------------------------
void __fastcall TFormMain::NMPOP31AuthenticationFailed(bool &Handled)
{
Application->MessageBox("用户名/密码有误,请重试","登陆失败",MB_OK);
}
//---------------------------------------------------------------------------
void __fastcall TFormMain::NMPOP31AuthenticationNeeded(bool &Handled)
{
Application->MessageBox("用户名/密码有误,请重试","登陆失败",MB_OK);
}
//---------------------------------------------------------------------------
void __fastcall TFormMain::NMPOP31Failure(TObject *Sender)
{
ShowMessage("操作失败");
StatusBar1->SimpleText="操作失败";
}
//---------------------------------------------------------------------------
void __fastcall TFormMain::NMPOP31Connect(TObject *Sender)
{
int i;
//显示连接建立
StatusBar1->SimpleText="和服务器已建立连接";
if (NMPOP31->MailCount>0)
{
//开始接收信件,邮件索引从1而不是0开始
for(i=1;i<=NMPOP31->MailCount;i++)
{
NMPOP31->GetMailMessage(i);
}
}
else
{
ShowMessage("没有邮件");
}
}
//---------------------------------------------------------------------------
void __fastcall TFormMain::NMPOP31RetrieveEnd(TObject *Sender)
{
TListItem * MailItem;
//生成新的邮件指针,并分配空间
TMail *NewMail=new TMail;
//备份当前邮件
NewMail->Attachments->Text=NMPOP31->MailMessage->Attachments->Text;
NewMail->MessageId=NMPOP31->MailMessage->MessageId;
NewMail->Subject=NMPOP31->MailMessage->Subject;
NewMail->From=NMPOP31->MailMessage->From;
NewMail->Head->Text=NMPOP31->MailMessage->Head->Text;
NewMail->Body->Text=NMPOP31->MailMessage->Body->Text;
//添加当前邮件到邮件列表
MailList->Add(NewMail);
MailItem=ListViewMail->Items->Add();
MailItem->Caption=NMPOP31->MailMessage->From;
MailItem->SubItems->Add(NMPOP31->MailMessage->Subject);
}
//---------------------------------------------------------------------------
void __fastcall TFormMain::N8Click(TObject *Sender)
{
int i;
//删除被加了标记的邮件
for(i=0;i<ListViewMail->Items->Count;i++)
{
if(ListViewMail->Items->Item[i]->Checked)
{
//注意邮件序号从1开始
NMPOP31->DeleteMailMessage(i+1);
}
}
}
//---------------------------------------------------------------------------
void __fastcall TFormMain::N9Click(TObject *Sender)
{
NMPOP31->Disconnect();
}
//---------------------------------------------------------------------------
void __fastcall TFormMain::NMPOP31ConnectionFailed(TObject *Sender)
{
StatusBar1->SimpleText="连接失败";
}
//---------------------------------------------------------------------------
void __fastcall TFormMain::NMPOP31ConnectionRequired(bool &Handled)
{
StatusBar1->SimpleText="需要先建立连接";
}
//---------------------------------------------------------------------------
void __fastcall TFormMain::NMPOP31Disconnect(TObject *Sender)
{
StatusBar1->SimpleText="服务器已经断开";
}
//---------------------------------------------------------------------------
void __fastcall TFormMain::NMPOP31InvalidHost(bool &Handled)
{
ShowMessage("指定的服务器无效,请重新填写");
Handled=false; //停止再次连接
}
//---------------------------------------------------------------------------
void __fastcall TFormMain::ToolButton1Click(TObject *Sender)
{ //写新邮件
N2Click(Sender);
}
//---------------------------------------------------------------------------
void __fastcall TFormMain::ToolButton2Click(TObject *Sender)
{ //收邮件
N5Click(Sender);
}
//---------------------------------------------------------------------------
void __fastcall TFormMain::ToolButton5Click(TObject *Sender)
{ //删除邮件
N8Click(Sender);
}
//---------------------------------------------------------------------------
void __fastcall TFormMain::ToolButton3Click(TObject *Sender)
{ //设置
N3Click(Sender);
}
//---------------------------------------------------------------------------
void __fastcall TFormMain::ListViewMailClick(TObject *Sender)
{
//显示选中邮件的内容
int Index=ListViewMail->ItemFocused->Index;
MemoMail->Clear();
MemoMail->Text=((TMail *)MailList->Items[Index])->Body->Text;
//显示附件
MemoAttach->Text=((TMail *)MailList->Items[Index])->Attachments->Text;
}
//---------------------------------------------------------------------------
void __fastcall TFormMain::NMPOP31RetrieveStart(TObject *Sender)
{
StatusBar1->SimpleText="开始接受邮件"+
AnsiString(MailList->Count+1)+
"/"+AnsiString(NMPOP31->MailCount);
}
//---------------------------------------------------------------------------
void __fastcall TFormMain::NMPOP31HostResolved(TComponent *Sender)
{
StatusBar1->SimpleText="地址解析成功";
}
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -