BCB6中Indy9发送邮件的例子
当前位置:以往代写 > C/C++ 教程 >BCB6中Indy9发送邮件的例子
2019-06-13

BCB6中Indy9发送邮件的例子

BCB6中Indy9发送邮件的例子

有两个控件: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;
}

    关键字:

在线提交作业