【问题标题】:Set content type UTF-8 using RDCOMClient使用 RDCOMClient 设置内容类型 UTF-8
【发布时间】:2017-01-22 07:17:21
【问题描述】:

我无法以 UTF-8 格式获取电子邮件正文。我的降价报告没问题,脚本在从RStudio 运行时有效 - 即正文为 UTF-8。我的问题是,当我从命令行运行脚本时,我的电子邮件是使用 windows-1252 编码的,我并不真正想要。

如何设置我的代码以将我的电子邮件标头指定为内容类型为 UTF-8? InternetCodepage 至少不起作用

R 代码如下:

## Bodytext
bodyMail <- paste(__My UTF-8 message goes here__, sep  = "")

# init com api
OutApp <- COMCreate("Outlook.Application")

# Create email
outMail = OutApp$CreateItem(0)

# Params 
outMail[["InternetCodePage"]] = "65001"
outMail[["To"]] = __your_outlook_email___
outMail[["subject"]] = "Subject_text"
outMail[["BodyFormat"]] = "2"
outMail[["HTMLBody"]] = bodyMail
outMail[["Attachments"]]$Add(__path_to_html_report__)

## send it                     
outMail$Send()

【问题讨论】:

    标签: r email utf-8 outlook rdcomclient


    【解决方案1】:

    Outlook(以及所有其他 IDispatch 友好的 COM 库)中的所有字符串属性都是 UTF-16。您有责任确保传递正确的数据。

    附带说明,对正常 ASCII 范围之外的所有字符进行 HTML 编码是个好主意。这样代码页就不再重要了。

    【讨论】:

    • 我不太明白,我要传递的文本是正确的数据。我想要做的是更改我在上面创建的电子邮件的 html 标头中的编码。目前它卡在 Windows 1252 上。我对我的 ö:s 和 ä:s 进行了 html 编码,这是一种权宜之计,但对于未来的维护来说并不是最佳的。 R 做了它可以明智地编码的事情,我需要知道要告诉 Outlook 什么以及如何告诉。
    • 我猜问题不在于上面的代码,因为只要我坚持使用 R,它就可以正常工作。当我涉及 cmd 时,编码丢失/转换。在这种情况下,可以不将 ä 和 ö 写成非人类可读的符号,因为很少。但是将来可能需要编写更长的正文,一个不错的功能是让它们从头开始可读。
    • HTML 编码所有扩展字符是最佳解决方案,这样您就不会依赖任何东西。当它转换为 UTF-16 时,R 怎么知道你的字符串的编码是什么?如果您不想要任何令人讨厌的惊喜,那么您有责任进行此类转换。
    • 嗯,我明白了。它使文本有点难以理解。在我的脚本中也有最终形式的文本会很好。但它至少解决了问题,所以我会回答。 R(或者更确切地说是 RStudio)知道,因为我告诉 R 它是什么编码(如果我理解正确的话),这在调度脚本时不起作用。
    猜你喜欢
    • 2013-12-26
    • 2020-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-09
    • 2017-09-01
    • 2018-07-24
    • 1970-01-01
    相关资源
    最近更新 更多