5

我正在尝试使用 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

4 回答 4

3

对于电子邮件,您不应该给出像“/Images/blabla-logo.png”这样的相对路径,它只适用于内部网站页面,而不是这个,您应该给出完整的路径,例如

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

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

于 2010-07-21T05:30:28.623 回答
0

您是否尝试过使用 AlternateView?

一个例子是here

于 2010-07-22T13:52:48.693 回答
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>

您的 PasswordRecovery 标记应如下所示:

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

那应该这样做。

于 2010-07-13T08:25:09.833 回答
0

尝试添加波浪号“~”、id 和 runat="server"。波浪号仅在应用 runat="server" 时更改为根路径。否则,服务器端代码不知道该控件并且不解析它并应用路径插入

 <img alt="blabla" src="~/Images/blabla-logo.png" 
 align="middle" id="img" runat="server"/>
于 2010-07-13T08:39:40.173 回答