【问题标题】:How to send email to multiple address using System.Net.Mail如何使用 System.Net.Mail 向多个地址发送电子邮件
【发布时间】:2011-11-21 20:59:05
【问题描述】:

我有 smtp 电子邮件功能。它适用于单个地址,但在多个地址中存在问题。

我正在使用以下代码行传递多个地址。

MailAddress to = new MailAddress("abc@gmail.com,xyz@gmail.com");

请让我知道问题,因为我没有收到任何错误。

【问题讨论】:

    标签: c# .net smtp


    【解决方案1】:
     string[] MultiEmails = email.Split(',');
     foreach (string ToEmail in MultiEmails)
     {
        message.To.Add(new MailAddress(ToEmail)); //adding multiple email addresses
     }
    

    【讨论】:

      【解决方案2】:

      我用的是“for”运算符。

      try
      {
          string s = textBox2.Text;
          string[] f = s.Split(',');
      
          for (int i = 0; i < f.Length; i++)
          {
              MailMessage message = new MailMessage(); // Create instance of message
              message.To.Add(f[i]); // Add receiver
              message.From = new System.Net.Mail.MailAddress(c);// Set sender .In this case the same as the username
              message.Subject = label3.Text; // Set subject
              message.Body = richTextBox1.Text; // Set body of message
              client.Send(message); // Send the message
              message = null; // Clean up
          }
      
      }
      
      catch (Exception ex)
      {
      
          MessageBox.Show(ex.Message);
      }
      

      【讨论】:

        【解决方案3】:

        我认为您可以使用此代码来获得具有显示名称的传出地址列表(也不同):

        //1.The ACCOUNT
        MailAddress fromAddress = new MailAddress("myaccount@myaccount.com", "my display name");
        String fromPassword = "password";
        
        //2.The Destination email Addresses
        MailAddressCollection TO_addressList = new MailAddressCollection();
        
        //3.Prepare the Destination email Addresses list
        foreach (var curr_address in mailto.Split(new [] {";"}, StringSplitOptions.RemoveEmptyEntries))
        {
            MailAddress mytoAddress = new MailAddress(curr_address, "Custom display name");
            TO_addressList.Add(mytoAddress);
        }
        
        //4.The Email Body Message
        String body = bodymsg;
        
        //5.Prepare GMAIL SMTP: with SSL on port 587
        var smtp = new SmtpClient
        {
            Host = "smtp.gmail.com",
            Port = 587,
            EnableSsl = true,
            DeliveryMethod = SmtpDeliveryMethod.Network,
            Credentials = new NetworkCredential(fromAddress.Address, fromPassword),
            Timeout = 30000
        };
        
        
        //6.Complete the message and SEND the email:
        using (var message = new MailMessage()
                {
                    From = fromAddress,
                    Subject = subject,
                    Body = body,
                })
        {
            message.To.Add(TO_addressList.ToString());
            smtp.Send(message);
        }
        

        【讨论】:

          【解决方案4】:

          试试这个..

          using System;
          using System.Net.Mail;
          
          public class Test
          {
              public static void Main()
              {
                  SmtpClient client = new SmtpClient("smtphost", 25);
                  MailMessage msg = new MailMessage("x@y.com", "a@b.com,c@d.com");
                  msg.Subject = "sdfdsf";
                  msg.Body = "sdfsdfdsfd";
                  client.UseDefaultCredentials = true;
                  client.Send(msg);
              }
          }
          

          【讨论】:

            【解决方案5】:

            我解决这个问题的代码:

            private void sendMail()
            {   
                //This list can be a parameter of metothd
                List<MailAddress> lst = new List<MailAddress>();
            
                lst.Add(new MailAddress("mouse@xxxx.com"));
                lst.Add(new MailAddress("duck@xxxx.com"));
                lst.Add(new MailAddress("goose@xxxx.com"));
                lst.Add(new MailAddress("wolf@xxxx.com"));
            
            
                try
                {
            
            
                    MailMessage objeto_mail = new MailMessage();
                    SmtpClient client = new SmtpClient();
                    client.Port = 25;
                    client.Host = "10.15.130.28"; //or SMTP name
                    client.Timeout = 10000;
                    client.DeliveryMethod = SmtpDeliveryMethod.Network;
                    client.UseDefaultCredentials = false;
                    client.Credentials = new System.Net.NetworkCredential("from@email.com", "password");
                    objeto_mail.From = new MailAddress("from@email.com");
            
                    //add each email adress
                    foreach (MailAddress m in lst)
                    {
                        objeto_mail.To.Add(m);
                    }
            
            
                    objeto_mail.Subject = "Sending mail test";
                    objeto_mail.Body = "Functional test for automatic mail :-)";
                    client.Send(objeto_mail);
            
            
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }
            

            【讨论】:

            • 发送后请务必处理掉objecto_mail。或者使用 Using 块。
            【解决方案6】:
            namespace WebForms.Code.Logging {
            
                public class ObserverLogToEmail: ILog {
                    private string from;
                    private string to;
                    private string subject;
                    private string body;
                    private SmtpClient smtpClient;
                    private MailMessage mailMessage;
                    private MailPriority mailPriority;
                    private MailAddressCollection mailAddressCollection;
                    private MailAddress fromMailAddress, toMailAddress;
                    public MailAddressCollection toMailAddressCollection {
                        get;
                        set;
                    }
                    public MailAddressCollection ccMailAddressCollection {
                        get;
                        set;
                    }
                    public MailAddressCollection bccMailAddressCollection {
                        get;
                        set;
                    }
            
                    public ObserverLogToEmail(string from, string to, string subject, string body, SmtpClient smtpClient) {
                        this.from = from;
                        this.to = to;
                        this.subject = subject;
                        this.body = body;
            
                        this.smtpClient = smtpClient;
                    }
            
                    public ObserverLogToEmail(MailAddress fromMailAddress, MailAddress toMailAddress,
                    string subject, string content, SmtpClient smtpClient) {
                        try {
                            this.fromMailAddress = fromMailAddress;
                            this.toMailAddress = toMailAddress;
                            this.subject = subject;
                            this.body = content;
            
                            this.smtpClient = smtpClient;
            
                            mailAddressCollection = new MailAddressCollection();
            
                        } catch {
                            throw new SmtpException(SmtpStatusCode.CommandNotImplemented);
                        }
                    }
            
                    public ObserverLogToEmail(MailAddressCollection fromMailAddressCollection,
                    MailAddressCollection toMailAddressCollection,
                    string subject, string content, SmtpClient smtpClient) {
                        try {
                            this.toMailAddressCollection = toMailAddressCollection;
                            this.ccMailAddressCollection = ccMailAddressCollection;
                            this.subject = subject;
                            this.body = content;
            
                            this.smtpClient = smtpClient;
            
                        } catch {
                            throw new SmtpException(SmtpStatusCode.CommandNotImplemented);
                        }
                    }
            
                    public ObserverLogToEmail(MailAddressCollection toMailAddressCollection,
                    MailAddressCollection ccMailAddressCollection,
                    MailAddressCollection bccMailAddressCollection,
                    string subject, string content, SmtpClient smtpClient) {
                        try {
                            this.toMailAddressCollection = toMailAddressCollection;
                            this.ccMailAddressCollection = ccMailAddressCollection;
                            this.bccMailAddressCollection = bccMailAddressCollection;
            
                            this.subject = subject;
                            this.body = content;
            
                            this.smtpClient = smtpClient;
            
                        } catch {
                            throw new SmtpException(SmtpStatusCode.CommandNotImplemented);
                        }
                    }#region ILog Members
            
                    // sends a log request via email.
                    // actual email 'Send' calls are commented out.
                    // uncomment if you have the proper email privileges.
                    public void Log(object sender, LogEventArgs e) {
                        string message = "[" + e.Date.ToString() + "] " + e.SeverityString + ": " + e.Message;
                        fromMailAddress = new MailAddress("", "HaNN", System.Text.Encoding.UTF8);
                        toMailAddress = new MailAddress("", "XXX", System.Text.Encoding.UTF8);
            
                        mailMessage = new MailMessage(fromMailAddress, toMailAddress);
                        mailMessage.Subject = subject;
                        mailMessage.Body = body;
            
                        // commented out for now. you need privileges to send email.
                        // _smtpClient.Send(from, to, subject, body);
                        smtpClient.Send(mailMessage);
                    }
            
                    public void LogAllEmails(object sender, LogEventArgs e) {
                        try {
                            string message = "[" + e.Date.ToString() + "] " + e.SeverityString + ": " + e.Message;
            
                            mailMessage = new MailMessage();
                            mailMessage.Subject = subject;
                            mailMessage.Body = body;
            
                            foreach(MailAddress toMailAddress in toMailAddressCollection) {
                                mailMessage.To.Add(toMailAddress);
            
                            }
                            foreach(MailAddress ccMailAddress in ccMailAddressCollection) {
                                mailMessage.CC.Add(ccMailAddress);
                            }
                            foreach(MailAddress bccMailAddress in bccMailAddressCollection) {
                                mailMessage.Bcc.Add(bccMailAddress);
                            }
                            if (smtpClient == null) {
                                var smtp = new SmtpClient {
                                    Host = "smtp.gmail.com",
                                    Port = 587,
                                    EnableSsl = true,
                                    DeliveryMethod = SmtpDeliveryMethod.Network,
                                    Credentials = new NetworkCredential("yourEmailAddress", "yourPassword"),
                                    Timeout = 30000
                                };
                            } else smtpClient.SendAsync(mailMessage, null);
                        } catch (Exception) {
            
                            throw;
                        }
                    }
                }
            

            【讨论】:

              【解决方案7】:
              MailAddress fromAddress = new MailAddress  (fromMail,fromName);
              MailAddress toAddress = new MailAddress(toMail,toName);
              MailMessage message = new MailMessage(fromAddress,toAddress);
              message.Subject = subject;
              message.Body = body;
              SmtpClient smtp = new SmtpClient()
              {
                  Host = host, Port = port,
                  enabHost = "smtp.gmail.com",
                  Port = 25,
                  EnableSsl = true,
                  UseDefaultCredentials = true,
                  Credentials = new  NetworkCredentials (fromMail, password)
              };
              smtp.send(message);
              

              【讨论】:

              • 请更好地格式化您的代码,并在发布前尝试编译它。这个new SmtpClient() {enabHost = "smtp.gmail.com",} 不会编译。发布一个可以编译的代码。
              【解决方案8】:

              StewieFG 的建议是有效的,但如果您想添加收件人名称,请使用此名称,Marco 在上面发布的内容是电子邮件地址第一,显示名称第二:

              msg.To.Add(new MailAddress("your@email1.com","Your name 1"));
              msg.To.Add(new MailAddress("your@email2.com","Your name 2"));
              

              【讨论】:

                【解决方案9】:
                MailMessage msg = new MailMessage();
                msg.Body = ....;
                msg.To.Add(...);
                msg.To.Add(...);
                
                SmtpClient smtp = new SmtpClient();
                smtp.Send(msg);
                

                ToMailAddressCollection,所以你可以添加你需要的地址。

                如果您需要显示名称,请尝试以下操作:

                MailAddress to = new MailAddress(
                    String.Format("{0} <{1}>",display_name, address));
                

                【讨论】:

                • @Denish: 使用msg.From 属性...有什么问题? ;)
                • 实际上我有逗号分隔的收件人地址列表。所以这个问题的另一个答案是合适的,但我找不到任何方法来分配来自地址的显示名称。
                • 您不需要单独添加每个收件人。 msg.To.Add("abc@gmail.com,xyz@gmail.com"); 工作正常。
                • 有人知道ToCC 可以包含多少个地址吗?我在 MSDN 上找不到任何信息...
                猜你喜欢
                • 1970-01-01
                • 2014-06-27
                • 2019-01-10
                • 2012-03-31
                • 2014-06-15
                • 2013-07-17
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多