在自动运行的电子邮件模板html中替换锚标记中的url

时间:2018-02-14 07:38:24

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

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

campaigns = model.get_campaigns_data(self.mysql_db)
yesterday_data = model.get_yesterday_data(self.mysql_db, yesterday)
try:
    for campaign in campaigns:
        missing = filter(lambda c: c["campaign_id"] == str(campaign["campaign_id"]), yesterday_data)
        if not missing:
            pass
        else:
            campaign["yesterday_spend"] = missing[0]["cost"]
            campaign["yesterday_revenue"] = missing[0]["revenue"]

HTML模板

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

内容替换代码

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

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

需要帮助。

1 个答案:

答案 0 :(得分:0)

我有类似的问题。

因此,最后我只用URL本身替换了定位标记。在电子邮件中呈现HTML时,URL就像一个链接一样工作。

代替 <a href="{{URL}}" target="_blank" rel="noopener noreferrer" style="text-decoration:none;">

可以使用

<p>{{URL}} </p>