2016-09-14 3 views
0

メールの本文をUTF-8で取得できません。私のマークダウンレポートはOKで、RStudio(つまり、本文がUTF-8である)から実行するとスクリプトが動作します。私の問題は、私がコマンドラインからスクリプトを実行すると、私の電子メールメッセージは、私が実際には望まないwindows-1252を使ってエンコードされていることです。RDCOMClientを使用してコンテンツタイプUTF-8を設定する

コンテンツタイプがUTF-8のメールヘッダーを指定するコードを設定するにはどうすればよいですか?

## 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() 

答えて

1

Outlookのすべての文字列プロパティ(および他のすべてのIDispatchフレンドリーCOMライブラリ)はUTF-16です:InternetCodepageは、以下の少なくとも

R-コードは動作しません。適切なデータを確実に渡すことは、あなたの責任です。

通常のASCII範囲外のすべての文字をHTMLエンコードすることをお勧めします。この方法では、コードページはまったく重要ではありません。

+0

私は本当に理解していません、私が渡したいテキストは正しいデータです。私ができることをしたいのは、私が上記で作成した電子メールのhtmlヘッダーのエンコーディングを変更することです。現時点では、ウィンドウ1252で立ち往生しています。 私はö:sとä:sのhtmlエンコードを行いましたが、将来の保守には最適ではありません。 Rはそれが賢明に符号化することができます、それは私が見通しとどのように伝えるべきかを知る必要があります。 – ErrantBard

+0

問題は上記のコードではないと思います。私がRに固執している限り、問題なく動作しますから、エンコーディングが失われた/変更されたというcmdが含まれているときです。 äとöを人間が読めない記号で書くのは大したことがないので、この場合は大丈夫かもしれません。しかし、将来、より長いボディテキストを書く必要があるかもしれません。素敵な機能は、それらを人間が読めるようにすることです。 – ErrantBard

+0

すべての拡張文字をHTMLエンコードするのが最適な解決方法です。この方法では何も依存しません。そして、RはUTF-16に変換するときにあなたの文字列のエンコードが何であるかを知ることができますか?あなたが厄介な驚きを望まないなら、そのような変換はあなたの責任です。 –

関連する問題