【问题标题】:Mail doesn't work with multiple to addresses [duplicate]邮件不适用于多个收件人地址[重复]
【发布时间】:2017-12-16 21:19:31
【问题描述】:

可能重复:
Unable to send an email to multiple addresses/recipients using C#

我使用下面的代码在脚本任务中发送邮件

 string MailFromName = "Admin";
            System.Net.Mail.SmtpClient mailobj = new System.Net.Mail.SmtpClient();
            System.Net.Mail.MailAddress MailFrom = new System.Net.Mail.MailAddress(MailFromEmail, MailFromName);
            System.Net.Mail.MailAddress MailTo = new System.Net.Mail.MailAddress(MailToEmail, MailToEmail);
            System.Net.Mail.MailMessage mailmsg = new System.Net.Mail.MailMessage(MailFrom, MailTo);
            mailmsg.IsBodyHtml = true;
            mailmsg.Subject = strMessageSubject;
            mailmsg.Body = strMessageBody;
            mailobj.Host = strSMTPServerName;
            mailobj.Send(mailmsg);

当我将 MailToEmail 用作“myaddress@myMail.com”(即一个电子邮件地址)时,它工作正常

但是当我有多个地址要列出时,这不会发送任何邮件(也不会失败)

例如:“MyAdress@MyMail.com;MySecondAddress@MyMail.com”

如何解决?

编辑新代码

 string MailFromName = "Admin";
            System.Net.Mail.SmtpClient mailobj = new System.Net.Mail.SmtpClient();
            System.Net.Mail.MailAddress MailFrom = new System.Net.Mail.MailAddress(MailFromEmail, MailFromName);
            System.Net.Mail.MailAddress MailTo = new System.Net.Mail.MailAddress(MailToEmail, MailToEmail);
            System.Net.Mail.MailMessage mailmsg = new System.Net.Mail.MailMessage(MailFrom, MailTo);
            mailmsg.IsBodyHtml = true;
            mailmsg.Subject = strMessageSubject;
            mailmsg.Body = strMessageBody;
            foreach (string str in multipleToMsg)
            {
                mailmsg.To.Add(str);
            }


            mailobj.Host = strSMTPServerName;
            mailobj.Send(mailmsg);

【问题讨论】:

  • 如何添加多个地址?这似乎是关键代码,但它不见了。
  • 您的邮件 MailToEmail 变量是逗号分隔的字符串吗?
  • MailToEmail 是一个字符串变量,有多个地址,用 ; 分隔
  • using System.Net.Mail 会让你省去很多麻烦。

标签: c# sendmail


【解决方案1】:

您尚未显示添加收件人的具体方式。但是,要添加多个收件人,请添加到“收件人”集合中:

MailMessage message = new MailMessage();
message.To.Add("sillyjoe@stackoverflow.com");

“收件人”是邮件地址的集合。确保将其添加到该集合中,而不是尝试将电子邮件地址全部连接到一个 MailAddress 对象中。

【讨论】:

  • 我相信我在这里也这样做 System.Net.Mail.MailMessage mailmsg = new System.Net.Mail.MailMessage(MailFrom, MailTo);
  • 不完全是,构造函数只允许你传入一个收件人。如果你想给它多个接收者你不能使用构造函数,你必须在之后添加到集合中。
  • 那么我该如何修改我的当前代码 :-( 我没有这样做。当我创建消息对象时,我无法从地址添加
  • 请检查我的编辑部分,我仍然无法收到邮件
  • 发件人可以通过执行 mailmsg.From 来指定。向我们展示电子邮件字符串。
【解决方案2】:

根据MSDN: MailMessage Class,“To”属性是 MailAddresses 的集合

所以你只需要做类似的事情

mailmsg.To.Add(new System.Net.Mail.MailAddress(MailToEmail, MailToEmail)); 
mailmsg.To.Add(new System.Net.Mail.MailAddress(MailToEmail2, MailToEmail2))

或者在foreach循环中

//get email addresses into a collection called emailAdds
foreach (var emailAdd in emailAdds)
{
    mailmsg.To.Add(new System.Net.Mail.MailAddress(emailAdd, emailAdd )); 
}

【讨论】:

  • 由于我的邮件地址来自数据库,我可能不知道有多少要处理的地址。 :-(
  • 是的,您可以在那里使用 for/foreach 循环。我只是用它来展示如何添加多个项目
【解决方案3】:

要指定多个地址,您需要使用 MailAddressCollection 的 To 属性

message.To.Add("one@example.com, one@example.com"));
message.To.Add("two@example.com, two@example.com"));

【讨论】:

    猜你喜欢
    • 2017-03-22
    • 2014-03-04
    • 2021-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-23
    • 2014-10-15
    • 1970-01-01
    相关资源
    最近更新 更多