当前位置:首页 >> 编程开发 >> Visual C++ >> 内容

BCB6中Indy9发送邮件的例子

时间:2010/4/10 作者:平凡之路 来源:xuhantao.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;
}

相关文章
  • 没有相关文章
共有评论 0相关评论
发表我的评论
  • 大名:
  • 内容:
  • 徐汉涛(www.xuhantao.com) © 2024 版权所有 All Rights Reserved.
  • 部分内容来自网络,如有侵权请联系站长尽快处理 站长QQ:965898558(广告及站内业务受理) 网站备案号:蒙ICP备15000590号-1