【问题标题】:Create HTML img tag in ASP.NET code-behind using C#使用 C# 在 ASP.NET 代码隐藏中创建 HTML img 标记
【发布时间】:2014-11-18 21:25:47
【问题描述】:

我正在尝试在代码隐藏中创建一个 img 标记并将其通过电子邮件发送(在电子邮件正文中,而不是作为附件)。

body += "<p><img src='" + imageUrl.Remove(0,2) + "' alt='Product Image' width='250px' height='250px' runat='server' /></p>";

注意:我已将body 声明为字符串,并且正在向其中添加其他 HTML 控件(例如 p、h1、li 等)。

imageUrl 变量返回 "~/Images/bag/name_of_image.jpg" 因此我要删除前两个字符 ~/。

它似乎正在创建图像,但它没有显示在电子邮件正文中。

【问题讨论】:

  • 要链接电子邮件中的任何内容,您需要使用绝对路径,包括协议 (http(s),...),当然还有您的域名。电子邮件客户端如何知道您的相对路径实际上与哪个 URL 相关?
  • 仅供参考,您不能像这样使用runat='server'“创建”元素。
  • 创建是什么意思?是的,它可以创建,但不起作用...

标签: c# html asp.net image


【解决方案1】:

我建议在您的电子邮件正文中使用嵌入式图像。看看下面的网址:

  1. http://www.emailarchitect.net/easendmail/kb/csharp.aspx?cat=8
  2. Send inline image in email

【讨论】:

    【解决方案2】:

    您需要在电子邮件中包含图像的绝对路径。

    嵌入在电子邮件中的图像应该是这样的:

    <img src="http://www.example.com/image_link.jpg" alt="Some Image" />
    

    但是,您将在您的电子邮件中嵌入:

    <img src="image_link.jpg" alt="Some Image" />
    

    由于用户拥有的电子邮件应用程序没有image_link.jpg 的副本,因此无法显示。

    因此,在您的过程中,您可能需要将图像上传到外部可访问的网络服务器(如果是在您的网络之外访问)或至少是内部可访问的网络服务器。

    【讨论】:

    • 非常感谢瑞恩。当我使用像http://cdn-careers.sstatic.net/careers/Img/logos/careers-logo-gray.png 这样的绝对路径时它可以工作。但是我想知道为什么当我使用像 C:\inetpub\wwwroot\Websitename\Images\image_name.jpg 这样的内部绝对路径时我不会工作
    • 这是因为您将其发送给的用户无权访问您的 C:/ 驱动器(这是正确的) - 但是网络服务器将提供该访问权限。如果您发现答案有用,请将其标记为已回答:)
    • 请记住,当电子邮件显示在用户系统上时,它会尝试查找:C:\inetpub\wwwroot\Websitename\Images\image_name.jpg - 这不是正确的文件在他们的系统上 - 即使它确实存在(即在您的机器上进行本地测试),电子邮件客户端也可能不会被允许访问 C:/ 驱动器。
    【解决方案3】:

    请按以下方式进行。只需从 SRC 中删除“~”即可。

     string mainUrl = "http://testURL.com/"; //its just example, you can put this in web config as well and than retrive it
    
     body += "<p><img src='" + mainUrl + imageUrl.Remove(0,1) + "' alt='Product Image' width='250px' height='250px' runat='server' /></p>";
    

    希望对你有帮助,

    谢谢

    【讨论】:

    • 您需要提供图片的完整网址
    【解决方案4】:

    如果您将带有本地路径的图像嵌入到电子邮件中,则无法从远程接收者访问该图像。

    这是基本的;用户使用任何电子邮件客户端程序(outlook、thunderbird 或 webmail 等)打开您的电子邮件,电子邮件客户端程序使用其路径搜索此图像。如果路径是本地路径,电子邮件客户端程序如何访问此图像?

    您必须提供一个通用的可访问路径,电子邮件客户端可以访问您的图像文件并加载然后将其显示给用户。

    所以把你的图片上传到服务器,然后使用服务器地址指定图片路径。

    一个例子:

    string domainName = @"http://lindaLinda.com/images/";
    string imageFileName = "myFirstEmailImg.jpg";
    body += @"<p><img src='" + domainName + imageFileName +"' alt='Product Image' width='250px' height='250px' runat='server' /></p>";
    

    它给出以下输出:

    <p><img src='http://lindaLinda.com/images/myFirstEmailImg.jpg' alt='Product Image' width='250px' height='250px' runat='server' /></p>
    

    【讨论】:

      猜你喜欢
      • 2015-06-16
      • 1970-01-01
      • 1970-01-01
      • 2012-07-06
      • 1970-01-01
      • 1970-01-01
      • 2010-10-03
      • 2010-12-02
      • 1970-01-01
      相关资源
      最近更新 更多