加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 在ASP.NET中使用HTTP处理程序生成要在电子邮件中显示的图

发布时间:2020-12-15 04:33:45 所属栏目:百科 来源:网络整理
导读:我正在生成条形码图像作为来自HTTP处理程序的响应,如下所示: public void ProcessRequest(HttpContext context){ context.Response.Clear(); context.Response.ContentType = "image/Jpeg"; MemoryStream ms = new MemoryStream(); Bitmap objBitmap = Gene
我正在生成条形码图像作为来自HTTP处理程序的响应,如下所示:
public void ProcessRequest(HttpContext context)
{
    context.Response.Clear();
    context.Response.ContentType = "image/Jpeg";
    MemoryStream ms = new MemoryStream();
    Bitmap objBitmap = GenerateBarcode(context.Request.Params["Code"]);
    objBitmap.Save(ms,ImageFormat.Jpeg);
    context.Response.BinaryWrite(ms.GetBuffer());
}

我去http://www.MyWebsite.com/MyProject/BarCode.aspx?code=12345678,它很棒.同样地,我坚持< img alt =“”src =“http://www.MyWebsite.com/MyProject/BarCode.aspx?code=12345678”>在我的网页上它很棒.但是我在HTML电子邮件中粘贴了相同的图像标记并且没有显示(至少在MS Outlook 2007中没有显示;我还没有测试过其他电子邮件客户端.)

我猜这在某种程度上与我使用HTTP处理程序这一事实有关,因为电子邮件中的其他静态图像显示正常.如何修复此图像以便显示图像? (我不能只使用静态图像,因为代码是在发送电子邮件时确定的.)

更新:

事实证明我没有注意到关键的细节.图像不仅没有出现;相反,图像src属性被替换为“http://portal.mxlogic.com/images/transparent.gif”.我已经确定使用.aspx或.ashx扩展名触发了这个替换(或者可能是任何扩展名,除了那些预期用于.gif或.jpg之类的图像),并且包含URL中的查询字符串也触发了这个,即使它是标准图像扩展.我想这是一些过于热心的安全功能.所以包括像BarCode.aspx?code = 12345678这样的图像是行不通的.

在我看来,我可以做类似的事情< img alt =“”src =“http://www.MyWebsite.com/MyProject/12345678/BarCode.jpg”>然后为名为BarCode.jpg的所有文件创建一个处理程序.这里12345678 /不是一个实际的路径,但是因为我将请求重定向到处理程序,所以我可以从URL中的伪路径中删除代码值.但是,我可能不得不改变一些IIS设置来处理ASP.NET处理的.jpg文件的请求,并且我还想确保除了我的BarCode.jpg之外的其他JPEG正常加载.

老实说,我不确定这是否值得麻烦.

解决方法

Microsoft Office Outlook 2007使用Microsoft Office Word 2007中的HTML解析和呈现引擎来显示HTML邮件正文. more

这留下了一些毛茸茸的点

Word 2007所施加的限制在article中有详细描述,但这里有一些亮点:

>不支持背景图片
(HTML或CSS)
>不支持表格
>不支持Flash或其他
插件
>不支持CSS浮动
>不支持用子弹替换子弹
无序列表中的图像
>不支持CSS定位
>不支持
动画GIF

我认为你最好的选择是使用LinkedResource类嵌入图像,类似于

//create the mail message
MailMessage mail = new MailMessage();

//set the addresses
mail.From = new MailAddress("...");
mail.To.Add("...");

//set the content
mail.Subject = "Test mail";

AlternateView htmlView = AlternateView.CreateAlternateViewFromString("Here is an embedded image." ",null,"text/html");

//create the LinkedResource (embedded image)
LinkedResource logo = new LinkedResource(GenerateBarcode(Code)));
logo.ContentId = "logo";
htmlView.LinkedResources.Add(logo);

mail.AlternateViews.Add(htmlView);

//send the message
SmtpClient smtp = new SmtpClient("127.0.0.1"); 
smtp.Send(mail);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读