Takenoff Labs » Notes/Domino » Lotus Script » メールの送信者名を変更する方法
[Notes/Domino] メールの送信者名を変更する方法
メールの送信者名を変更する方法は、Principal を使う方法がよく知られておりますが、もう1つ方法があるのはご存知でしょうか? 管理人もしばらく知らなかったので、ご紹介いたしましょう。
Principal を使う方法
いちおう Principal を使う方法を書いておきます。
Dim ss As New NotesSession
Dim db As NotesDatabase
Dim doc As NotesDocument
Dim strFrom As String
Set db = ss.CurrentDatabase
Set doc = db.CreateDocument()
strFrom = "CN=Test Taro/O=TEST"
With doc
.Form = "Memo"
.Principal = strFrom
.DisplayFrom = strFrom
.DisplaySent = strFrom
.DisplaySent_1 = strFrom 'R8用
.SendTo = ss.UserName '宛先
.Subject = "Test Mail"
Call .Send(False)
End With
外部に送る場合は、INetFrom だけにインターネット用のメールアドレスをセットして送ればOKです。
この方法はお手軽ですが、From 自体を変更するわけではないため、受信者が「全員に返信」のアクションを実行すると、実際の送信者名が CC にセットされてしまいます。
mail.box に直接メールを作成する方法
以下のように、mail.box に直接メールを作ると、本当にその人が送ったかのように送信されます(Fromも変わります)。
Dim ss As New NotesSession
Dim db As New NotesDatabase("", "")
Dim doc As NotesDocument
Dim strSvr As String
strSvr = ss.GetEnvironmentString("MailServer", True)
If db.Open(strSvr, "mail.box") = False Then
Msgbox "mail.box が開けません", 0, "Error"
Exit Sub
End If
Set doc = db.CreateDocument
doc.Form = "Memo"
doc.From = "CN=Test Taro/O=TEST" '送信者名
doc.Recipients = ss.UserName '宛先
doc.SendTo = ss.UserName '宛先
doc.PostedDate = Now
doc.Subject = "Test Mail"
Call doc.Save(True, True) '保存すれば送信される
これではなりすましメールが送り放題じゃないか! と憤慨される方もいるかもしれませんが、Eメールはもともとなりすましが可能な仕様ですから、特別ノーツがおかしいわけではありません。telnet 使えば同じことができるしね。
また、実際の送信者がまったく判らないかというと、そうでもなく、$UpdatedBy を見れば簡単に判ります。スケジュールエージェントで送った場合は見分けが付きにくいですが、そもそもスクリプトから送ったメールは $AssistMail アイテムが "1" になるので、From の人が手動で送ったものではないことが判別できます。(2010/01/26追記: mail.box に文書を作成する方法では、$AssistMail アイテムはできないみたいです。失礼しました(_ _; 代わりに、$Mailer が無いかどうか、などで判別できそうです)
なので、悪いことには使っちゃだめですよ(^^;
トラックバックURL :
Navigation
前の記事(カテゴリ内): 設計の更新日時を取得する方法
次の記事(カテゴリ内): LotusScript でビューのカテゴリがあるかどうかを判定する方法
前の記事(日付順): アレンスキー: ピアノ協奏曲 Op.2
次の記事(日付順): リャードフ: 前奏曲 Op.11-1
トラックバック
トラックバックはありません


コメント
コメントはありません
※コメントは承認制となっております。管理者が承認するまで表示されません。申し訳ありませんが、投稿が表示されるまでしばらくお待ちください。