起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 1309|回复: 23

【结】发送邮件,怎么抄送多人

[复制链接]
发表于 2010-7-22 16:10:19 | 显示全部楼层 |阅读模式
SendMailExchang := TMessageExchanger.Create(nil);
          lMessage := TMessage.Create(nil);
          lAccount := TMailAccount.Create;
          MailSystem := TMailSystem.Create;
          try
            SendMailExchang.MessageKind := TMessageKind.mkSend;
            lAccount.SMTPHost:='172.16.1.15';
            lAccount.SMTPPort:=25;
            lAccount.POPHost:='172.16.1.15';
            lAccount.POPPort:=101;
            lAccount.MailAddress:='172.16.1.15';
            lAccount.UserID:='administrator';
            lAccount.Password:='******;
            lAccount.AccountID := '111@chinaboilers.com';
            lAccount.Verify := True;
            lAccount.VerifyAccount := '111@chinaboilers.com';
            lAccount.VerifyPassword := '*****';
            lMessage.From := q2.FieldByName('Fmail').AsString+'@chinaboilers.com';  //发件人
            lMessage.SendTo := vc;  //收件人             c
            lMessage.Subject := q1.FieldByName('XMMC').AsString+'-'+q1.FieldByName('NRCC').AsString; //mail tatil
            lMessage.Body.Text := '内容描述:'+q1.FieldByName('NRMS').AsString+#13+
                     '要求要点:'+q1.FieldByName('YQYD').AsString+#13+
                     '是否与收款/罚款联系:'+q1.FieldByName('SFYSK_FKLX').AsString+#13+
                     '基准时间:'+q1.FieldByName('JZSJ').AsString+#13+
                     '前/后:'+q1.FieldByName('Q_H').AsString+#13+
                     'XX天:'+q1.FieldByName('XXT').AsString+#13+
                     '实际需完成日期:'+q1.FieldByName('TSSJXWCRQ').AsString+#13+
                     '提醒开始关注时间点:'+q1.FieldByName('TXKSGZSJD').AsString+#13+
                     '警戒点:'+q1.FieldByName('JJD').AsString+#13+
                     '落实部门:'+q1.FieldByName('LSBM').AsString+#13+
                     '落实者:'+q1.FieldByName('LSZ').AsString+#13+
                     '信息相关抄送人员:'+q1.FieldByName('XXXGCSRY').AsString;    //mail context
            lMessage.ContentFormatType := TContentFormatType.ftText;  // 设置正文内容格式
            //lMessage.Date := business.System.SysUtils.DateToStr(business.System.SysUtils.now());
            //根据邮件的发件人获取发送邮件的帐号,
            //此帐号是从Business邮件系统中设置的帐号中获得的
            //如果使用自定义的发送帐户,请重新设置lAccount对象的相关属性
            //lAccount := MailSystem.FindAccountByAddress(lMessage.From);
            if lAccount <> nil then
            begin
              lMailContent := TMemoryStream.Create;  //用于存放邮件的正文
              lMailContent.Clear;
              lMessage.SaveToStream(lMailContent);
              lMailContent.Position := 0;  //移动流的指针
              try
                if lAccount.Verify then
                begin
                  if lAccount.DifferPOP then
                    SendMailExchang.SMTPMessages.Add(lAccount.VerifyAccount,
                      lAccount.VerifyPassword, lAccount.SMTPHost,
                      lMessage.From, lMessage.SendTo, lMailContent, lAccount.SMTPPort)
                  else
                    SendMailExchang.SMTPMessages.Add(lAccount.UserID, lAccount.Password,
                      lAccount.SMTPHost, lMessage.From, lMessage.SendTo, lMailContent,
                      lAccount.SMTPPort);
                end
                else
                  SendMailExchang.SMTPMessages.Add(lAccount.SMTPHost, lMessage.From,
                    lMessage.SendTo, lMailContent, lAccount.SMTPPort);
              finally
                lMailContent.Free;
                lAccount.Free;
              end;
                SendMailExchang.Active := True;  //发送邮件
                //dialogs.showmessage('邮件发送成功!');
            end;
          finally
            lMessage.Free;
            MailSystem.Free;
            SendMailExchang.Free;  //  SendMailExchang对象一定要最后释放
          end;
这是发送邮件的代码,如果填写抄送给多人
回复

使用道具 举报

 楼主| 发表于 2010-7-22 16:12:05 | 显示全部楼层
现在循环这个代码给每个人发邮件
怎么做到给一个发邮件,抄送多人
回复 支持 反对

使用道具 举报

发表于 2010-7-22 16:15:46 | 显示全部楼层
TMessage有一个cc属性,你尝试一下给他设置抄送的地址,多个之间用分号隔开。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-7-23 08:36:35 | 显示全部楼层
lAccount.AccountID := '111@chinaboilers.com';
            lAccount.Verify := True;
            lAccount.VerifyAccount := '111@chinaboilers.com';
            lAccount.VerifyPassword := '*****';
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-7-23 08:37:37 | 显示全部楼层
这段代码意思是发送人 登录检测?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-7-23 08:38:47 | 显示全部楼层
按照添加cc属性,邮件发不出去了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-7-23 09:00:10 | 显示全部楼层
邮件发送 抄送没问题
lAccount.AccountID := '111@chinaboilers.com';
            lAccount.Verify := True;
            lAccount.VerifyAccount := '111@chinaboilers.com';
            lAccount.VerifyPassword := '*****';

给我解释下这段代码的意思
回复 支持 反对

使用道具 举报

发表于 2010-7-23 09:02:20 | 显示全部楼层
这个代码就相当于是 邮件服务器 需要的身份验证。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-7-23 09:06:18 | 显示全部楼层
lAccount.MailAddress:='172.16.1.15';
            lAccount.UserID:='administrator';
            lAccount.Password:='******;
这里不是验证了吗
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-7-23 09:07:20 | 显示全部楼层
7楼是发件人身份验证?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-8 07:11 , Processed in 0.039902 second(s), 16 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表