BCB6中Indy9发送邮件的例子

来源: 作者: 2007-10-31 出处:pcdog.com

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


更多内容请看PCdog.com--垃圾邮件专题
上一篇:网上邻居目录树
下一篇:一段屏幕抓图超简版代码