📄 main.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 + -