Outlook Mail automatisch weiterleiten

  • Outlook

Es gibt 16 Antworten in diesem Thema. Der letzte Beitrag () ist von petaod.

    Outlook Mail automatisch weiterleiten

    Hallo Leute,
    ich bin ganz frisch hier und möchte eure geschätzte Meinung einholen. Sollte es zu dieser Frage bereits im Forum eine Antwort geben, bitte um einen entsprechenden Hinweis.
    Ich verwende Outlook 2010 Home and Business.

    Ich möchte ein Mail, das ich von einem bestimmten Absender erhalte (max.mustermann@wolke123.com), an mehrere Personen weiterleiten (fixe Gruppe; aaa@abc.com, bbb@abc.com, ...). Bisher habe ich immer einen Text dazugeschrieben:

    "Hallo zusammen,
    anbei zur Info.

    Gruß ..."

    Da jetzt aber diese Mails öfter als 1x pro Woche eintrudeln, möchte ich das ein wenig automatisieren.

    Ich dachte da auch schon an eine Regel, die diese Weiterleitung automatisch durchführen kann - aber leider macht die das ohne Text ... über OWA habe ich leider auch nicht mehr Möglichkeiten zur Regeldefinition ... Und der Text wäre mehrzeilig ... also fällt meiner Meinung nach das Benachrichtigungsfenster aus ...

    Ferner habe ich auch gesehen, dass man bei der Regel ein Skript ausführen kann.
    Jetzt melde ich mich bei euch: Wie müsste dieses Skript aussehen, damit ich das mit der Regel verarbeiten kann?

    Ich danke euch bereits jetzt schon ganz herzlich für die Unterstützung. :thumbsup:

    Gruß
    3DFreak77
    Hallo Milaim,
    Danke für den Tipp ... das kenne ich. Aber einen Text in die Nachricht reinschreiben kann ich da ja nicht ... ausser über das Benachrichtigungsfenster ....
    Und das ist ja auch irgendwie nicht ganz optimal, wenn der User nicht direkt vorm PC sitzt und das Fenster sieht .....

    Also bräuchte ich einen VB - Skript, der mir die ausgewählte Nachricht der Regel mit "meinem" Text versieht und dann weiterleitet.

    DANKE!

    Gruß
    3DFreak
    Dankeschön! 8o

    Das ist dann aber die komplette Prozedur in VB ... ist mein Vorschlag (Skript über Regel) nicht einfacher?

    Könnte mir wer von euch das bitte ein bisschen kommentieren oder korrigieren, damit ich es auf meine Anforderung anpassen kann?
    -------------------------------------------------------------------------------------------------
    Private Sub Application_NewMailEx(ByVal EntryIDCollection As String)

    Dim objMail_In As Outlook.MailItem
    Dim objMail_Out As Outlook.MailItem
    Dim aryEntryIDs() As String
    Dim lngCount As Long

    'jedes neue MailItem durchgehen
    aryEntryIDs = Split(EntryIDCollection, ",")
    For lngCount = 0 To UBound(aryEntryIDs)

    Set objMail_In = Application.Session.GetItemFromID(aryEntryIDs(lngCount))
    Set objMail_Out = objMail_In.Forward

    With objMail_Out
    .To = "aaa@abc.com"
    .Subject = "WG:" & objMail_In.Subject
    .Body = "Dieser Text sollte mehrzeilig sein."
    .Send
    End With
    Next lngCount

    End Sub
    -------------------------------------------------------------------------------------------------
    Mein Problem: Dieser Skript leitet ALLE neu eingehenden Mails weiter. Das möchte ich ja nicht ... ;(
    Wie finde ich nun die Absenderadresse? Oder vielleicht noch besser (weil von diesem Absender auch andere Mails kommen, die nicht weitergeleitet werden sollen) Wörter aus der Betreffzeile (wie zB "presence" oder "absence")?

    Heißt das, dass "jedes neue MailItem durchgehen" bereits die Regelfunktion ist?
    Wie ist das bei mehreren Empfängern in ".To" ? Kann ich die mit ";" oder "," trennen oder muss ich für jeden Empfänger den "objMail_Out" erstellen?
    Wie schaffe ich es, dass der ".Body" mehrzeilig ist? Also so wie in meiner ersten Frage ...

    "Hallo zusammen,
    anbei zur Info.

    Gruß ..."

    DANKE, ihr seid die Besten! :thumbup:

    Gruß
    3DFreak77
    Als erstes musst Du Dir im Klaren sein, wo deine Manipulation einsetzen soll. Du sprachst irgendetwas von OWA dann geht es nur mit Regel bzw. Anpassungen auf dem Exchange-Server.
    Der Code, den Du hast, läuft im Outlook Client, d.h. wenn Outlook geöffnet ist.

    Prüfe doch einfach für die eingehende Mail objMail_In das Subject und From

    Visual Basic-Quellcode

    1. If objMail_In.From = "XXX" and objMail_In.Subject ="XXXX" then
    2. tue was
    3. End If


    Mehrzeilig erhälst Du durch den Zeilenwechsel. Dies macht man am besten mit vbNewLine

    Visual Basic-Quellcode

    1. .Body = "Zeile 1" & vbNewLine &"Zeile 2"
    NB. Es ist doch schön, wenn man lesbare Namen vergibt. Siehe auch [VB.NET] Beispiele für guten und schlechten Code (Stil).
    Der Hinweis mit OWA war deshalb, weil ich in meiner - leider erfolglosen - Suche im Web darauf gestoßen bin, wo der Hinweis nach anderen Einstellungsmöglichkeiten als im "normalen" Outlook gegeben wurde und ich natürlich auch da nachgesehen habe.
    Prinzipiell bezüglich "wo meine Manipulation einsetzen soll", waren meine Gedanken klar beim "handelsüblichen" Regelassistenten, der automatisch nach meinen Kriterien die Mail weiterleitet. Da dieser Regelassistent aber "nur" die Weiterleitung macht (ohne benutzerdefiniertem Text), wollte ich eigentlich "nur" das Skript, mit dem der Regelassistent weiterarbeiten soll.
    Wie müsste ich meinen Code ändern, damit der auch läuft, wenn Outlook geschlossen ist (also zB ich auf Urlaub)?

    Ich habe meinen Code nun geändert. Ist das so richtig?
    ---------------------------------------------------------------------------------------------
    Private Sub Application_NewMailEx(ByVal EntryIDCollection As String)

    Dim objMail_In As Outlook.MailItem
    Dim objMail_Out As Outlook.MailItem
    Dim aryEntryIDs() As String
    Dim lngCount As Long

    ' Ersatz Filterregel für bestimmter Absender und bestimmtes Wort im Betreff
    If objMail_In.From = "hudriwudri@abcde.com" and objMail_In.Subject = "presence" then

    With objMail_Out
    .To = "aaa@abc.com" ; "bbb@abc.com" ; "ccc@abc.com" ; "ddd@abc.com"; "eee@abc.com"; "fff@abc.com"
    .Subject = "WG:" & objMail_In.Subject
    .Body = "Hallo zusammen," & vbNewLine &"anbei zur Info." & vbNewLine & vbNewLine "Gruß,"& vbNewLine &"3DFreak77"
    .Send
    End With

    End If

    End Sub
    ---------------------------------------------------------------------------------------------
    Dein Code läuft im offenen Outlook Client. Für den anderen Weg musst Du mit VBS ein Skript in den Regeln anlegen.

    Ja Dein Code sieht soweit gut aus.

    Bitte formatiere demnächst Deinen Code mit dem VB 6.0 Format. Dieses kannst Du beim Erstellen Deines Posts in den Symbolleisten auswählen. Dies macht das lesen des Codes einfacher.
    NB. Es ist doch schön, wenn man lesbare Namen vergibt. Siehe auch [VB.NET] Beispiele für guten und schlechten Code (Stil).
    OK, Danke für den Tip. Wie würde das dann gehen? Das wäre ja meine ursprüngliche Frage gewesen ......

    Ich habe den Code jetzt ins VB eingegeben und sofort ist die ".TO" - Zeile rot, weil er ein Anweisungsende erwartet ...

    Visual Basic-Quellcode

    1. .To = "aaa@abc.com" ; "bbb@abc.com" ; "ccc@abc.com" ; "ddd@abc.com"; "eee@abc.com"; "fff@abc.com"


    Wieso? Es gab ja bisher keine Einwände bezügl. meines Codes .... ;(

    DANKE!!!

    Gruß
    Hi,

    der Code muss so aussehen:

    Visual Basic-Quellcode

    1. .To = "aaa@abc.com" & ";" & "bbb@abc.com" & ";" & "ccc@abc.com" & ";" & "ddd@abc.com" & ";" & "eee@abc.com" & ";" & "fff@abc.com"


    Für das VBS Script schaust Du mal hier.
    NB. Es ist doch schön, wenn man lesbare Namen vergibt. Siehe auch [VB.NET] Beispiele für guten und schlechten Code (Stil).
    Hey wow danke für den Hinweis! :thumbup:

    Das Suchen im Betreff nach dem Wort "presence" mittels

    obj.Mail_In.Subject = "presence"

    ist auch richtig, oder?

    Eine letzte Frage: Wie verbinde ich dann die beiden?
    Oder besser: Wie starte ich das VBS Skript dann?
    Ich mein, VBS ist ja für den Fall, dass Outlook geschlossen ist. Was muss ich tun, damit das Skript dann trotzdem läuft?

    DANKE! 8o

    Gruß
    3DFreak77
    So ihr lieben Leute,
    ich habe nun was produziert.

    Visual Basic-Quellcode

    1. Private Sub Weiterleiten_absence_presence_VBS()
    2. Dim objMail_In As Outlook.MailItem
    3. Dim objMail_Out As Outlook.MailItem
    4. Dim oApp, oMail, bOLStarted
    5. On Error Resume Next
    6. Set oApp = GetObject("", "Outlook.Application")
    7. If oApp Is Nothing Then
    8. Set oApp = CreateObject("Outlook.Application")
    9. bOLStarted = Not oApp Is Nothing
    10. End If
    11. Err.Clear
    12. If Not oApp Is Nothing Then
    13. On Error Resume Next
    14. Set oMail = oApp.CreateItem(0)
    15. Err.Clear
    16. If Not oMail Is Nothing Then
    17. If objMail_In.From = "hudriwudri@abcde.com" And objMail_In.Subject = "presence" Then
    18. With objMail_Out
    19. oMail.To = "aaa@abc.com" & ";" & "bbb@abc.com" & ";" & "ccc@abc.com" & ";" & "ddd@abc.com" & ";" & "eee@abc.com" & ";" & "fff@abc.com"
    20. oMail.Subject = "WG:" & objMail_In.Subject
    21. oMail.Body = "Hallo zusammen," & vbNewLine & "anbei zur Info." & vbNewLine & vbNewLine & "Gruß," & vbNewLine & "3DFreak77"
    22. oMail.Send
    23. End With
    24. End If
    25. oMail.Display
    26. Set oMail = Nothing
    27. Else
    28. MsgBox "Fehler beim Erstellen der Mail"
    29. End If
    30. If bOLStarted Then oApp.Quit
    31. Set oApp = Nothing
    32. Else
    33. MsgBox "Fehler beim Ermitteln/Erstellen einer Outlook Instanz"
    34. End If
    35. End Sub


    Wäre das nun so in Ordnung? Findet ihr noch irgendwelche Fehler oder habe ich "es zu gut gemeint"?
    Stimmt wirklich die Zeile 18, weil der Betreff die Wörter "presence" oder "absence" enthält ... Ich möchte da nur sicher gehen, dass da keine Fehlinterpretation vorliegt ....

    Wie kann ich das Ding nun starten (weil ja VBS)?
    Eine letzte Bonusfrage hätte ich noch: Scheint dann die gesendete Mail im Ordner "Gesendete Elemente" auf?

    Bitte entschuldigt die vielen Fragen, aber ich bin da noch nicht ganz so fit und hab das bisher noch nicht gemacht .......


    Ich danke euch ganz herzlichst. :D

    Gruß
    3DFreak77

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „3DFreak77“ ()

    If objMail_In.From = "hudriwudri@abcde.com" And (objMail_In.Subject = "presence" Or objMail_In.Subject = "absence") Then

    oder (um enthält zu implementieren):
    If objMail_In.From = "hudriwudri@abcde.com" And (objMail_In.Subject Like "*presence*" Or objMail_In.Subject Like "*absence*") Then

    oder ggf. auch das:
    If objMail_In.From = "hudriwudri@abcde.com" And objMail_In.Subject Like = "*sence*" Then
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „petaod“ ()

    @petaod: DANKE zutiefst für die Erklärung!

    Eines noch, weil es mir gerade eingefallen ist: Ist der Anhang (der im Mail eine xls - Datei ist) dann automatisch dabei oder muss ich den extra mit

    Visual Basic-Quellcode

    1. oMail.Attachment = objMail_In.Attachment

    Was sagst Du zum Rest? Wäre da was "doppelt gemoppelt", weil das ursprüngliche Skript ja aus VB war und die Erweiterung für VBS erfolgt ist.
    Könntest Du mir bitte sagen, wie ich das Ding dann starten kann?

    Oder anders rum: Soll ich die Sache mit "Mail vom Absender hudriwudri und den Wörtern *sence* im Betreff" mit einer Regel machen und dann als Aktion das Skript reinhängen?

    DANKE nochmals!

    Gruß
    3DFreak77

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „3DFreak77“ ()

    @petaod: Danke für die Info ... mein "Problem" ist, dass der Dateiname immer ein anderer ist (wegen der Kalenderwochen - Zahl).

    Die "alte" Mail mit dem Regelassistent weiterleiten geht ja schon soweit, aber kann ich da halt keinen Text dazuschreiben.
    Das war meine urallererste Frage ......
    Ich hab da wirklich alles versucht (auch im OWA, weil da gemunkelt wurde, es gäbe mehr Einstellungsmöglichkeiten) und leider nix gefunden. Deshalb auch meine Reise in die Welt des VB, das irgendwie zu automatisieren.

    Was sagst Du dazu?

    Danke für die Bemühugen!

    Gruß
    3DFreak77
    Dann mach doch einfach eine Weiterleitung, anstatt eine neue Mail.
    Kopiere das alte MailItem (das hat eine Methode .Copy)
    Verändere den Text und die Ziel-Adresse des neuen Objekts.

    Ausserdem könntest du den Attachment-Namen auch aus der alten Mail auslesen.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --