8

Outlook Interop を使用して、手動で送信する前にユーザーが編集できる詳細が事前に入力された新しいメール メッセージを開く C# で記述されたアプリケーションがあります。

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);

同じユーザーが新しいメッセージを手動で作成すると、フォントはCalibriまたはユーザーがデフォルトとして設定したフォントに設定されます。問題は、自動メールのテキストが、望ましくないTimes New Romanフォントで表示されることです。

配信された電子メールの 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 を使用しています。

4

3 に答える 3

2

HTML メールなので、実際の HTML 本文に必要なスタイルを簡単に埋め込むことができます。これは、Outlook GUI からメッセージを作成するときに Outlook が行っていることだと思います。

ユーザー設定を取得する方法が実際にはわかりません。私は Outlook API を調べましたが (奇妙な獣です)、既定のメッセージ プロパティへのアクセスを提供するものは何も見つかりませんでした。

于 2009-07-01T01:55:02.487 に答える
0

私の経験では、電子メールの作成にはデフォルトの電子メール設定が使用されます。

HTMLを挿入するのではなく、newMail.HTMLBodyを値に正確に設定しています。HTMLBody の内容を調べると、css コードのような何かで始まるに違いありません

ただし、電子メールの値の 1 つから読み取ろうとすると、ユーザーは「プログラムがアクセスしようとしています..何とか何とか」というセキュリティ ポップアップが表示されます。

ユーザーの署名を維持しようとしたときにこれに遭遇しましたが、セキュリティプロンプトをトリガーせずに署名を取得する良い方法が見つかりませんでした.

于 2011-06-29T13:45:29.710 に答える