代码之家  ›  专栏  ›  技术社区  ›  Matt Dawdy

.Net System.Mail.Message添加多个“收件人”地址

  •  38
  • Matt Dawdy  · 技术社区  · 15 年前

    编辑:这个问题是毫无意义的,除了作为一个练习在红鲱鱼。这个问题原来是我的白痴(没有人收到电子邮件,因为主机没有被指定,在web.config中是不正确的)和用户告诉我,他们有时收到电子邮件,有时没有,而实际上他们从来没有收到电子邮件。

    因此,我没有采取适当的措施在受控环境中重现问题,而是依赖用户信息和“它在我的机器上工作”的心态。 对我自己和其他有时是白痴的人来说,这是个很好的提醒。


    我只是打了一些我认为不一致的东西,想看看我是不是做错了什么,是不是白痴,还是。。。

    MailMessage msg = new MailMessage();
    msg.To.Add("person1@domain.com");
    msg.To.Add("person2@domain.com");
    msg.To.Add("person3@domain.com");
    msg.To.Add("person4@domain.com");
    

    要添加倍数,我必须这样做:

    msg.To.Add("person1@domain.com,person2@domain.com,person3@domain.com,person4@domain.com");
    

    我不明白。我以为我要把多个人加入 To

    我想我刚刚意识到了我的错误——要向集合中添加一项,请使用

    如果你只用一个 string ,它将替换列表中的所有内容。 编辑:其他人已经测试过,但没有看到这种行为。这要么是我特定版本框架中的一个bug,要么更可能是我的一个白痴策略。

    8 回复  |  直到 12 年前
        1
  •  39
  •   Lance McNearney    15 年前

    var message = new MailMessage();
    
    message.To.Add("user@example.com");
    message.To.Add("user2@example.com");
    
    message.From = new MailAddress("test@example.com");
    message.Subject = "Test";
    message.Body = "Test";
    
    var client = new SmtpClient("localhost", 25);
    client.Send(message);
    

    将文件内容转储到: MailAddressCollection :


    DisplayName用户主机地址

    用户示例.comuser@example.com
    用户2示例.comuser2@example.com

    smtp4dev :

    Received: from mycomputername (mycomputername [127.0.0.1])
         by localhost (Eric Daugherty's C# Email Server)
         3/8/2010 12:50:28 PM
    MIME-Version: 1.0
    From: test@example.com
    To: user@example.com, user2@example.com
    Date: 8 Mar 2010 12:50:28 -0800
    Subject: Test
    Content-Type: text/plain; charset=us-ascii
    Content-Transfer-Encoding: quoted-printable
    
    Test
    

    你确定你的代码或SMTP服务器没有其他问题吗?

        2
  •  11
  •   prashant    11 年前
    private string FormatMultipleEmailAddresses(string emailAddresses)
        {
          var delimiters = new[] { ',', ';' };
    
          var addresses = emailAddresses.Split(delimiters, StringSplitOptions.RemoveEmptyEntries);
    
          return string.Join(",", addresses);
        }
    

    现在你可以像这样使用它

    var mailMessage = new MailMessage();
    mailMessage.To.Add(FormatMultipleEmailAddresses("test@gmail.com;john@rediff.com,prashant@mail.com"));
    
        3
  •  10
  •   Brian Surowiec    9 年前

    您可以使用多个 System.Net.Mail.MailAddress

        4
  •  6
  •   Tschareck    13 年前

    您可以尝试将电子邮件放入逗号分隔的字符串中( "person1@domain.com, person2@domain.com" ):

    C#:

    ArrayList arEmails = new ArrayList();
    arEmails.Add("person1@domain.com");
    arEmails.Add("person2@domain.com");
               
    string strEmails = string.Join(", ", arEmails);
    

    Dim arEmails As New ArrayList
    arEmails.Add("person1@domain.com")
    arEmails.Add("person2@domain.com")
    
    Dim strEmails As String = String.Join(", ", arEmails)
    
        5
  •  3
  •   David Brunelle    15 年前

    添加多个System.MailAddress对象以获取所需内容。

        6
  •  1
  •   TN888 Ritesh Gune    11 年前

    objMessage.To.Add(***addresses:=***"email1@yahoo.com , email2@aol.com , email3@gmail.com")

        7
  •  0
  •   Mike    11 年前

    添加消息(<邮件地址(>)将MailAddress添加到集合的末尾
    添加消息(<字符串(>)向集合中添加电子邮件列表

        8
  •  -1
  •   Praveen Kumar Rejeti    8 年前
    using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Linq;
    using System.Net.Mail;
    using System.Web;
    
    namespace HMS.HtmlHelper
    {
        public class SendmailHelper
        {
            //Created SendEMail method for sendiing mails to users 
            public bool SendEMail(string FromName, string ToAddress, string Subject, string Message)
            {
                bool valid =false;
                try
                {
                    string smtpUserName = System.Configuration.ConfigurationManager.AppSettings["smtpusername"].ToString();
                    string smtpPassword = System.Configuration.ConfigurationManager.AppSettings["smtppassword"].ToString();
                    MailMessage mail = new MailMessage();``
                    mail.From = new MailAddress(smtpUserName, FromName);
                    mail.Subject = Subject;
                    mail.To.Add(FormatMultipleEmailAddresses(ToAddress));
                    //mail.To.Add(ToAddress);
                    mail.Body = Message.ToString();
                    mail.IsBodyHtml = true;
                    SmtpClient smtp = new SmtpClient();
                    smtp.Port = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["smtpserverport"]);
                    smtp.Host = System.Configuration.ConfigurationManager.AppSettings["SmtpServer"]; /
                    smtp.Credentials = new System.Net.NetworkCredential(smtpUserName, smtpPassword);
                    smtp.EnableSsl = Convert.ToBoolean(System.Configuration.ConfigurationManager.AppSettings["ssl"]); ;
                    smtp.Send(mail);
                    valid = true;
    
                }
                catch (Exception ex)
                {
                    valid =false ;
                }
    
                return valid;
            }
    
    
    
            public string FormatMultipleEmailAddresses(string emailAddresses)
            {
                var delimiters = new[] { ',', ';' };
    
                var addresses = emailAddresses.Split(delimiters, StringSplitOptions.RemoveEmptyEntries);
    
                return string.Join(",", addresses);
            }
    
        }
    }``
    
    推荐文章