2011-10-08 8 views
4

ユーザーが送信ボタンを押したときにOutlookの[送信先]フィールドでメールアドレスを変更しようとしています。たとえば、現在のItem.Toの値が'[email protected]'の場合、'[email protected]'になります。VBAを使用してメッセージを送信するときにOutlookの「Item.To」値を変更します

私は件名を変更、しかしItem.Toで失敗しました(それはセキュリティ上の問題がある?)することができます

Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean) 

    If Item.Class <> olMail Then Exit Sub 

    Item.To = "[email protected]" ' Nope , It does not work 
    Item.Subject = "New Subject" ' It works 

End Sub 

おかげ

答えて

5

MailItem.Toプロパティは、表示名に使用されます。おそらくMailItem.Recipients財産上のOutlookのヘルプからこのわずかに変更された例のように、受信者コレクションを使用したい:

Sub CreateStatusReportToBoss() 

Dim myItem As Outlook.MailItem 
Dim myRecipient As Outlook.Recipient 

Set myItem = Application.CreateItem(olMailItem) 
Set myRecipient = myItem.Recipients.Add("[email protected]") 
myItem.Subject = "New Subject" 
myItem.Display 

End Sub 
+0

感謝を.recipients.add私が受信者について知らなかったことから、私はこの答えを選びました。この情報は全体の問題を解決するために導きます。ありがとう – Abdullah

4

私は質問の所有者です。私は@joeschwa答えを選んだのも、私は現在のメッセージをキャンセル私のコードを表示し、新しいものを作成したい(あなたが受信者、メッセージの内容や他の何かに変更することができます):

Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean) 

    If Item.Class <> olMail Then Exit Sub 
    Dim newEm As String 

    Dim Rec As Recipient 
     Dim myItem As Outlook.MailItem 
     Dim myRecipient As Outlook.Recipient 
     Set myItem = Application.CreateItem(olMailItem) 
     myItem.Body = Item.Body 
     myItem.HTMLBody = Item.HTMLBody 
     myItem.Subject = Item.Subject & " RASEEL PLUGIN " 
     Cancel = True 


    For Each Rec In Item.Recipients 
    If InStr(1, Rec.AddressEntry, "@example.com", vbTextCompare) Then 
     newEm = "[email protected]" 
    Else 
     newEm = Rec.AddressEntry 
    End If 

    Set myRecipient = myItem.Recipients.Add(newEm) 
    myRecipient.Type = Rec.Type 

    Next 

    myItem.Send 

End Sub 
0

それは私の作品を。ただし、受信者を変更する場合は、先に受信者を削除する必要があります。例えば、

x = .recipients.count のx = 1は、その後、(1)
を.delete .recipients場合は "[email protected]"

関連する問題