📄 sendform.cpp
字号:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "SettingForm.h"
#include "SendForm.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TSendForm *SendForm;
//---------------------------------------------------------------------------
__fastcall TSendForm::TSendForm(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TSendForm::mnuSettingClick(TObject *Sender)
{
SettingForm->ShowModal() ;
}
//---------------------------------------------------------------------------
void __fastcall TSendForm::mnuExitClick(TObject *Sender)
{
NMSMTP1->Abort();
Close();
}
//---------------------------------------------------------------------------
void __fastcall TSendForm::SBtnSendClick(TObject *Sender)
{
try
{
// 设置POP3邮件服务器
NMSMTP1->Host = SettingForm->txtSMTPHost->Text ;
// 设置 SMTP Port 25
NMSMTP1->Port = StrToInt(SettingForm->txtSMTPPort->Text);
// 设置邮件服务器 Login
NMSMTP1->UserID = SettingForm->txtSMTPUserID->Text ;
// 尝试连接邮件服务器
NMSMTP1->Connect() ;
// E-Mail From Address
NMSMTP1->PostMessage->FromAddress = SettingForm->txtFromAddress->Text ;
// E-Mail From Name
NMSMTP1->PostMessage->FromName =SettingForm->txtFromName->Text;
// E-Mail To Address
NMSMTP1->PostMessage->ToAddress->Add(txtTo->Text) ;
// E-Mail CC Address
NMSMTP1->PostMessage->ToCarbonCopy->Add(txtCC->Text) ;
// E-Mail BCC Address
NMSMTP1->PostMessage->ToBlindCarbonCopy->Add(txtBCC->Text) ;
// E-Mail Subject
NMSMTP1->PostMessage->Subject = txtSubject->Text ;
// E-Mail Body (邮件正文)
NMSMTP1->PostMessage->Body->Assign(txtBody->Lines) ;
// E-Mail Attachment (附件)
NMSMTP1->PostMessage->Attachments->AddStrings(lstAttach->Items);
// 发送 E-Mail Header 和 Body 部分
NMSMTP1->SendMail();
}
__finally
{
//关闭邮件服务器连接
NMSMTP1->Disconnect() ;
}
}
//---------------------------------------------------------------------------
void __fastcall TSendForm::FormCloseQuery(TObject *Sender, bool &CanClose)
{
NMSMTP1->Abort() ;
}
//---------------------------------------------------------------------------
void __fastcall TSendForm::NMSMTP1Connect(TObject *Sender)
{
StatusBar1->SimpleText = "Status: Connect to SMTP Server " + SettingForm->txtSMTPHost->Text ;
}
//---------------------------------------------------------------------------
void __fastcall TSendForm::NMSMTP1ConnectionFailed(TObject *Sender)
{
StatusBar1->SimpleText = "Status: Connection Failed to SMTP Server " + SettingForm->txtSMTPHost->Text ;
}
//---------------------------------------------------------------------------
void __fastcall TSendForm::NMSMTP1ConnectionRequired(bool &Handled)
{
if (MessageDlg("Connection Required ?", mtConfirmation, TMsgDlgButtons() << mbYes << mbNo, 0) == mrYes)
{
Handled = true;
NMSMTP1->Connect();
}
}
//---------------------------------------------------------------------------
void __fastcall TSendForm::NMSMTP1Disconnect(TObject *Sender)
{
StatusBar1->SimpleText = "Status: Disconnect from SMTP Server " + SettingForm->txtSMTPHost->Text ;
}
//---------------------------------------------------------------------------
void __fastcall TSendForm::NMSMTP1EncodeEnd(AnsiString Filename)
{
StatusBar1->SimpleText = "Status: End Encoding " + Filename;
}
//---------------------------------------------------------------------------
void __fastcall TSendForm::NMSMTP1EncodeStart(AnsiString Filename)
{
StatusBar1->SimpleText = "Status: Start Encoding " + Filename;
}
//---------------------------------------------------------------------------
void __fastcall TSendForm::NMSMTP1Failure(TObject *Sender)
{
StatusBar1->SimpleText = "Status: Failure.";
}
//---------------------------------------------------------------------------
void __fastcall TSendForm::NMSMTP1HeaderIncomplete(bool &handled, int hiType)
{
StatusBar1->SimpleText = "Status: Header Incomplete - " + IntToStr(hiType) ;
}
//---------------------------------------------------------------------------
void __fastcall TSendForm::NMSMTP1HostResolved(TComponent *Sender)
{
StatusBar1->SimpleText = "Status: Host Resolved - " + SettingForm->txtSMTPHost->Text ;
}
//---------------------------------------------------------------------------
void __fastcall TSendForm::NMSMTP1InvalidHost(bool &Handled)
{
AnsiString strHost ;
if (InputQuery("Invalid SMTP Mail Server", "Please enter a valid SMTP Server", strHost))
{
NMSMTP1->Host = strHost;
Handled = true ;
}
}
//---------------------------------------------------------------------------
void __fastcall TSendForm::NMSMTP1RecipientNotFound(AnsiString Recipient)
{
StatusBar1->SimpleText = "Status: Recipient not found - " + Recipient ;
}
//---------------------------------------------------------------------------
void __fastcall TSendForm::NMSMTP1SendStart(TObject *Sender)
{
StatusBar1->SimpleText = "Status: Start Sending";
}
//---------------------------------------------------------------------------
void __fastcall TSendForm::NMSMTP1Status(TComponent *Sender,
AnsiString Status)
{
StatusBar1->SimpleText = Status;
}
//---------------------------------------------------------------------------
void __fastcall TSendForm::NMSMTP1Success(TObject *Sender)
{
StatusBar1->SimpleText = "Status: SMTP Success";
}
//---------------------------------------------------------------------------
void __fastcall TSendForm::mnuInsertClick(TObject *Sender)
{
if (OpenDialog1->Execute())
{
Label5->Visible = true ;
lstAttach->Visible = true ;
//有附件时显示附件栏
Panel1->Height = 173;
//在TlistBox控lstAttach中增加一项
lstAttach->Items->Add(OpenDialog1->FileName);
}
}
//---------------------------------------------------------------------------
void __fastcall TSendForm::FormCreate(TObject *Sender)
{
Label5->Visible = false ;
lstAttach->Visible = false ;
Panel1->Height = 123;
}
//---------------------------------------------------------------------------
void __fastcall TSendForm::NMSMTP1AuthenticationFailed(bool &Handled)
{
ShowMessage("身份认证失败,请注意填写正确的信息!");
}
//---------------------------------------------------------------------------
void __fastcall TSendForm::mnuDeleteClick(TObject *Sender)
{
//删除所选邮件
lstAttach->Items->Delete(lstAttach->ItemIndex);
//如果没有附件则隐藏附件栏
if (lstAttach->Items->Count==0) Panel1->Height = 123;
}
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -