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

📄 mailsetup.cpp

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

#include <vcl.h>
#pragma hdrstop

#include "MailSetup.h"
#include "Main.h"

//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TMailCountDlg *MailCountDlg;
//---------------------------------------------------------------------------
__fastcall TMailCountDlg::TMailCountDlg(TComponent* Owner)
  : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TMailCountDlg::OKButtonClick(TObject *Sender)
{
  bool CanInsert=true;
  TIniFile *ini;

  if(CountName->Text==""||MailAdd->Text==""||UserName->Text==""||
     ReturnAdd->Text==""||Pop3Name->Text==""||SmtpName->Text==""||
     GetPort->Text==""||SendPort->Text==""||LoginName->Text==""||
     LoginPwd->Text=="")
     ShowMessage("请填写完整信息");
  else
  {
    CountProper->Clear();
    CountProper->Add(CountName->Text);
    CountProper->Add(Pop3Name->Text);
    CountProper->Add(SmtpName->Text);
    CountProper->Add(GetPort->Text);
    CountProper->Add(SendPort->Text);
    CountProper->Add(LoginName->Text);
    CountProper->Add(LoginPwd->Text);
    if(ListBox1->Items->Count>0)
    {
      for(int i=0;i<ListBox1->Items->Count;i++)
        if(CountProper->Strings[0]==ListBox1->Items->Strings[i])
        {
          ShowMessage("信箱名已经存在,请重新命名信箱");
          CanInsert=false;
          break;
        }
      if(CanInsert)
      {
        ListBox1->Items->Add(CountProper->Strings[0]);
        TStrings* CountSection;
        CountSection=new TStringList();
        CountSection->LoadFromFile(".\\count.ini");
        CountSection->Add("["+CountProper->Strings[0]+"]");
        CountSection->SaveToFile(".\\count.ini");
        ini=new TIniFile(".\\count.ini");
        ini->WriteString(CountProper->Strings[0],"Pop3服务器",CountProper->Strings[1]);
        ini->WriteString(CountProper->Strings[0],"Smtp服务器",CountProper->Strings[2]);
        ini->WriteString(CountProper->Strings[0],"接收邮件端口",CountProper->Strings[3]);
        ini->WriteString(CountProper->Strings[0],"发送邮件端口",CountProper->Strings[4]);
        ini->WriteString(CountProper->Strings[0],"用户登录帐号",CountProper->Strings[5]);
        ini->WriteString(CountProper->Strings[0],"用户密码",CountProper->Strings[6]);
        ini->WriteString(CountProper->Strings[0],"邮件地址",MailAdd->Text);
        ini->WriteString(CountProper->Strings[0],"用户姓名",UserName->Text);
        ini->WriteString(CountProper->Strings[0],"回复地址",ReturnAdd->Text);
        ini->UpdateFile();
        delete ini;
        delete CountSection;
      }
    }
    else
      ListBox1->Items->Add(CountProper->Strings[0]);
  }
}
//---------------------------------------------------------------------------

void __fastcall TMailCountDlg::FormCreate(TObject *Sender)
{
  TIniFile *ini;

  CountProper=new TStringList();
  if(access(".\\count.ini",00))
    FileCreate(".\\count.ini");
  ini=new TIniFile(".\\count.ini");
  ini->ReadSections(CountProper);
  for(int i=0;i<CountProper->Count;i++)
    ListBox1->Items->Add(CountProper->Strings[i]);
  for(int i=0;i<ListBox1->Items->Count;i++)
  {
    if(ListBox1->Items->Strings[i]==MainForm->DefaultCounter.CountName)
    {
      ListBox1->Items->Move(i,0);
      break;
    }
  }
  delete ini;
}
//---------------------------------------------------------------------------

void __fastcall TMailCountDlg::UseDefaultPortClick(TObject *Sender)
{
  GetPort->Enabled=!UseDefaultPort->Checked;
  SendPort->Enabled=!UseDefaultPort->Checked;
}
//过滤键值的函数-----------------------------------------------------------
AnsiString TMailCountDlg::StrFilter(AnsiString source)
{
  char *dest;
  AnsiString returnvalue;

  dest=(char *)malloc(50);
  dest=AnsiStrPos(source.c_str(),"=")+1;
  returnvalue=dest;
  return returnvalue;
}

void __fastcall TMailCountDlg::ListBox1Click(TObject *Sender)
{
  TStrings *str;
  TIniFile *ini;

  str=new TStringList();
  ini=new TIniFile(".\\count.ini");
  ini->ReadSectionValues(ListBox1->Items->Strings[ListBox1->ItemIndex],str);
  CountName->Text=ListBox1->Items->Strings[ListBox1->ItemIndex];
  try
  {
    Pop3Name->Text=StrFilter(str->Strings[0]);
    SmtpName->Text=StrFilter(str->Strings[1]);
    GetPort->Text=StrFilter(str->Strings[2]);
    SendPort->Text=StrFilter(str->Strings[3]);
    LoginName->Text=StrFilter(str->Strings[4]);
    LoginPwd->Text=StrFilter(str->Strings[5]);
    MailAdd->Text=StrFilter(str->Strings[6]);
    UserName->Text=StrFilter(str->Strings[7]);
    ReturnAdd->Text=StrFilter(str->Strings[8]);
  }
  catch(...)
  {
    ShowMessage("该帐户没有附加信息");
  }
  if(CountName->Text!=MainForm->DefaultCounter.CountName)
    IsDefaultCounter->Checked=false;
  else
    IsDefaultCounter->Checked=true;
  delete ini;
  delete str;
}
//---------------------------------------------------------------------------

void __fastcall TMailCountDlg::CANCELButtonClick(TObject *Sender)
{
  Close();  
}
//---------------------------------------------------------------------------

void __fastcall TMailCountDlg::IsDefaultCounterClick(TObject *Sender)
{
  TIniFile *ini;
  TStrings *DefCounter;

  if(IsDefaultCounter->Checked)
  {
    DefCounter=new TStringList();
    if(access(".\\Default.ini",00))
    {
       DefCounter->Add("[Default]");
       DefCounter->SaveToFile(".\\Default.ini");
    }
   ini=new TIniFile(".\\Default.ini");
   if(ListBox1->ItemIndex!=-1)
   {
     MainForm->DefaultCounter.CountName=CountName->Text;
     MainForm->DefaultCounter.Pop3Name=Pop3Name->Text;
     MainForm->DefaultCounter.SmtpName=SmtpName->Text;
     MainForm->DefaultCounter.GetPort=GetPort->Text;
     MainForm->DefaultCounter.SendPort=SendPort->Text;
     MainForm->DefaultCounter.LoginName=LoginName->Text;
     MainForm->DefaultCounter.LoginPwd=LoginPwd->Text;
     MainForm->DefaultCounter.MailAdd=MailAdd->Text;
     MainForm->DefaultCounter.UserName=UserName->Text;
     MainForm->DefaultCounter.ReturnAdd=ReturnAdd->Text;
     ini->WriteString("Default","缺省帐户",CountName->Text);
   }
   else
     ShowMessage("请选择一个帐号");
   delete ini;
   delete DefCounter;
  }
}
//---------------------------------------------------------------------------

void __fastcall TMailCountDlg::DeleteButtonClick(TObject *Sender)
{
  if(ListBox1->ItemIndex!=-1)
  {
    DeleteCounter=ListBox1->Items->Strings[ListBox1->ItemIndex];
    if(DeleteCounter==MainForm->DefaultCounter.CountName)
        ShowMessage("这是缺省帐号,不能删除");
    else
    {
      if(Application->MessageBox("确实要删除该帐号吗","警告",MB_OKCANCEL)==IDOK)
      {
        ListBox1->Items->Delete(ListBox1->ItemIndex);
        CounterDeleted(DeleteCounter);
      }
    }
  }
}
//---------------------------------------------------------------------------
void TMailCountDlg::CounterDeleted(AnsiString DeletedCounter)
{
  TIniFile *ini;

  if(DeletedCounter==MainForm->DefaultCounter.CountName)
  {
      ini=new TIniFile(".\\Default.ini");
      ini->EraseSection("Default");
      ini->UpdateFile();
      IsDefaultCounter->Checked=false;
      delete ini;
  }
  ini=new TIniFile(".\\count.ini");
  ini->EraseSection(DeleteCounter);
  ini->UpdateFile();
  ClearEdit();
  delete ini;
}


void TMailCountDlg::ClearEdit()
{
  CountName->Text="";
  MailAdd->Text="";
  UserName->Text="";
  ReturnAdd->Text="";
  Pop3Name->Text="";
  SmtpName->Text="";
  LoginName->Text="";
  LoginPwd->Text="";
}
void __fastcall TMailCountDlg::FormDestroy(TObject *Sender)
{
  delete CountProper;  
}
//---------------------------------------------------------------------------

void __fastcall TMailCountDlg::NewButtonClick(TObject *Sender)
{
  ClearEdit();
  CountName->SetFocus();  
}
//---------------------------------------------------------------------------

void __fastcall TMailCountDlg::CheckBox1Click(TObject *Sender)
{
  if(CheckBox1->Checked)
  {
    TimeOutEdit->Enabled=true;
    MainForm->DefaultCounter.TimeOutLimit=TimeOutEdit->Text.ToInt()*60000;
  }

}
//---------------------------------------------------------------------------

void __fastcall TMailCountDlg::TimeOutEditChange(TObject *Sender)
{
  MainForm->DefaultCounter.TimeOutLimit=TimeOutEdit->Text.ToInt()*60000;  
}
//---------------------------------------------------------------------------

⌨️ 快捷键说明

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