c# - 邮件消息的“收件人”、“抄送”、“密件抄送”允许为 null (system.net.mail.mailmessage)

标签 c# smtp mailmessage

我正在使用 System.Net.Mail.MailMessage 捕获并通过与电子邮件相关的信息传递它。

我收到“值不能为空”异常。

我的要求是“收件人”、“抄送”、“密件抄送”中的任何一个都可以为空,但至少其中一个字段应该包含电子邮件(“收件人”、“抄送”或“密件抄送”)。

这是我的代码:

public object InsertMailSendQueue([FromBody] EmailReport mailMsg ) 
        {            

            mailMessage.To.Add(mailMsg.To);
            mailMessage.CC.Add(mailMsg.Cc);
            mailMessage.Bcc.Add(mailMsg.Bcc);

            mailMessage.From = new System.Net.Mail.MailAddress(mailMsg.From);
            mailMessage.Subject = mailMsg.Subject;
            mailMessage.Body = mailMsg.Body;

            var confirmation = EmailService.InsertMailSendQueue(mailMsg.AgentId, mailMsg.Notes, null, mailMessage, true);
            return confirmation;

        }    

最佳答案

正如汉斯在他的评论中推断的那样,类似于

bool send = false;

if (!String.IsNullOrEmpty(mailMsg.To))
{
     mailMessage.CC.Add(mailMsg.To);
     send = true;
}
if (!String.IsNullOrEmpty(mailMsg.Cc))
{
     mailMessage.CC.Add(mailMsg.Cc);
     send = true;
}
if (!String.IsNullOrEmpty(mailMsg.Bcc))
{
     mailMessage.CC.Add(mailMsg.Bcc);
     send = true;
}
if (!send)
{
     // what to do if none are set...
}

等等。应该完成这项工作。

关于c# - 邮件消息的“收件人”、“抄送”、“密件抄送”允许为 null (system.net.mail.mailmessage),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22974763/

相关文章:

c# - 你如何使用 MySql 的 IN 子句

c# - 什么时候以及为什么我应该使用 ClassName : this(null)?

c# - 通过 smtp 匿名发送电子邮件

c# - 在 C# 中搜索字符串中的部分子字符串

javascript - 如何将变量从 webview Javascsript 传递到 Xamarin Forms 代码?

c++ - 通过 boost 和 c++ 进行 smtp 身份验证

php - Yii2 : Connection could not be established with host smtp. gmail.com [Connection refused #111] 在 godaddy 主机中

.net - 在 Web.Config 中存储来自电子邮件友好显示名称的 Smtp

c# - 在 .NET 中序列化 MailMessage 对象的优雅方式

c# - 如何获取电子邮件的 "Date"?