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;
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值