首页 电脑 电脑学堂 查看内容

利用C++ Builder 5 编写发送邮件的DLL

2004-9-29 20:05 731 0

摘要: Delphi和C++ Builder都给我们提供了丰富的Internet组件,我们可以利用其编写许多使用的网络代码,以下是我利用C++ Builder 5编写的一个发送邮...
关键词: nbsp NMSMTP Form include char TForm fastcall PostMessageA Unit Fromaddress

Delphi和C++ Builder都给我们提供了丰富的Internet组件,我们可以利用其编写许多使用的网络代码,以下是我利用C++ Builder 5编写的一个发送邮件Dll的代码:    Unit1.CPP#include #include #include ”Unit2.h”#pragma hdrstop//---------------------------------------------------------------------------#pragma argsusedBOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fwdreason, LPVOID lpvReserved){        return 1;}//---------------------------------------------------------------------------extern ”C” int _stdcall SendMail(char *subject,char *content,char *Toaddress,char *Fromaddress,char *SMTPserver,char *Userid);//---------------------------------------------------------------------------int _export _stdcall SendMail(char *subject,char *content,char *Toaddress,char *Fromaddress,char *SMTPserver,char *Userid){    //  1 send a mail success    //  -1 connect SMTP Server error    //  -2 send a mail error    Form2 = new TForm2(Application);    Form2->NMSMTP1->Host = SMTPserver;    Form2->NMSMTP1->UserID = Userid;    try    {       Form2->NMSMTP1->Connect();       if (!Form2->NMSMTP1->Connected)       {return Form2->errorcode;}     //connection error       else       {          Form2->NMSMTP1->PostMessageA->ToAddress->Add(Toaddress);          Form2->NMSMTP1->PostMessageA->FromAddress = Fromaddress;          Form2->NMSMTP1->PostMessageA->Subject = subject;          Form2->NMSMTP1->PostMessageA->Body->Add(content);          try          {             Form2->NMSMTP1->SendMail();             Form2->NMSMTP1->Disconnect();             return 0;          }          catch(...)          {             Form2->NMSMTP1->Disconnect();             return -3;          }       }    }    catch(...)    {       return -1;    }}由于TNMSMTP类不能单独创建实例,所以我们建立一个Form,Form2来安放NMSMTP1控件,所以有Unit2.cppUnit2.CPP//---------------------------------------------------------------------------#include #pragma hdrstop#include ”Unit2.h”//---------------------------------------------------------------------------#pragma package(smart_init)#pragma resource ”*.dfm”TForm2 *Form2;//---------------------------------------------------------------------------__fastcall TForm2::TForm2(TComponent* Owner)        : TForm(Owner){}//---------------------------------------------------------------------------void __fastcall TForm2::NMSMTP1ConnectionFailed(TObject *Sender){   errorcode = -1;}//---------------------------------------------------------------------------void __fastcall TForm2::NMSMTP1AuthenticationFailed(bool &Handled){   errorcode = -2;     }//---------------------------------------------------------------------------Unit2.h//---------------------------------------------------------------------------#ifndef Unit2H#define Unit2H//---------------------------------------------------------------------------#include #include #include #include #include #include //---------------------------------------------------------------------------class TForm2 : public TForm{__published: // IDE-managed Components        TNMSMTP *NMSMTP1;        void __fastcall NMSMTP1ConnectionFailed(TObject *Sender);        void __fastcall NMSMTP1AuthenticationFailed(bool &Handled);private: // User declarationspublic: // User declarations        int errorcode;        __fastcall TForm2(TComponent* Owner);};//---------------------------------------------------------------------------extern PACKAGE TForm2 *Form2;//---------------------------------------------------------------------------#endif   以上Dll只能利用不做认证的SMTP服务器进行Email的发送,对于需要认证的SMTP服务则不能使用,不过可以使用MAPI或者参照SMTP协议编写Socket来实现。
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

最新评论

返回顶部