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

📄 sendform.cpp

📁 关于书籍《Borland c++Builder工程实践》的源代码
💻 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 + -