【问题标题】:c# send mail to multiple recipientsc# 向多个收件人发送邮件
【发布时间】:2020-09-15 12:28:01
【问题描述】:

我用它来发送邮件,我定义了一些包含值的包变量:

public MailProperties(ScriptObjectModel dts)
        {
            if (
             !string.IsNullOrEmpty((string)dts.Variables["$Package::mailFrom"].Value) &&
             !string.IsNullOrEmpty((string)dts.Variables["$Package::mailTo"].Value) &&
             !string.IsNullOrEmpty((string)dts.Variables["$Package::mailPwd"].GetSensitiveValue()) &&
             !string.IsNullOrEmpty((string)dts.Variables["$Package::mailSmtp"].Value) &&
             !string.IsNullOrEmpty((string)dts.Variables["$Package::mailPort"].Value)

             )
            {
                fromMail = (string)dts.Variables["$Package::mailFrom"].Value;
                toMail = (string)dts.Variables["$Package::mailTo"].Value;
                bccMail = (string)dts.Variables["$Package::mailBcc"].Value;
                accountPassword = (string)dts.Variables["$Package::mailPwd"].GetSensitiveValue();
                accountSmtp = (string)dts.Variables["$Package::mailSmtp"].Value;
                accountSmtpPort = (string)dts.Variables["$Package::mailPort"].Value;
                useSSL = (bool)dts.Variables["$Package::useSSL"].Value;


                pathAttachment = new List<string>();
                pathAttachment.Add((string)dts.Variables["User::pathFileReject"].Value);
                pathAttachment.Add((string)dts.Variables["User::pathFileReject2"].Value);
            }
            else
            {
                throw new Exception("error text...");
            }

        }

我需要向更多人发送邮件,所以我将 mailTo 设置为 mail1@gmail.com,mailBcc 为 mail2@gmail.com 并且它可以工作,但如果我将 mailBcc 设置为“mail2@gmail.com,mail3@gmail” .com" 或 "mail2@gmail.com; mail3@gmail.com" 不起作用,我该怎么做?

编辑:这是 sendMail 函数

public static void sendMail(MailProperties mailProperties, ReportETL reportETL)
        {
            MimeMessage message = new MimeMessage();
            message.From.Add(new MailboxAddress("text..", mailProperties.fromMail));
            message.To.Add(new MailboxAddress(mailProperties.toMail));
            message.Subject = "text...";

            if (!string.IsNullOrEmpty(mailProperties.bccMail))
            {
                message.Bcc.Add(new MailboxAddress(mailProperties.bccMail));
            }

            BodyBuilder bodyBuilder = new BodyBuilder();
            bodyBuilder.HtmlBody = ReportETLService.getHtmlFromReporETL(reportETL);

            mailProperties.pathAttachment.Where(x => File.Exists(x)).ToList().ForEach(y => bodyBuilder.Attachments.Add(y));

            message.Body = bodyBuilder.ToMessageBody();

            try
            {
                SmtpClient smtpClient = new SmtpClient();

                smtpClient.Connect(mailProperties.accountSmtp, int.Parse(mailProperties.accountSmtpPort), mailProperties.useSSL);
                smtpClient.Authenticate(mailProperties.fromMail, mailProperties.accountPassword);
                smtpClient.Send(message);

                smtpClient.Disconnect(true);
            }
            catch (Exception e) { throw new Exception("text... " + e.Message); }

        }

【问题讨论】:

标签: c# ssis mailkit


【解决方案1】:

根据文档message.To 是列表类型。因此您可以像这样添加更多地址。

 InternetAddressList list = new InternetAddressList();

    list.add(adress1)
    list.add(adress2)
    list.add(adress3)
    list.add(adress4)
message.To.AddRange(list);

【讨论】:

  • 如何从字符串(邮件地址)中添加地址1、地址2?表示如何将字符串转换为 InternetAddress?
【解决方案2】:

而不是使用密件抄送(这将是一个选项,但有最大数量的问题)只需遍历所有邮件地址并为每个收件人发送一个。 (不要快速,否则你会遇到其他问题) 这样,应该“更容易”发现无法投递的邮件。

【讨论】:

    【解决方案3】:

    好吧,假设您的 toMailccMailbccMail 属性只是字符串而不是字符串列表,您可以这样做:

    InternetAddressList list;
    
    if (!string.IsNullOrEmpty(mailProperties.toMail) && InternetAddressList.TryParse (mailProperties.toMail, out list))
        message.To.AddRange(list);
    
    if (!string.IsNullOrEmpty(mailProperties.ccMail) && InternetAddressList.TryParse (mailProperties.ccMail, out list))
        message.Cc.AddRange(list);
    
    if (!string.IsNullOrEmpty(mailProperties.bccMail) && InternetAddressList.TryParse (mailProperties.bccMail, out list))
        message.Bcc.AddRange(list);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-18
      • 1970-01-01
      • 2012-11-30
      • 2017-12-05
      • 2015-08-29
      • 2015-12-18
      相关资源
      最近更新 更多