Outlook Interopアカウントからメッセージを送信します
質問
さて、仕様はこれに多少変更されました。たぶん誰かがこの新しい問題で私を助けることができます。
手動で、ユーザーがしていることは、Outlook(2007年)に「From ...」フィールドが露出している新しいメッセージを開くことです。これを開き、グローバルアドレスリストから特定のアカウントを選択し、そのアカウントに代わってメッセージを送信します。
これは可能ですか?
次のようなグローバルアドレスリストからアドレスエントリーを入手できます。
AddressList list = null;
foreach (AddressList addressList in _outlookApp.Session.AddressLists)
{
if (addressList.Name.ToLower().Equals("global address list"))
{
list = addressList;
break;
}
}
if (list != null)
{
AddressEntry entry = null;
foreach (AddressEntry addressEntry in list.AddressEntries)
{
if (addressEntry.Name.ToLower().Equals("outgoing mail account"))
{
entry = addressEntry;
break;
}
}
}
しかし、アドレスエントリからアカウントタイプを作成できるかどうかはわかりません。送信するアドレスを選択すると、手動で発生するようです。これを相互作用でミラーリングするにはどうすればよいですか?
ありがとう!
(私の元の質問):
Outlook 2007 Interopを使用して電子メールを送信するための小さなC#プログラムを開発しました。クライアントは、デフォルトアカウントを使用してメールを送信しないように要求しました。
問題ありません-Microsoft.Office.Interop.Outlook.Accountクラスを使用して、利用可能なアカウントにアクセスし、正しいアカウントを選択しました。
これで、Outlook 2003で動作するためにこれが必要であることが判明しました。もちろん、アカウントクラスはOutlook Interop 11.0に存在しません。
Outlook 2003で同じことを達成するにはどうすればよいですか?
前もって感謝します。
解決
ため息...私はStackoverflowに関する私自身の質問にもっと答えているようです...
とにかく、これはそれがどのように行われるかです:
(Outlook Interops 2003と2007で機能し、償還を使用していないと思います。これは、償還のこの部分がどのように機能するかさえあるかもしれませんが、私はそれを見ていません。)
message.PropertyAccessor
.SetProperty("http://schemas.microsoft.com/mapi/proptag/0x00410102",
message.PropertyAccessor.StringToBinary(entry.ID));
このスキーマエントリとHEX識別子は、MAPIプロパティPR_SENT_REPRESENTING_ENTRYIDに対応しています。 「エントリ」変数は、質問のコードスニペットで取得されました。
その作品を作るために作品を見つけるために、ウェブを通してかなりのトロールをしました。ある場所でpr_sent_representing_entryidプロパティを使用する必要があることがわかりました。0x00410102== PR_SENT_REPRESENTING_ENTRYIDが別の場所で、「StringTobinary」を呼び出す必要があるという事実はありませんか?...すべてのピースを投稿した人たち!
他のヒント
OOMを使用する必要がありますか?system.net.mailを使用できますか?単純なメールが送信される場合。私はそれがあなたが他に何をしているかに依存すると思いますか?
そうでない場合は、拡張されたmapiを使用する必要があり、ような図書館の領域にいると思います 償還.