как вставить изображение в шаблон электронной почты - PullRequest
5 голосов
/ 13 июля 2010

Я пытаюсь использовать восстановление пароля ASP.NET.

Все работает нормально, однако я использую шаблон электронной почты. В этом письме я пытаюсь вставить изображение следующим образом:

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

3 голосов
/ 21 июля 2010

Для электронной почты вы не должны указывать относительный путь, например "/Images/blabla-logo.png", который работает только для внутренних страниц сайта, вместо этого вы должны указать полный путь, например

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

Я предлагаю вам не включать изображение, используя путь, вместо этого попробуйте встроить изображение в свою электронную почту.Вы можете добиться этого, преобразовав ваши изображения в строку base64 и указав в качестве источника изображения строку base64.

0 голосов
/ 22 июля 2010

Вы пробовали использовать AlternateView?

Один из примеров - здесь .

0 голосов
/ 13 июля 2010

попробуйте добавить тильду "~", id и runat = "server". Тильда изменяется только на корневой путь, когда применяется runat = "server". В противном случае серверный код не знает об элементе управления и не анализирует его и не применяет вставку пути

 <img alt="blabla" src="~/Images/blabla-logo.png" 
 align="middle" id="img" runat="server"/>
0 голосов
/ 13 июля 2010

Вы можете использовать событие 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"));
}

Это должно сделать это.

...