【问题标题】:Replacing url in anchor tag inside email template html running automatically在自动运行的电子邮件模板html中替换锚标记中的url
【发布时间】:2020-06-17 16:35:01
【问题描述】:

我在发送带有模板的电子邮件时遇到问题,该模板包含在发送前动态设置 href 的锚标记。这是我替换占位符的代码。

private string PopulateBody(string userName, string title, string url, string description)
{
    string body = string.Empty;
    using (StreamReader reader = new StreamReader(Server.MapPath("~/EmailTemplate.htm")))
    {
        body = reader.ReadToEnd();
    }
    body = body.Replace("[UserName]", userName);
    body = body.Replace("[Title]", title);
    body = body.Replace("[Url]", url);
    body = body.Replace("[Description]", description);
    return body;
}

HTML 模板

<td style="width:85px;text-align:center;margin:0;padding:0;" width="85" align="center">
   <a href="{{feedback1}}" target="_blank" rel="noopener noreferrer" style="text-decoration:none;">
   <img src="{{Stars}}" alt="1 star" style="max-width:60px" border="0" />
   </a>
</td>
<td style="width:85px;text-align:center;margin:0;padding:0;" width="85" align="center">
   <a href="{{feedback2}}" target="_blank" rel="noopener noreferrer" style="text-decoration:none;">
   <img src="{{Stars}}" alt="2 star" style="max-width:60px" border="0" />
   </a>
</td>
<td style="width:85px;text-align:center;margin:0;padding:0;" width="85" align="center">
   <a href="{{feedback3}}" target="_blank" rel="noopener noreferrer" style="text-decoration:none;">
   <img src="{{Stars}}" alt="3 star" style="max-width:60px" width="60" border="0" />
   </a>
</td>
<td style="width:85px;text-align:center;margin:0;padding:0;" width="85" align="center">
   <a href="{{feedback4}}" target="_blank" rel="noopener noreferrer" style="text-decoration:none;">
   <img src="{{Stars}}" alt="4 star" style="max-width:60px" border="0" />
   </a>
</td>
<td style="width:85px;text-align:center;margin:0;padding:0;" width="85" align="center">
   <a href="{{feedback5}}" target="_blank" rel="noopener noreferrer" style="text-decoration:none;">
   <img src="{{Stars}}" alt="5 star" style="max-width:60px" border="0" />
   </a>
</td>

内容替换代码

var templateDirectoryPath = string.Format("{0}EmailTemplates\\DST\\{1}", root, "survey-email-new.html");
     var feedback = string.Format("{0}", "http://www.example.com");
    var content = new StringBuilder(File.ReadAllText(templateDirectoryPath));        
    content.Replace("{{feedback1}}", feedback + "feedback?token=" + Base64Encode(query + "1"));
                        content.Replace("{{feedback2}}", feedback + "feedback?token=" + Base64Encode(query + "2"));
                        content.Replace("{{feedback3}}", feedback + "feedback?token=" + Base64Encode(query + "3"));
                        content.Replace("{{feedback4}}", feedback + "feedback?token=" + Base64Encode(query + "4"));
                        content.Replace("{{feedback5}}", feedback + "feedback?token=" + Base64Encode(query + "5"))

当有人访问该链接(即更改状态等)时,我在 url 操作方法中放置了一些代码。问题是当自动发送电子邮件时,此链接会触发。我已经登录查看发生了什么,但是一旦收到电子邮件并且它正在调用该操作方法,该网址就会被点击。

需要帮助。

【问题讨论】:

  • Problem is that when an email is sent automatically this link fires - 由于链接无法自动“触发”,我不知道您在说什么。
  • 另外,您没有提到如何从正文“自动访问”包含的 URL - 如果没有用户操作,这似乎是不可能的。解释 EmailTemplate.htm 包含的内容以及该 URL 触发的操作方法。
  • 我已经更新了 html 和内容替换代码。

标签: c# asp.net-mvc asp.net-mvc-5 email-templates


【解决方案1】:

我遇到了类似的问题。

所以最后我只是用 URL 本身替换了锚标记。当 HTML 在电子邮件中呈现时,URL 就像链接一样工作。

而不是 &lt;a href="{{URL}}" target="_blank" rel="noopener noreferrer" style="text-decoration:none;"&gt;

这个可以用

&lt;p&gt;{{URL}} &lt;/p&gt;

【讨论】:

    猜你喜欢
    • 2018-09-23
    • 2012-03-31
    • 1970-01-01
    • 2013-10-26
    • 2014-03-01
    • 2020-09-18
    • 2017-04-03
    • 1970-01-01
    • 2013-01-14
    相关资源
    最近更新 更多