Outlook の相互運用性、メールの書式設定
-
21-08-2019 - |
質問
C# で書かれたアプリケーションがあり、Outlook Interop を使用して、ユーザーが手動で送信する前に編集できる詳細が事前に入力された新しいメール メッセージを開きます。
var newMail = (Outlook.MailItem)outlookApplication.CreateItem(
Outlook.OlItemType.olMailItem);
newMail.To = "example@exam.ple";
newMail.Subject = "Example";
newMail.BodyFormat = Outlook.OlBodyFormat.olFormatHTML;
newMail.HTMLBody = "<p>Dear Example,</p><p>Example example.</p>";
newMail.Display(false);
同じユーザーが新しいメッセージを手動で作成すると、フォントは次のように設定されます。 カリブリ またはユーザーがデフォルトとして設定したフォント。問題は、自動メールの本文が次のように表示されることです。 タイムズ ニュー ローマン 望まないフォントです。
配信された電子メールの 1 つのソースを表示すると、Outlook が電子メール ソースのフォントを明示的に設定していることがわかります。
// Automated
p.MsoNormal, li.MsoNormal, div.MsoNormal
{
margin:0cm;
margin-bottom:.0001pt;
font-size:12.0pt;
font-family:"Times New Roman";
}
// Manual
p.MsoNormal, li.MsoNormal, div.MsoNormal
{
margin:0cm;
margin-bottom:.0001pt;
font-size:11.0pt;
font-family:"Calibri","sans-serif";
}
形式が異なるのはなぜですか? ユーザーのデフォルト設定を使用する自動電子メールを取得するにはどうすればよいですか?Outlook 2003 と 2007 が混在してインストールされているため、相互運用アセンブリのバージョン 11 を使用しています。
解決
これはHTML形式のメールですので、あなたが簡単にあなたが実際のHTML本体に好きなスタイリング埋め込むことができます。私はそれはあなたがOutlook GUIからのメッセージを作成するときにOutlookがやっていることである疑います。
私は実際にユーザー設定を取得する方法がわかりません。私は、OutlookのAPI(それは奇妙な獣である)を介して見えたが、デフォルトのメッセージ・プロパティへのアクセスを提供することは何も表示されませんでした。
他のヒント
まったくイライラします。
この問題を Google で検索すると、単純にこうしろという答えが無数にあるのでは役に立ちません。 スタイル CSSのテキスト。はい、電子メール全体を生成していて、テキスト全体のスタイルを設定/制御できる場合は、問題ありません。しかし、あなたの場合(そして私たちの場合)、その目的は、最初のテキストで電子メールを起動し、エンドユーザーが独自のテキストを追加することです。これは彼の追加テキストであり、タイムズ ニュー ローマンに確実に掲載されています。
私たちが見つけた解決策は、別の方向から問題にアプローチすることです。それは、Outlook の基本/基礎となるデフォルトを、Times New Roman ではなく選択したフォントに修正することです。
それは次の方法で実行できます。
- Word を開きます (Outlook ではありません)。
- [オプション] -> [詳細設定] -> [Web オプション] に移動します。
- 「フォント」タブでデフォルトのフォントを変更する
ビデオはこちら:
http://www.youtube.com/watch?v=IC2RvfoMFz8
これが役に立たない場合は、よろしくお願いします 必要 プログラムでフォントを制御または変更します。ただし、単に基本的な電子メール フォントを必要とする顧客と仕事をしている人にとっては、 ない 電子メールがコードから生成されるときは常に、Times New Roman を使用すると、これが役立つ場合があります。
私の経験では、電子メールの作成にはデフォルトの電子メール設定が使用されます。
newMail.HTMLBody に HTML を挿入するのではなく、正確に値を設定しています。HTMLBody の内容を調べてみると、CSS コードのような何かで始まるはずです。
ただし、電子メールの値の 1 つから読み取りを試みると、ユーザーには「プログラムがアクセスしようとしています...何とか何とか」というセキュリティ ポップアップが表示されます。
ユーザーの署名を維持しようとしたときにこの問題に遭遇しましたが、セキュリティ プロンプトをトリガーせずに署名を取得する良い方法が見つかりませんでした。