PDA

View Full Version : [SOLVED:] Extract and include senders email in forwarded message?



perola.rike
12-10-2015, 10:16 AM
I have a code in the vba-module "This outlook session" that forwards all my outlook mail to my gmail account. What I need is a code (if possible) that inserts the original senders email in the forwarded message. Is this possible?

skatonni
12-10-2015, 03:09 PM
See Processing Incoming E-mails with Macros (http://www.slipstick.com/developer/processing-incoming-e-mails-with-macros/)

Something like this where item is the incoming mail.


Dim newMail As mailItem

Set newMail = CreateItem(olMailItem)

With newMail
.To = "address"
.Attachments.Add Item
.Display ' .Send
End With

Set newMail = Nothing

perola.rike
12-11-2015, 12:46 AM
Thank you for answering, I did some testing, but the code you suggested caused Outclook to crash/restart.... I have the following attached code pasted in "This outlook session". Any ideas how to integrate your suggested code with my code?14954

skatonni
12-11-2015, 11:06 AM
Starting code:


Public Sub Application_NewMailEx(ByVal EntryIDCollection As String)
Dim varEntryID As Variant

On Error Resume Next

For Each varEntryID In Split(EntryIDCollection, ",")
Dim objOriginalItem As mailItem
Set objOriginalItem = Application.GetNamespace("MAPI").GetItemFromID(varEntryID)
Dim objForwardedItem As mailItem
Set objForwardedItem = objOriginalItem.Forward
Do Until objForwardedItem.Attachments.count = 0
objForwardedItem.Attachments.Remove (1)
Loop

objForwardedItem.To = "address"
objForwardedItem.send
Next
End Sub


Revised code something like this:

Private Sub Application_NewMailEx(ByVal EntryIDCollection As String)

Dim varEntryID As Variant

Dim objOriginalItem As mailItem
Dim newMail As mailItem

On Error Resume Next

For Each varEntryID In Split(EntryIDCollection, ",")

Set objOriginalItem = Application.GetNamespace("MAPI").GetItemFromID(varEntryID)

Do Until objOriginalItem.Attachments.count = 0
objOriginalItem.Attachments.Remove (1)
Loop

Set newMail = CreateItem(olMailItem)

With newMail
.To = "address"
.Attachments.Add objOriginalItem
.Display ' .Send
End With

Next

ExitRoutine:
Set objOriginalItem = Nothing
Set newMail = Nothing

End Sub

skatonni
12-15-2015, 04:07 PM
I probably misunderstood the question.


Private Sub Application_NewMailEx(ByVal EntryIDCollection As String)

Dim varEntryID As Variant

'On Error Resume Next ' Not a good idea

For Each varEntryID In Split(EntryIDCollection, ",")

Dim objOriginalItem As Object
Set objOriginalItem = Application.GetNamespace("MAPI").GetItemFromID(varEntryID)

Dim objForwardedItem As mailItem

If TypeOf objOriginalItem Is mailItem Then

Set objForwardedItem = objOriginalItem.Forward
Do Until objForwardedItem.Attachments.count = 0
objForwardedItem.Attachments.Remove (1)
Loop

objForwardedItem.To = "address"
objForwardedItem.Display

objForwardedItem.HTMLBody = objOriginalItem.SenderEmailAddress & objForwardedItem.HTMLBody

' or
'objForwardedItem.body = objOriginalItem.SenderEmailAddress & objForwardedItem.body

'objForwardedItem.send

End If

Next
End Sub

perola.rike
12-15-2015, 11:39 PM
Thank you! I tried your first suggestion which worked nice - it included the original sender's email adress (as a text string) in the forwarded mail (exactly what I needed)!

Looking forward to test your last code as well!