a_sue’s diary

a_sue の日記 はてなブログ版

Outlook 2007 の送信メールをアカウント別にそのアカウントに自動でBCCする(問題あり)

追記
「問題あり」を解決したバージョンはこちら

iOSバイスでメールを読み書きすることが増えてきて、自動的に差出人がBCCに追加されるのって便利だなと思い始めたのが結構前。
ThinkPad E430でOutlook 2007を使ってて、送信メールはすべてEvernoteBCCで送ってるけど、差出人アドレスにも送りたいなぁと思ってちょっと調べたのが昨日。
そもそも今EvernoteBCCで送ってるのはどこでどうやってるのかすっかり忘れてるし。
ググったらここがヒット。

OUTLOOKで送信するとき自動的にBCCをつける方法 - エンタメLIFEHACKERS::mikye’s daily report

VBAの画面を開いたら、このコードが貼ってあった。
ああ、この方法でやってたのね。

実は今回これを書こうとしてこの日記をBCCで検索したらちゃんと記事を書いてた。参考にしたのは別のサイトのようだけど、オリジナルは今回見つけた上記のとこかな?日付が古いから。

で、差出人アドレスを判別できれば目的は達成できるのでちょっと調べたら差出人はSenderEmailAddressだとわかり、それでググるとヒットしたとこのサンプルコードで目的達成。

SenderEmailAddress プロパティ

結果はこんなコード

Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
    Dim objMe As Recipient
    Set objMe = Item.Recipients.Add("xxxx@m.evernote.com")
    objMe.Type = olBCC
    objMe.Resolve
    Set objMe = Nothing

' ↓ここから追加    
    If Item.SenderEmailAddress = "yyyy@yyyy.com" Then
        Set objMe = Item.Recipients.Add("yyyy@yyyy.com")
        objMe.Type = olBCC
        objMe.Resolve
        Set objMe = Nothing
    End If
    If Item.SenderEmailAddress = "zzzz@zzzz.com" Then
        Set objMe = Item.Recipients.Add("zzzz@zzzz.com")
        objMe.Type = olBCC
        objMe.Resolve
        Set objMe = Nothing
    End If
' ↑ここまで
End Sub

これでテストしたら個人とビジネスで使い分けてる複数の差出人アドレスにそれぞれBCCで送られた。
でもG-mailから出したのが上手くいかなかったんだけど、それよりも重大な問題に気付いてしまったのですぐに封印。

上記のコードの前半で送信メールをEvernoteに転送してるんだけど、それとは別に仕分けルールで受信メールの一部をEvernoteに転送してて、Outlookでは仕分けルールの転送メールも普通に送信メールになって、送信済みメールフォルダに残る。
仕分けルールは差出人アドレスだったり件名の一部だったり。
ちょっと嫌な予感はあったんだ。
案の定仕分けルールに従ってEvernoteに転送されるメールにこれが働いて自分宛BCC
それが届くと件名の一部を見て転送。
その送信メールにこれが働いて自分宛BCC、、、、、エンドレス

というひどいことになる前に今回の追加部分をコメントアウトして取りやめ。
とりあえず、その問題含めてご参考まで。
解決方法を見つけたらまた書きます。