2010-07-13 45 views
5

Tôi đang cố gắng sử dụng PasswordRecovery của ASP.NET.cách chèn hình ảnh vào mẫu email

Mọi thứ hoạt động tốt, tuy nhiên tôi đang sử dụng mẫu Email. Trong email này, tôi đang cố gắng chèn hình ảnh như sau:

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

Như tôi đã nói, email đang được gửi đi nhưng không chèn hình ảnh. Tôi đã thử: src = "~/Images/blabla-logo.png", nhưng không thành công.

Ý tưởng của bất kỳ ai?

Cảm ơn rất nhiều, Assaf.

Trả lời

0

Bạn có thể sử dụng sự kiện OnSendingMail để sửa đổi thông báo email của mình. Giả mẫu của bạn trông như thế này:

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

Bạn passwordrecovery đánh dấu sẽ trông như thế này:

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

Điều cuối cùng cần làm là viết phương pháp prPasswordRecovery_SendingMail trong mã đằng sau:

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

Nên làm vậy.

+0

Cảm ơn bạn rất nhiều. Tôi không thấy bất kỳ lý do tại sao điều này không nên làm việc. Tôi phải làm điều gì đó sai trái nhưng tôi đã thử điều này và nó không hoạt động. Tôi vẫn nhận được email mà không có hình ảnh. Nhân tiện, tôi đã gửi mẫu email đuôi mở rộng .htm và VS đánh dấu phần src = "{0}" và cho tôi biết rằng tệp không được tìm thấy. Tôi có nên sử dụng tệp văn bản không? nó rất quan trọng? Cảm ơn cả hai vì sự giúp đỡ, bạn thực sự là tốt nhất. – Assaf

0

thử thêm dấu ngã "~", id và runat = "server". Dấu ngã chỉ được thay đổi thành đường dẫn gốc khi runat = "server" được áp dụng. Nếu không, các mã serverside không có kiến ​​thức về kiểm soát và không phân tích nó và áp dụng sự chèn đường

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

Cảm ơn bạn rất nhiều vì sự giúp đỡ của bạn. Tất cả điều này có vẻ rất hợp lý. Tuy nhiên, tôi đã thử nó nhưng nó không hoạt động. Tôi đã cố gắng đấu tranh với nó một chút nhưng không thành công. Cảm ơn rất nhiều. – Assaf

+0

Thử mở trang trong Firefox và sau đó mở plugin firebug để xem đường dẫn đang được hiển thị lại. Hình ảnh có trong thư mục Hình ảnh trong thư mục gốc của trang web của bạn không? Ngoài ra, hãy thử xóa dấu gạch ngang khỏi tên hình ảnh và khỏi liên kết. Có nhiều loại dấu gạch ngang khác nhau và chúng có thể không khớp với –

3

Đối với email mà bạn không nên bỏ đường dẫn tương đối như "/Images/blabla-logo.png" chỉ làm việc cho các trang web nội bộ, thay vì điều này, bạn nên cung cấp đường dẫn đầy đủ như

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

tôi sẽ đề nghị bạn không bao gồm hình ảnh bằng cách sử dụng con đường thay vì điều này thử nhúng hình ảnh trong email của bạn.

+0

Đó là những gì tôi làm. Luôn tham khảo hình ảnh "trực tiếp" trên máy chủ "trực tiếp" có đường dẫn đầy đủ. –

0

Bạn đã thử sử dụng AlternateView chưa?

Một ví dụ là here.

+0

Nếu bạn muốn có ví dụ C# thì bạn có thể xem liên kết sau. http://www.codeproject.com/KB/aspnet/inkrajesh.aspx –

Các vấn đề liên quan