fum125’s diary

IT全般に関する技術メモなど

Outlook2016 を Python から制御してみる (4)

前回は、MailItem のサブジェクト (Subject) を表示してみました。
今回は、MailItem の色々なプロパティにアクセスしてみます。

単純に値を参照したり設定すれば良いものもあれば、お作法が必要だったりするものもあったため、実験してみて気づいたものを記載しておきます。

ちなみに、MailItem のクラス説明は以下のサイトを参考。
https://msdn.microsoft.com/ja-jp/vba/outlook-vba/articles/mailitem-object-outlook

送信者 (from)

for item in items:
    print(item.Sender)                         #-> "ほげほげ太郎"
    print(item.SenderEmailAddress)             #-> "aaa@bbb.ne.jp" 

"aaa@bbb.ne.jp" のようなメールアドレスは "SenderEmailAddress" で参照できました。
もう一つの "Sender" は、メールアドレスではなく表示名が表示されました。

宛先 (to/cc)

送信先・宛先を調べるために To や Cc を使ってみたところ、表示名は取れますが、送信先メールアドレスが取得できません。

for item in items:
    print(item.To)                       #-> "ほげほげ次郎"

送信先メールアドレスは、 Recipients に入っていました。
複数の宛先に送られることもありますので、Recipients はリストになっています。

for item in items:
    print(item.To)                      #-> "ほげほげ次郎"

    for rcpt in item.Recipients:
        print(rcpt.Address)             #-> "xxx@yyy.com"

To なのか Cc なのかは、Recipient の Type から調べるようです。

件名 (Subject)

    print(item.Subject)

件名は、Subject で参照できます。

分類 (タグ)

Outlook で、gmail の "ラベル" のような使い方をしたい場合は、"Categories" を使用します。

    print(item.Categories)

複数の分類項目が指定されているときは "," (カンマ) 区切りになっていました。
新たに分類項目を追加したい場合、Categories に「 "," + 項目名」を追加すれば良いです。

既に指定済の項目を重複して追加した場合、分類項目が重複して表示される場合と、指定済項目が考慮されて重複しない場合があり、まだその違いが分かりません。

(例)
item.Categories = "AAA, BBB, CCC"           #-> いま、AAA, BBB, CCC の3つの分類項目がある。
item.Categories = item.Categories + ", CCC"
print(item.Categories)                               #-> CCC が重複になる場合と、ならない場合があった。

本文

メール本文は "Body" で参照できます。

    print(item.Body)

フラグ

フラグがついていると IsMarkedAsTask が True になります。
この場合は、TaskDueDate (期限) や TaskCompletedDate (完了日) を参照/設定することができます。

IsMarkedAsTask は読み込み専用です。
フラグを付けたいときは MarkAsTask() メソッドを使うようですが、これはまだ試していません。

そのほか

あらかじめ用意されているもの以外にアクセスしたい場合、PropertyAccessor を使います。
PropertyAccessor の実験は次回に。