为什么使用 MailMessage 时变量为空

Why is the variable empty when using MailMessage

我有以下代码:

try
{
    MailMessage mmSendEmail = new MailMessage();
    mmSendEmail.To.Add("abc@xyz.com");
    mmSendEmail.From = new MailAddress("abc@xyz.com");
    mmSendEmail.Subject = "Task#: " + s; //'s' is a query string from the URL of the page
    mmSendEmail.Body = "task ID: " + s + ".<br /><br /> <a href='http://mypage.com/page.aspx?ID='" + s +"' title='override'>task</a>";
    mmSendEmail.IsBodyHtml = true;

    SmtpClient scSend = new SmtpClient("mymailserverip");
    scSend.Send(mmSendEmail);
}

我收到来自上述代码的以下电子邮件:

Subject: Task #: 0908090
Body: task ID: 0908090 <a href="http://mypage.com/page.aspx?ID=">task</a>

为什么 link 中没有 ID,却出现在其他地方。

请注意,您的其他属性也丢失了 - 您的引号放错地方了:

mmSendEmail.Body = "task ID: " + s + ".<br /><br /> <a href='http://mypage.com/page.aspx?ID='" + s +"' title='override'>task</a>";
                                                                                            ^

突出显示的引用不应该在那里,它应该只是:

mmSendEmail.Body = "task ID: " + s + ".<br /><br /> <a href='http://mypage.com/page.aspx?ID=" + s +"' title='override'>task</a>";

更好的解决方案是使用 String.Format,因为它减少了 start/stop 的各种引用,并使类似这样的问题易于发现:

mmSendEmail.Body = String.Format("task ID: {0}.<br /><br /> <a href='http://mypage.com/page.aspx?ID={0}' title='override'>task</a>", s);

我认为应该删除 ':

mmSendEmail.Body = "task ID: " + s + ".<br /><br /> <a href='http://mypage.com/page.aspx?ID='" + s +"' title='override'>task</a>";

应该是:

mmSendEmail.Body = "task ID: " + s + ".<br /><br /> <a href='http://mypage.com/page.aspx?ID=" + s +"' title='override'>task</a>";

否则 link 呈现为:

<a href='http://mypage.com/page.aspx?ID='s' title='override'>task</a>

... 这不是有效的 href ;)

我认为查询字符串中 s 周围的单引号结束了您的 href。 所以将其替换为:

mmSendEmail.Body = "task ID: " + s + ".<br /><br /> <a href='http://mypage.com/page.aspx?ID=" + s +"' title='override'>task</a>";

尝试使用字符串格式:

String.Format("task ID: {0}.<br /><br /> <a href='http://mypage.com/page.aspx?ID={0}' title='override'>task</a>",s)