Outlook 如何防止通过html将引用的PNG添加到电子邮件时被压扁?
我有以下代码发送一封电子邮件,其中引用了互联网上的图像:Outlook 如何防止通过html将引用的PNG添加到电子邮件时被压扁?,outlook,size,png,image-resizing,mailitem,Outlook,Size,Png,Image Resizing,Mailitem,我有以下代码发送一封电子邮件,其中引用了互联网上的图像: private void EmailSheet(PricePushFile ppf) { string emailAddr = GetEmailAddressForUnit(ppf.SourceFileName); Microsoft.Office.Interop.Outlook.Application app = new Microsoft.Office.Interop.Outlook.Application();
private void EmailSheet(PricePushFile ppf)
{
string emailAddr = GetEmailAddressForUnit(ppf.SourceFileName);
Microsoft.Office.Interop.Outlook.Application app = new Microsoft.Office.Interop.Outlook.Application();
MailItem mailItem = app.CreateItem(OlItemType.olMailItem);
mailItem.To = emailAddr;
string customer = GetCustomerName(ppf.SourceFileName);
mailItem.Subject = string.Format("PRO*ACT Price Push – {0}", customer);
List<String> htmlBody = new List<string>
{
"<html><body><img src=\"http://www.proactusa.com/wp-content/themes/proact/images/pa_logo_notag.png\" alt=\"Pro*Act logo\" ><p>Your PRO*ACT Price Push report is attached.</p>",
"</body></html>"
};
mailItem.HTMLBody = string.Join(Environment.NewLine, htmlBody.ToArray());
mailItem.Attachments.Add(ppf.SourceFileName);
mailItem.Importance = OlImportance.olImportanceNormal;
mailItem.Display(false);
mailItem.Send(); // This sends the email without a dialog displaying first
}
private void EmailSheet(PricePushFile ppf)
{
字符串emailAddr=GetEmailAddressForUnit(ppf.SourceFileName);
Microsoft.Office.Interop.Outlook.Application app=新的Microsoft.Office.Interop.Outlook.Application();
MailItem MailItem=app.CreateItem(OlItemType.olMailItem);
mailItem.To=emailAddr;
字符串customer=GetCustomerName(ppf.SourceFileName);
mailItem.Subject=string.Format(“PRO*ACT价格推送{0}”,客户);
List htmlBody=新列表
{
“随附您的PRO*ACT价格推送报告。”,
""
};
mailItem.HTMLBody=string.Join(Environment.NewLine,HTMLBody.ToArray());
mailItem.Attachments.Add(ppf.SourceFileName);
mailItem.Importance=OlImportance.olImportanceNormal;
mailItem.Display(false);
mailItem.Send();//此选项发送电子邮件时不会首先显示对话框
}
引用的png()相当大,但当发送电子邮件时,它会被压缩到可怜的地步:
如何确保图像在电子邮件中显示为全尺寸,而不是压扁
更新
添加显式大小很好,但首选的“Base64”路由不起作用;我试过这个:
private static String PROACT_LOGO_BINARY =
"iVBORw0KGgoAAAAN. . .2ytlR8BYrxuzvr/AM6ZTOQUGb1+AAAAAElFTkSuQmCC";
. . .
string proactLogoAsBinary = PROACT_LOGO_BINARY;
List<String> htmlBody = new List<string>
{
String.Format("<html><body><img src=\"data:image/png;base64,{0}\" alt=\"Pro*Act logo\" ><p>Your PRO*ACT reports are attached.</p></body></html>", proactLogoAsBinary)
};
mailItem.HTMLBody = string.Join(Environment.NewLine, htmlBody.ToArray());
私有静态字符串PROACT\u LOGO\u BINARY=
“Ivborw0kgoaaan…2ytlR8BYrxuzvr/AM6ZTOQUGb1+AAAA ELFTKSUQMCC”;
. . .
字符串proactLogoAsBinary=PROACT\u LOGO\u BINARY;
List htmlBody=新列表
{
String.Format(“您的PRO*ACT报告已附加。”,proactLogoAsBinary)
};
mailItem.HTMLBody=string.Join(Environment.NewLine,HTMLBody.ToArray());
…我得到了一张“坏图像”替换图像(小红前)
注意:我通过以下方式获得二进制文件:您需要显式设置图像尺寸,以便电子邮件客户端知道您希望图像显示多大 在您的例子中,图像是199 x 130,因此添加宽度=199,高度=130
http://www.proactusa.com/wp-content/themes/proact/images/pa_logo_notag.png\“alt=\“Pro*Act logo\”width=\“199\”height=\“130\”>您需要明确设置图像尺寸,以便电子邮件客户端知道您希望图像显示多大 在您的例子中,图像是199 x 130,因此添加宽度=199,高度=130
http://www.proactusa.com/wp-content/themes/proact/images/pa_logo_notag.png\“alt=\“Pro*Act logo\”width=\“199\”height=\“130\”>它可能会因MUA而异(我认为您正在查看Outlook;您知道还有其他电子邮件客户端,对吧?;-)) 不管怎样,我会考虑两件事:
由于您只需将文件一次性编码为base64并将其复制到HTML源代码中,因此不会太痛苦(而且它将通过比外部链接更多的收件人进行查看)。它可能因MUA而异(我认为您正在查看Outlook;您知道还有其他电子邮件客户端,对不对?;-)) 不管怎样,我会考虑两件事:
由于您只需将文件一次性编码为base64并将其复制到HTML源代码中,因此不会太痛苦(而且它将通过比外部链接更多的收件人进行查看)。请查看我的更新。请查看我的更新。您是否有可能获得呈现的消息并将其放入粘贴箱或类似容器中?我没有看到任何明显的错误,我很想看看web浏览器和其他MUA是如何呈现的。我从来没有听说过这种技术在任何地方失败,但Outlook对于MUA来说总是有点离群……没有任何信息;它只是简单地显示“我不能从你试图拍进去的图像中做出正面或反面”图标,而不是漂亮的图像。对不起,我有点不清楚。如果您的MUA有一个“查看源代码”选项,请使用它来获取代码呈现的底层消息,并粘贴该消息。它将有标题和所有的爵士乐。或者,如果你觉得舒服的话,就给我发个测试短信给bj.at。wjblack.dot。谢谢,但我在Outlook中看不到“查看源代码”选项(我假设它是我的“MUA”)。当我试图将其发送给您时,我得到了“无法发送此项目”的引述:在消息功能区上,选择“操作”“其他操作”“查看源代码”我猜您的代码呈现的HTML中的某些内容是不可靠的。一个示例将极大地帮助您诊断。您是否有可能获得一条呈现的消息并将其放入粘贴箱或类似容器中?我没有看到任何明显的错误,我很想看看web浏览器和其他MUA是如何呈现的。我从来没有听说过这种技术在任何地方失败,但Outlook在MUA方面总是有点离群…我在这里