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

📄 main.cpp

📁 C++Builder程序员编程手记《配书光盘》
💻 CPP
字号:
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Main.h"
#include "MailSetup.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TMainForm *MainForm;
//---------------------------------------------------------------------------
__fastcall TMainForm::TMainForm(TComponent* Owner)
  : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::C1Click(TObject *Sender)
{
  MailCountDlg->ShowModal();
}
//---------------------------------------------------------------------------

void __fastcall TMainForm::FormCreate(TObject *Sender)
{
  TIniFile *ini;
  TStrings *CountInit,*DefaultValue;

  if(access(".\\count.ini",00))
  {
    ShowMessage("请设置邮箱帐号");
    MailCountDlg->ShowModal();
  }
  if(access(".\\Default.ini",00))
  {
    ShowMessage("请设置邮箱缺省帐号");
    MailCountDlg->ShowModal();
  }
  else
  {
    ini=new TIniFile(".\\Default.ini");
    CountInit=new TStringList();
    DefaultValue=new TStringList();

    ini->ReadSectionValues("Default",DefaultValue);
    AnsiString DefaultValueLast;
    DefaultValueLast=MailCountDlg->StrFilter(DefaultValue->Strings[0]);
    DefaultCounter.CountName=DefaultValueLast;
    delete ini;
    ini=new TIniFile(".\\count.ini");
    ini->ReadSectionValues(DefaultValueLast,CountInit);
    DefaultCounter.Pop3Name=MailCountDlg->StrFilter(CountInit->Strings[0]);
    DefaultCounter.SmtpName=MailCountDlg->StrFilter(CountInit->Strings[1]);
    DefaultCounter.GetPort=MailCountDlg->StrFilter(CountInit->Strings[2]);
    DefaultCounter.SendPort=MailCountDlg->StrFilter(CountInit->Strings[3]);
    DefaultCounter.LoginName=MailCountDlg->StrFilter(CountInit->Strings[4]);
    DefaultCounter.LoginPwd=MailCountDlg->StrFilter(CountInit->Strings[5]);
    if(CountInit->Count>6)
    {
      DefaultCounter.MailAdd=MailCountDlg->StrFilter(CountInit->Strings[6]);
      DefaultCounter.UserName=MailCountDlg->StrFilter(CountInit->Strings[7]);
      DefaultCounter.ReturnAdd=MailCountDlg->StrFilter(CountInit->Strings[8]);
    }
    delete ini;
    delete CountInit;
    delete DefaultValue;
  }
}
//---------------------------------------------------------------------------
bool TMainForm::InActCountProper(DefaultCount source, DefaultCount dest)
{
  try{
        dest.CountName=source.CountName;
        dest.Pop3Name=source.Pop3Name;
        dest.SmtpName=source.SmtpName;
        dest.GetPort=source.GetPort;
        dest.SendPort=source.SendPort;
        dest.LoginName=source.LoginName;
        dest.LoginPwd=source.LoginPwd;
        dest.MailAdd=source.MailAdd;
        dest.UserName=source.UserName;
        dest.ReturnAdd=source.ReturnAdd;
  }
  catch(...){
    return false;
  }
  return true;
}

void __fastcall TMainForm::GetButtonClick(TObject *Sender)
{
  if(NMPOP31->Connected)
  {
    if(ListView1->Items!=NULL)
      ListView1->Items->Clear();
    NMPOP31->List();
  }
  else
    ShowMessage("服务器没有连接");
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::NMPOP31Connect(TObject *Sender)
{
  StatusBar1->SimpleText="已经和服务器建立连接,接收服务器:"+DefaultCounter.Pop3Name;
}
//---------------------------------------------------------------------------

void __fastcall TMainForm::NMPOP31ConnectionFailed(TObject *Sender)
{
  if(Application->MessageBox("服务器连接失败,请按确定按钮重试!","",MB_OKCANCEL)==IDOK)
    NMPOP31->Connect();
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::NMPOP31List(int Msg, int Size)
{
  TListItem *ListItem;

  ListItem=ListView1->Items->Add();
  ListItem->Caption=IntToStr(Msg);
  ListItem->SubItems->Add(IntToStr(Size)+" Byte");
}
//---------------------------------------------------------------------------

void __fastcall TMainForm::ToolButton3Click(TObject *Sender)
{
  NMPOP31->Disconnect();
  NMSMTP1->Disconnect();  
}
//---------------------------------------------------------------------------

void __fastcall TMainForm::NMPOP31Disconnect(TObject *Sender)
{
  StatusBar1->SimpleText="已经和服务器断开连接"; 
}
//---------------------------------------------------------------------------

void __fastcall TMainForm::ListView1SelectItem(TObject *Sender,
      TListItem *Item, bool Selected)
{
  TListItem *ListItem;

  NMPOP31->GetMailMessage(StrToInt(Item->Caption));
  RichEdit1->Lines->Assign(NMPOP31->MailMessage->Head);
  RichEdit1->Lines->AddStrings(NMPOP31->MailMessage->Body);
  FromEdit->Text=NMPOP31->MailMessage->From;
  SubjectEdit->Text=NMPOP31->MailMessage->Subject;
  if(NMPOP31->MailMessage->Attachments->Count!=0)
  {
    AttachList->Items->Clear();
    for(int i=0;i<NMPOP31->MailMessage->Attachments->Count;i++)
    {
     ListItem=AttachList->Items->Add();
     ListItem->Caption=NMPOP31->MailMessage->Attachments->Strings[i];
     ListItem->ImageIndex=0;
    }
  }
  else
    AttachList->Items->Clear();
}
//---------------------------------------------------------------------------

void __fastcall TMainForm::NMPOP31DecodeStart(AnsiString &FileName)
{
  AnsiString S;
  S = FileName;
  if (InputQuery("保存附件吗?", "文件名?", S))
    FileName = S;
}
//---------------------------------------------------------------------------


void __fastcall TMainForm::ConnectButtonClick(TObject *Sender)
{
  NMPOP31->AttachFilePath = ".";
  NMPOP31->DeleteOnRead = false;
  NMPOP31->ReportLevel = Status_Basic;
  NMPOP31->TimeOut = DefaultCounter.TimeOutLimit;
  NMPOP31->Host = DefaultCounter.Pop3Name;
  NMPOP31->Port = StrToInt(DefaultCounter.GetPort);
  NMPOP31->UserID = DefaultCounter.LoginName;
  NMPOP31->Password = DefaultCounter.LoginPwd;
  NMSMTP1->Host = DefaultCounter.SmtpName;
  NMSMTP1->Port = StrToInt(DefaultCounter.SendPort);
  NMSMTP1->UserID = DefaultCounter.LoginName;
  try{
    NMPOP31->Connect();
    NMSMTP1->Connect();
  }
  catch(...)
  {
    ShowMessage("无法与服务器建立连接");
  }
}
//---------------------------------------------------------------------------

void __fastcall TMainForm::NMPOP31AuthenticationFailed(bool &Handled)
{
  AnsiString NewPass, NewID;

  if (MessageDlg("服务器验证失败,重试吗?", mtConfirmation, TMsgDlgButtons() << mbYes << mbNo, 0) == mrYes)

    {
      NewPass = NMPOP31->Password;
      NewID = NMPOP31->UserID;
      InputQuery("验证失败", "用户名称", NewID);
      InputQuery("验证失败", "密码", NewPass);
      NMPOP31->Password = NewPass;
      NMPOP31->UserID = NewID;
      Handled = TRUE;
    }
  else
    Handled = FALSE;
}
//---------------------------------------------------------------------------

void __fastcall TMainForm::NMPOP31AuthenticationNeeded(bool &Handled)
{
  AnsiString NewPass, NewID;
  NewPass = NMPOP31->Password;
  NewID = NMPOP31->UserID;
  InputQuery("用户信息", "输入用户名称", NewID);
  InputQuery("用户信息", "输入密码", NewPass);
  NMPOP31->UserID = NewID;
  NMPOP31->Password = NewPass;
  Handled = TRUE;
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::ListView1DblClick(TObject *Sender)
{
  int i;

  for(i=0;i<ListView1->Items->Count;i++)
  {
    NMPOP31->GetMailMessage(StrToInt(ListView1->Items->Item[i]->Caption));
    ListView1->Items->Item[i]->SubItems->Add(NMPOP31->MailMessage->Subject);
  }  
}
//---------------------------------------------------------------------------

void __fastcall TMainForm::N2Click(TObject *Sender)
{
  FromEdit->Text="";
  SubjectEdit->Text="";
  ToEdit->Text="";
  AttachList->Items->Clear();
  ListView1->Items->Clear();
  RichEdit1->Lines->Clear();
  RichEdit1->SetFocus();
}
//---------------------------------------------------------------------------

void __fastcall TMainForm::SendButtonClick(TObject *Sender)
{
  if(NMSMTP1->Connected)
  {
    if(ToEdit->Text=="")
      ShowMessage("请填写收件人邮箱地址");
    else
    {
      NMSMTP1->ClearParams = MailCountDlg->SentClear->Checked;
      NMSMTP1->SubType = mtPlain;
      if(MailCountDlg->MimeCode->Checked)
        NMSMTP1->EncodeType = uuMime;
      if(MailCountDlg->CodeCode->Checked)
        NMSMTP1->EncodeType = uuCode;
      NMSMTP1->PostMessage->FromAddress = DefaultCounter.MailAdd;
      NMSMTP1->PostMessage->FromName = DefaultCounter.LoginName;
      NMSMTP1->PostMessage->ToAddress->Text = ToEdit->Text;
      NMSMTP1->PostMessage->Body->Assign(RichEdit1->Lines);
      if(AttachList->Items->Count>0)
        for(int i=0;i<AttachList->Items->Count;i++)
          NMSMTP1->PostMessage->Attachments->Add(AttachList->Items->Item[i]->Caption);
      NMSMTP1->PostMessage->Subject = SubjectEdit->Text;
      NMSMTP1->PostMessage->LocalProgram = "我的邮件系统";
      NMSMTP1->PostMessage->ReplyTo = DefaultCounter.ReturnAdd;
      NMSMTP1->SendMail();
    }
  }
}
//---------------------------------------------------------------------------

void __fastcall TMainForm::NMSMTP1Connect(TObject *Sender)
{
  StatusBar1->SimpleText=StatusBar1->SimpleText+"  发送邮件服务器:"+DefaultCounter.SmtpName;
}
//---------------------------------------------------------------------------


void __fastcall TMainForm::Label4Click(TObject *Sender)
{
  TListItem *ListItem;
  if(OpenDialog1->Execute())
  {
    ListItem=AttachList->Items->Add();
    ListItem->Caption=OpenDialog1->FileName;
  }
}
//---------------------------------------------------------------------------

void __fastcall TMainForm::NMSMTP1Success(TObject *Sender)
{
  StatusBar1->SimpleText="邮件发送完成";
}
//---------------------------------------------------------------------------

void __fastcall TMainForm::NMSMTP1Failure(TObject *Sender)
{
  ShowMessage("邮件发送失败");
}
//---------------------------------------------------------------------------

void __fastcall TMainForm::NMSMTP1AttachmentNotFound(AnsiString Filename)
{
  ShowMessage("附件"+Filename+"没有发现");
}
//---------------------------------------------------------------------------

void __fastcall TMainForm::NMSMTP1AuthenticationFailed(bool &Handled)
{
  AnsiString S;

  S = NMSMTP1->UserID;
  if (InputQuery("服务器验证失败", "无效的用户名,新用户名 ", S))
  {
    NMSMTP1->UserID = S;
    Handled = TRUE;
  }
}
//---------------------------------------------------------------------------

void __fastcall TMainForm::NMSMTP1SendStart(TObject *Sender)
{
  StatusBar1->SimpleText="正在发送邮件......";
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::S1Click(TObject *Sender)
{
  if(SaveDialog1->Execute())
    RichEdit1->Lines->SaveToFile(SaveDialog1->FileName);
}
//---------------------------------------------------------------------------

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -