如何将图像插入电子邮件模板

时间:2010-07-13 07:53:06

标签: asp.net email templates password-recovery

我正在尝试使用ASP.NET的PasswordRecovery。

一切正常,但我使用的是电子邮件模板。在这封电子邮件中,我正在尝试插入如下图像:

<html xmlns="http://www.w3.org/1999/xhtml">

<body>

<img alt="blabla" src="/Images/blabla-logo.png" align="middle"/><br/><br/>
bla bla:<%Password%><br /><br />
</body>

</html>

正如我所说,电子邮件正在发送,但图像未插入。我试过:src =“〜/ Images / blabla-logo.png”,但没有成功。

想点什么吗?

非常感谢, 阿萨弗。

4 个答案:

答案 0 :(得分:3)

对于电子邮件,你不应该给像“/Images/blabla-logo.png”这样的相对路径作为内部网站页面的唯一作品,而不是你应该给出完整的路径

http://youserver/youapp/Images/blabla-logo.png

我建议您不要使用路径包含图片,而不是尝试在您的电子邮件中嵌入图片。您可以通过将图像转换为base64字符串并将base64字符串设置为图像源来实现此目的。

答案 1 :(得分:0)

您可以使用OnSendingMail事件修改电子邮件。我们假设您的模板如下所示:

<html xmlns="http://www.w3.org/1999/xhtml">
  <body>
    <img alt="blabla" src="{0}" align="middle"/><br/><br/> 
    bla bla:<%Password%><br /><br /> 
  </body>
</html>

您的密码恢复标记应如下所示:

<asp:PasswordRecovery ID="prPasswordRecovery" runat="server" OnSendingMail="prPasswordRecovery_SendingMail">
  <MailDefinition BodyFileName="~/passwordRecoveryEmailTemplate.txt" IsBodyHtml="true" Priority="High" Subject="bla bla"/>
</asp:PasswordRecovery>

最后要做的是在代码后面编写prPasswordRecovery_SendingMail方法:

protected void prPasswordRecovery_SendingMail(object sender, MailMessageEventArgs e)
{
  e.Message.Body = String.Format(e.Message.Body, ResolveClientUrl("~/Images/blabla-logo.png"));
}

应该这样做。

答案 2 :(得分:0)

尝试添加代字号“〜”,id和runat =“server”。当应用runat =“server”时,波形符只会更改为根路径。否则,服务器端代码不知道控件,也不解析它并应用路径插入

 <img alt="blabla" src="~/Images/blabla-logo.png" 
 align="middle" id="img" runat="server"/>

答案 3 :(得分:0)

您是否尝试过使用AlternateView?

一个例子是here