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;您知道还有其他电子邮件客户端,对吧?;-))

不管怎样,我会考虑两件事:

  • 给定高度/宽度数据的真空,HTML渲染器可以决定只渲染一些默认大小。尝试将实际高度和宽度添加到IMG标签:

  • <>这只是一个标志(和一个小文件),所以你应该考虑把它嵌入到你的消息中(现代MUAs真的不喜欢默认地自动检索远程资源,并给用户一个“你想从Foo.com下载东西吗?”-键入消息——因此您的许多用户要么必须将您列入白名单,要么根本看不到您的徽标)。请看下面的答案:


    由于您只需将文件一次性编码为base64并将其复制到HTML源代码中,因此不会太痛苦(而且它将通过比外部链接更多的收件人进行查看)。

    它可能因MUA而异(我认为您正在查看Outlook;您知道还有其他电子邮件客户端,对不对?;-))

    不管怎样,我会考虑两件事:

  • 给定高度/宽度数据的真空,HTML渲染器可以决定只渲染一些默认大小。尝试将实际高度和宽度添加到IMG标签:

  • <>这只是一个标志(和一个小文件),所以你应该考虑把它嵌入到你的消息中(现代MUAs真的不喜欢默认地自动检索远程资源,并给用户一个“你想从Foo.com下载东西吗?”-键入消息——因此您的许多用户要么必须将您列入白名单,要么根本看不到您的徽标)。请看下面的答案:


    由于您只需将文件一次性编码为base64并将其复制到HTML源代码中,因此不会太痛苦(而且它将通过比外部链接更多的收件人进行查看)。

    请查看我的更新。请查看我的更新。您是否有可能获得呈现的消息并将其放入粘贴箱或类似容器中?我没有看到任何明显的错误,我很想看看web浏览器和其他MUA是如何呈现的。我从来没有听说过这种技术在任何地方失败,但Outlook对于MUA来说总是有点离群……没有任何信息;它只是简单地显示“我不能从你试图拍进去的图像中做出正面或反面”图标,而不是漂亮的图像。对不起,我有点不清楚。如果您的MUA有一个“查看源代码”选项,请使用它来获取代码呈现的底层消息,并粘贴该消息。它将有标题和所有的爵士乐。或者,如果你觉得舒服的话,就给我发个测试短信给bj.at。wjblack.dot。谢谢,但我在Outlook中看不到“查看源代码”选项(我假设它是我的“MUA”)。当我试图将其发送给您时,我得到了“无法发送此项目”的引述:在消息功能区上,选择“操作”“其他操作”“查看源代码”我猜您的代码呈现的HTML中的某些内容是不可靠的。一个示例将极大地帮助您诊断。您是否有可能获得一条呈现的消息并将其放入粘贴箱或类似容器中?我没有看到任何明显的错误,我很想看看web浏览器和其他MUA是如何呈现的。我从来没有听说过这种技术在任何地方失败,但Outlook在MUA方面总是有点离群…我在这里