11

我正在尝试让我的 C# 应用程序生成表单电子邮件。我本应该在周五一个小时内完成这件事……但 Outlook 非常不听话。

似乎无论我在 MailItem 的 HTMLBody 中指定字体大小的方式如何,它的大小都略有不同。Font face 总是按指定出现,但大小永远不会正确。

email.HTMLBody = "<p style='font-size:11px;font-family:Calibri;'>girl look at that body</p>";
email.HTMLBody = "<style> body { font-family:'Calibri'; font-size:11px; } </style> <body>girl look at that body</body>";
email.HTMLBody = "<html><header><style> body { font-family:'Calibri'; font-size:11px; } </style></header> <body>girl look at that body</body></html>";
email.HTMLBody = "<span style='font-size:11px;font-family:calibri;'>girl look at that body</span>";

生成大小为 8.5 的字体。

email.HTMLBody = "<html><body><font face='Calibri' size='11px'>girl look at that body</font></body></html>";
email.HTMLBody = "<font face='Calibri' size='11px'>girl look at that body</font>";

生成 12 号字体。

因此,似乎通过 CSS 指定 11px(或 11pt,也尝试过)字体让我得到 8.5px,而通过字体标签让我得到 12px。

我对此做了一些进一步的尝试,基本上,字体标签无论如何都会产生 12pt 字体。所以这是一个死胡同,但我知道字体标签无论如何都被弃用了。CSS 标签会给我不同的尺寸,但很少是我要求的。它总是关闭,而不是一致的数量。

代码中的字体大小 = 电子邮件中的字体大小:

  • 12 = 9
  • 13 = 10
  • 14 = 10.5
  • 15 = 11.5
  • 16 = 12
  • 17 = 13
  • 18 = 13.5
  • 19 = 14.5
  • 20 = 15

在 CSS 中指定 14.5px 给了我我想要的 11px ......但我觉得部署依赖于它的东西感觉不舒服。

这里有什么问题?有什么我忽略在 CSS 中指定的吗?我需要在 MailItem 或 Outlook.Application 的其他地方进行调整?

4

5 回答 5

8

这是因为您使用了 11px 而不是 pt。“px”代表像素,文本的 1 个像素大小并不意味着字体大小为 1 个点。使用 11pt 而不是 11px。

根据此处的讨论:https ://graphicdesign.stackexchange.com/questions/199/point-vs-pixel-what-is-the-difference

像素是单个方形“图片元素”(因此是像素),即图像中的单个点。10x10 的图像由 10 宽 x 10 深的网格中的一组像素组成,总共 100 个像素。

另一方面,“点”(pt)是长度单位,通常用于测量字体的高度,但在技术上可以测量任何长度。在应用中,1pt 正好等于 1/72 英寸;在传统印刷中,从技术上讲,72pt 是 0.996264 英寸,尽管我认为你会因为四舍五入而被原谅!

多少像素 = 1pt 取决于图像的分辨率。如果您的图像是 72ppi(每英寸像素),那么一个点将正好等于一个像素。

于 2012-05-22T13:10:03.450 回答
2

这很旧,但我遇到了与 OP 完全相同的问题,并找到了一个对我有用的解决方案。如下所示格式化 HTML:

.HTMLBody = "<style> body{font-family:Calibri;font-size:11pt;}" & "<HTML><body>Your text goes here"
于 2020-05-05T19:37:17.397 回答
1

在编写使用 Excel 数据制作 Outlook 电子邮件的 VBA 宏时,我遇到了同样的问题。有趣的是,无论我做什么,使用 pt 或 px,都无关紧要:无论我使用哪个值,输出总是跳过字体大小 11。使用 11pt 给了我 8.5 字体大小。使用 12pt 给了我 9。使用 14 给了我 12...

无论如何,当我添加一个小数时,它突然起作用了。所以试试这个: 11.0pt。希望能帮助到你。

于 2013-04-23T09:01:10.887 回答
1

在我看来,电子邮件中的某些设置被设置为从您指定的字体缩小。这可能因不同的用户设置而异。你说它“不是一致的数量”,但我不同意。根据您的数字,所有偶数值都以.75您声明的数量出现,而所有奇数值约为.76xxxx. 因此,就像邮件设置为将您给定的字体大小乘以大致相当于.75em.

是的,您可以通过将目标值乘以粗略来补偿1.33,但您只是为自己这样做吗?换句话说,正如我最初所说,这可能是用户特定的设置(默认情况下可能.75在 Outlook 中,我不知道),在这种情况下,您不能保证所有用户的字体大小。

也许以单位调整字体大小em可能在这里起作用。如果您给出一个1.33em,这可能会让您与您的目标大小保持最一致,并且还会响应用户设置。

在查看自己的 Outlook 版本时,我无法确定专门用于缩放字体的设置。可以设置默认字体大小,并且可能会根据默认大小到请求大小的某些公式进行缩放。

于 2012-05-14T16:45:14.200 回答
-2

尝试这个:<span style="font-size:11pt">

我希望它有所帮助。

于 2016-06-13T08:52:45.797 回答