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」のような相対パスを指定しないでください。内部Webサイトページでのみ機能します。代わりに、次のような完全なパスを指定する必要があります。

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

メールに画像を埋め込んでみる代わりに、パスを使用して画像を含めないことをお勧めします。これを実現するには、画像をbase64文字列に変換し、base64文字列を画像のソースとして設定します。

于 2010-07-21T05:30:28.623 に答える
0

AlternativeViewを使用してみましたか?

一例はここにあります。

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