程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> BCB6中Indy9發送郵件的例子

BCB6中Indy9發送郵件的例子

編輯:關於C++

有兩個控件:TIdMessage:IdMsgSend,TIdSMTP:SMTP

/發送郵件
//注:發送的SMTP屬性通過SMTP_Setup函數設置了
//參數:in:cTo,收件人
//     cCc 抄送
//     cBcc 暗抄
//     cSubject 主題
//     cBody 內容
//     cAttachList 發送的附件(以\n分割)
//   OUT: Msg 返回錯誤信息
//返回值 0: 成功發送
//    -1:失敗,參見Msg信息
//    -2: 沒有先設置SMTP發送屬性
int __fastcall TM::SendMail(const char * cTo, const char * cCc, const char * cBcc,\
               const char* cSubject, const char * cBody, const char* cAttachList,\
               char * cMsg)
{
   int iRet=0;
   if(!SetupOk)
     return -2;
   IdMsgSend->Clear(); //清除,否則包含有上一條的信息
   IdMsgSend->ContentType = ContentType;
   IdMsgSend->From->Text = LocalMail;
   if (ReturnReciept)
   {//{We set the recipient to the From E-Mail address }
    IdMsgSend->ReceiptRecipient->Text = IdMsgSend->From->Text;
   }
   else
   {// {indicate that there is no receipt recipiant}
    IdMsgSend->ReceiptRecipient->Text = "";
   }
   IdMsgSend->Recipients->EMailAddresses = cTo; //{ To: header }
   IdMsgSend->Subject = cSubject; //{ Subject: header }
   IdMsgSend->CCList->EMailAddresses = cCc;// {CC}
   IdMsgSend->BccList->EMailAddresses = cBcc; //{BCC}
   IdMsgSend->Priority = TIdMessagePriority(Priority); // { Message Priority }
   IdMsgSend->Body->Text = String(cBody);
   if(strlen(cAttachList))
   {
     TStringList * sl= new TStringList;
     sl->Text=String(cAttachList);
     for(int i=0;i<sl->Count;i++)
     {
       IdMsgSend->MessageParts->Add();
       new TIdAttachment(IdMsgSend->MessageParts,sl->Strings[i]);
     }
     delete sl;
   }
   if(!SMTP->Connected())
   {
     try
     {
       SMTP->Connect();
     }
     catch(Exception &e)
     {
       strcpy(cMsg,"連接SMTP服務器失敗!錯誤信息:");
       strcat(cMsg,e.Message.c_str());
       iRet = -1;
       return iRet;
     }
   }
   if(SMTP->Connected())
   {
     try
     {
       SMTP->Send(IdMsgSend);
     }
     catch(Exception &e)
     {
       strcpy(cMsg,e.Message.c_str());
       iRet = -1;
     }
   }
   else
   {
     strcpy(cMsg,"連接SMTP服務器失敗!");
     iRet = -1;
   }
   return iRet;
}
//設置發送的SMTP屬性
//參數:in:cHost,SMTP服務器地址
//     iPort, SMTP端口
//     cLocalMail 發件人的郵箱
//     iAuth 是否認證 0,不認證,1認證
//     cUsername 認證用戶名
//     cPassword 認證密碼
//   OUT: 無
//返回值 0: 成功設置
//    -1:失敗,缺少屬性
int __fastcall TM::SMTP_Setup(const char * cHost, const int iPort, const char *cLocalMail,\
             const int iAuth, const char * cUsername, const char *cPassword)
{
   int iRet=0;
   if(SMTP->Connected())
     SMTP->Disconnect();
   SMTP->Host = String(cHost);
   SMTP->Port = iPort;
   this->LocalMail = String(cLocalMail);
   switch (iAuth)
   {
     // {authentication settings}
     case 0:
      SMTP->AuthenticationType = atNone;
      break;
     case 1:
      SMTP->AuthenticationType = atLogin; //{Simple Login}
      break;
   };
   SMTP->Username = cUsername;
   SMTP->Password = cPassword;

   SetupOk = true;
   return iRet;
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved