⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unitmain.cpp

📁 C++Builder高级应用开发指南随书源码
💻 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 + -