为什么使用 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)
我有以下代码:
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)