Zum Inhalt springen
Hilfe zu Outlook, Thunderbird, KuNoMail & Co.

Mail-Anhang abspeichern und Body-Text als txt abspeichern

Überblick

Status
Beantwortet
Gefragt von
Unbekannt
Gefragt am
Antworten
4
Letzte Antwort
von Unbekannt

Frage

Hallo!

Ich möchte ein Makro bauen, welches per Regel-Assistent ausgeführt wird. Dieses soll Attachments in einem Pfad abspeichern und den Mitteilungstext (Body-Text der Mail) als txt-Datei abspeichern. Dazu habe ich schon zwei Beispiele gefunden, die ich jedoch nicht zusammenfügen kann. Könntet ihr mir helfen?

Mail-Inhalt speichern (sollte aber nur den Body speichern):
Code:

Public Enum olSaveAsTypeEnum
olSaveAstxt = 0
End Enum

Private WithEvents Items As Outlook.Items

Private Const MAIL_PATH As String = \“c:\\\“

Private Sub TextSpeichern(Ns As Outlook.NameSpace)

Set Ns = Application.GetNamespace(\“MAPI\“)
Set Items = Ns.GetDefaultFolder(olFolderInbox).Items
End Sub

Private Sub Items_ItemAdd(ByVal Item As Object)
If TypeOf Item Is Outlook.MailItem Then
SaveMailAsFile Item, olSaveAstxt, MAIL_PATH
End If
End Sub

Public Sub SaveMailAsFile(oMail As Outlook.MailItem, _
eType As olSaveAsTypeEnum, _
sPath As String _
)
Dim sName As String
Dim sExt As String

oMail.To = \“\“
oMail.Subject = \“\“

eType = olSaveAstxt: sExt = \“.txt\“

sName = \“versuch\“ & sExt

oMail.SaveAs sPath & sName, eType
End Sub

Private Sub ReplaceCharsForFileName(sName As String, _
sChr As String _
)
sName = Replace(sName, \“/\“, sChr)
sName = Replace(sName, \“\\\“, sChr)
sName = Replace(sName, \“:\“, sChr)
sName = Replace(sName, \“?\“, sChr)
sName = Replace(sName, Chr(34), sChr)
sName = Replace(sName, \“<\", sChr) sName = Replace(sName, \">\“, sChr)
sName = Replace(sName, \“|\“, sChr)
End Sub

Attachment abspeichern:
Code:

Public Sub AufnahmeMailVerschicken(objNewMail As MailItem)
Dim Ordnername As String
Dim objPosteingang As MAPIFolder
Dim anzahl
Dim i

On Error Resume Next
Set objPosteingang = Application.GetNamespace(\“MAPI\“).GetDefaultFolder(olFolderInbox)
For Each objNewMail In objPosteingang.Items
With objNewMail
If .UnRead = True Then
anzahl = .Attachments.Count
If anzahl > 0 Then
Ordnername = \“C:\\\“ & objNewMail.SenderName
MkDir Ordnername
For i = 1 To anzahl
.Attachments.Item(i).SaveAsFile Ordnername & \“\\\“ & .Attachments.Item(i).FileName
Next i
End If
End If
End With
Next objNewMail
End Sub

Danke schon im Voraus für eure Hilfe!

cyber.space

4 Antworten

4 Antworten anzeigen - 1 bis 4 (von insgesamt 4)
  1. Moin

    Versuch`s mal so:
    Sub test(Item As Outlook.MailItem)
    Dim F As Integer
    anzahl = Item.Attachments.Count
    If anzahl > 0 Then Else Exit Sub \‘ nur wenn Anhang dran
    Ordnername = \“C:\\test\“
    \‘ nimmt ersten Anhang, sonst müsste mann eine Schleife einbauen
    Item.Attachments.Item(1).SaveAsFile Ordnername & \“\\\“ & Item.Attachments.Item(1).FileName
    Text = Item.Body
    sFilename = \“C:\\test.txt\“

    \‘ Datei zum Schreiben öffnen
    \‘ Achtung: bisheriger Inhalt wird gelöscht!
    F = FreeFile
    Open sFilename For Output As #F
    Print #F, Text
    Close #F
    End Sub

    Diese sub in ThisOutlookSession rein
    Regel : bei Ankunft Skript ausführen

    Habs nicht getestet

    mfg
    Thomas

  2. Hallo!

    Danke Thomas! Das Skript funktioniert schon sehr gut! Nur habe ich in dieser Mail 3 Bilder und 1 Mp3-file drinnen. Effektiv wird aber nur ein Bild und kein mp3-file abgespeichert. Habt ihr dafür eine Erklärung?

    Es wär echt super, wenn ich das Problem noch lösen könnte!

    mfg

    cyber.space

  3. Hallo!

    Mein Problem hat sich erledigt. Ich habe eine Schleife hineingebaut.

    Danke für die Hilfe!!!

    mfg

    cyber.space

4 Antworten anzeigen - 1 bis 4 (von insgesamt 4)
  • Sie müssen angemeldet sein, um zu diesem Thema eine Antwort verfassen zu können.