2

我正在尝试使用 Mailaddress 类发送多封电子邮件(> 10),但显然它不喜欢它。有没有办法将6号之后的电子邮件附加到CC?

或任何其他解决方法?

我有:

(<email1@test.com>; <email2@test.com>; <email3@test.com>, <email4@test.com>; <email5@test.com>; \r\n\t<email6@test.com>, <email7@test.com>; <email8@test.com>\r\n\TEXT)

我做 Environment.NewLine,我将 < 、 > 、 \t 和 " " 替换为 "" (不知道其他更好的格式化方法)

当我尝试通过 mailaddress 类发送它时,出现格式错误。但是当电子邮件数量较少时工作正常。

解决了:

            string to = "";
            string cc = "";
            int i = 0;
            foreach (string item in multiAddress.Split(','))
            {
                i += 1;
                if (i < 10)
                {
                    to += item + ",";
                }
                else
                {
                    cc += item + ",";
                }
            }
            to = to.Remove(to.Length - 1);
            cc = cc.Remove(cc.Length - 1);
4

3 回答 3

3

为什么不能使用常规方式向多个地址发送电子邮件?成一个字符串,用逗号分隔,如下所示:

string recipients="email1@test.com,email2@test.com,email3@test.com" etc..

当我尝试发送给超过 9 个收件人时,我个人遇到了一个错误,因此我编写了以下代码片段,在第 9 个收件人之后,它会自动将收件人移动到 CC 字段。

       var emailAddresses= "YourEmailAddresses";

        //conccatenat all the email addresses into one variable
        //if there is more than 9 recipients it moves them to the CC field
        string to="";
        string cc = "";
        int i = 0;
        foreach (string item in emailAddresses) {
            i += 1;
            if (i < 10) {
                to += item + ",";
            }
            else
            {
                cc += item + ",";
            }
         to = to.Remove(to.Length - 1);

如果您使用循环,请确保删除字符串上的最后一个逗号(因为它会在每个条目后添加一个逗号,因此您将在最后一封电子邮件之后有一个额外的逗号)。

于 2016-06-21T08:16:22.780 回答
0

您可以使用正则表达式将邮件地址与其他字符隔离,例如:

(<)(\w+@\w+\.\w+)(>)

将匹配角度之间的任何邮件地址。

        string source = "(<email1@test.com>; <email2@test.com>; <email3@test.com>, <email4@test.com>; <email5@test.com>; \r\n\t<email6@test.com>, <email7@test.com>; <email8@test.com>\r\nTEXT)";
        Regex regx = new Regex(@"(<)(\w+@\w+\.\w+)(>)");

        MatchCollection matches = regx.Matches(source);
        foreach (Match match in matches) {
            Console.WriteLine(match.Groups[2].Value);
        }

这是一个正在运行的示例

于 2016-06-21T08:34:32.907 回答
0

您还可以使用跳过方法使用常规 C# 代码编写代码以获取 cc 邮件,如下所示

   public static string[] GetCCEmails()
   {
       const int limitToIncludeCC = 10 ;// no of email to be skipped
       string[] emailAdresses = new string[] { "emailadress1@xx.com", "emailadress2@xx.com", "emailadress2@xx.com", "emailadress3@xx.com", "emailadress4@xx.com", "emailadress5@xx.com" };
       var ccmailIDs = emailAdresses.Skip(limitToIncludeCC);
       return ccmailIDs.ToArray();
    }

并将此数组分配给System.Net.Mail的 MailMessage 类的 CC 属性。

于 2016-06-21T10:07:39.197 回答