【问题标题】:Why is the variable empty when using MailMessage为什么使用MailMessage时变量为空
【发布时间】:2015-09-05 13:43:11
【问题描述】:

我有以下代码:

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>

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

【问题讨论】:

  • 不应该是:task";所以没有单引号......

标签: c# mailmessage


【解决方案1】:

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

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,因为它减少了各种报价的开始/停止,并使此类问题易于发现:

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

【讨论】:

    【解决方案2】:

    我认为 ' 应该删除:

    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>";
    

    否则链接呈现如下:

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

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        【解决方案4】:

        为此尝试字符串格式:

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

        【讨论】:

        • 请注意,ID='{0} 中还有一个额外的 '
        • 谢谢詹姆斯,刚刚修好。它
        • 很好,但现在你在ID={0} 之后缺少一个:)
        猜你喜欢
        • 2021-03-13
        • 1970-01-01
        • 2012-12-23
        • 1970-01-01
        • 1970-01-01
        • 2018-01-16
        • 2015-12-02
        相关资源
        最近更新 更多