2

仕事用の Outlook 2010 アカウントに大量のスパム メッセージが届きます。スパムを (添付ファイルとして) 転送するためのスパム ブロッカー アドレスが提供されます。

リボンのアイコンをクリックし (既に持っています)、VBA コードを実行して、現在のメッセージを受け取り、それを新しいメッセージに添付し、新しいメッセージにアドレスを追加し、新しいメッセージを送信してから、元のメッセージを削除します。(削除とは、メッセージを [削除済みアイテム] フォルダーに入れるか、完全に削除することです。)

解決済み!!!!

ここに私が望むことを正確に行うコードがあります。ネットで見つけて、自分のニーズに合わせて修正しました。

Sub ForwardAndDeleteSpam()
'
' Takes currently highlighted e-mail, sends it as an attachment to
' spamfilter and then deletes the message.
'

    Set objItem = GetCurrentItem()
    Set objMsg = Application.CreateItem(olMailItem)

    With objMsg
        .Attachments.Add objItem, olEmbeddeditem
        .Subject = "SPAM"
        .To = "spamfilter@schools.nyc.gov"
        .Send
    End With
    objItem.Delete

    Set objItem = Nothing
    Set objMsg = Nothing
End Sub

Function GetCurrentItem() As Object
    On Error Resume Next
    Select Case TypeName(Application.ActiveWindow)
    Case "Explorer"
        Set GetCurrentItem = Application.ActiveExplorer.Selection.Item(1)
    Case "Inspector"
        Set GetCurrentItem = Application.ActiveInspector.CurrentItem
    Case Else
        ' anything else will result in an error, which is
        ' why we have the error handler above
    End Select

    Set objApp = Nothing
End Function
4

1 に答える 1

1

これを使用して、次のようにコードを調整することで、1 つだけではなく、選択した電子メールを処理できます。

Sub ForwardSpamToNetworkBox()

On Error Resume Next

Dim objItem As Outlook.MailItem

If Application.ActiveExplorer.Selection.Count = 0 Then
   MsgBox ("No item selected")
   Exit Sub
End If

For Each objItem In Application.ActiveExplorer.Selection
Set objMsg = Application.CreateItem(olMailItem)
    With objMsg
        .Attachments.Add objItem, olEmbeddeditem
        .Subject = "SPAM"
        .To = "spam@host.co.uk"
        .Send
    End With
objItem.Delete
Next

Set objItem = Nothing
Set objMsg = Nothing

End Sub

これはhttp://jmerrell.com/2011/05/21/outlook-macros-move-emailからの情報で作成されました

理想的には、削除する代わりに、「送信済み」というサブフォルダーに移動しますが、パブリックフォルダーで機能させることができません

于 2013-04-17T12:06:24.730 に答える