MAPI: Probleme beim Speichern von Mail-Attachments

rollkugeln1

Grünschnabel
Hallo, ich habe folgendes Problem:

Mit VB habe ich eine Prozedur geschrieben, welche bestimmte Attachments aus Mails auf der Festplatte speichern soll. Prinzipiell habe ich das gelöst, ich habe allerdings Probleme mit einigen Dateinamen: Es werden einige Dateinamen auf das 8.3-Format gekürzt. Dies ist auch nicht anwendungsspezifisch, sondern betrifft z.B. sowohl Word- als auch Exceldateien.
In Outlook werden die Dateinamen in voller Länge angezeigt.
VBA für Outlook kann(darf) ich allerdings nicht verwenden.

Im VB-Projekt benutze ich das MAPISession- und das MAPIMessages-Control.

Über Hinweise, Ratschläge, Lösungen wäre ich sehr dankbar.
rollkugeln1
 
Hallo,

ich arbeite auch viel mit den Mapi Controls aber solche Probleme hatte ich noch nicht.
Zeig doch mal deinen Code.
Könnte es sein das es was mit dem Betriebssystem oder dessen Einstellungen zu tun hat ?

Jens
 
Hallo Jens,

anbei der Code. Dabei schreibe ich (zur Kontrolle) die ausgelesenen Dateinamen in ein Worddokument.
Dies würde ich in Ausschnitten auch hier anzeigen.

Zuerst der Code:
---------------------------------------------------------------------------------------------------------
Option Explicit
Const path As String = "F:\Dokumente und Einstellungen\rkunze\Eigene Dateien\Ablage XLS\"
-------------------------------------------------------------------------------------------------------

Private Sub Form_Load()
MAPISession1.SignOn 'Verbindung zum E-Mail-Client herstellen
MAPIMessages1.SessionID = MAPISession1.SessionID 'Übergabe der Sitzungsnummer an das zweite Steuerelement

holeMails

End Sub
--------------------------------------------------------------------------------------------------------
Public Sub holeMails()
Dim zaehler As Integer
Dim zaehlerAtt As Integer
Dim wapp As New Word.Application
Dim dok As Word.Document
Dim oMappe As Object



MAPIMessages1.Fetch 'Zusammenstellen einer Nachrichtengruppe

wapp.Visible = True
Set dok = wapp.Documents.Add
With MAPIMessages1
For zaehler = 0 To .MsgCount - 1
.MsgIndex = zaehler

If .AttachmentCount > 0 Then
'MsgBox "Mit Anhang"
For zaehlerAtt = 0 To .AttachmentCount - 1
.AttachmentIndex = zaehlerAtt
If .AttachmentName Like "*.xl*" Then
wapp.Selection.Text = "Absender: " & .MsgOrigDisplayName _
& "Zeit: " & .MsgDateReceived & vbCr
wapp.Selection.Collapse wdCollapseEnd
wapp.Selection.Text = "Anzahl Anhänge: " & .AttachmentCount & vbCr
wapp.Selection.Collapse wdCollapseEnd
wapp.Selection.Text = .AttachmentName & vbCr & .AttachmentPathName
wapp.Selection.Collapse wdCollapseEnd
wapp.Selection.InsertParagraphAfter
wapp.Selection.InsertParagraphAfter
wapp.Selection.Collapse wdCollapseEnd

speichereAnlage .AttachmentName, .AttachmentPathName
End If
Next

End If
Next
End With

MsgBox "Ich habe fertig!"

Unload Me

End Sub

Private Sub Form_Unload(Cancel As Integer)
MAPISession1.SignOff

End Sub
--------------------------------------------------------------------------------------------------------------------
Public Sub speichereAnlage(ByVal name As String, ByVal attpath As String)

FileCopy attpath, path & name

End Sub
==========================================================
==========================================================
Auszüge (mit Kommentaren) aus dem Worddokument

Absender: RolfKunze@t-online.deZeit Zeit: 2005/09/22 14:31
Anzahl Anhänge: 1
ASLEW205.xls Kommentar: falscher Name: richtig ist: ASLE W205 20050822.xls
F:\DOKUME~1\rkunze\LOKALE~1\Temp\ASLEW205.xls

Absender: RolfKunze@t-online.deZeit: 2005/09/22 14:08
Anzahl Anhänge: 1
Add-InTe.xls Kommentar: falscher Name: richtig ist:Add-InTest.xls
F:\DOKUME~1\rkunze\LOKALE~1\Temp\Add-InTe.xls

Absender: Harry SonntagZeit: 2005/09/21 10:44
Anzahl Anhänge: 3
Anhang 1- Umgebung f. Offline-Test (2005.07.29).xls Kommentar: Dateiname richtig
F:\DOKUME~1\rkunze\LOKALE~1\Temp\Anhang1-.xls

Absender: Markus Gallenberger Zeit: 2005/09/19 09:10
Anzahl Anhänge: 1
RolfK_KW.xls Kommentar: Dateiname falsch: richtig ist: RolfK_KW38_05.xls
F:\DOKUME~1\rkunze\LOKALE~1\Temp\RolfK_K1.xls

============================================================
Anhand der Eintragungen im Worddokument könnte man evtl. meinen, es liegt am Absender. Nein, denn der Absender "Harry Sonntag" hat mir eine Mail geschickt mit zwei Excel-Dateien als Anhang: beide wurden mit 8.3 ausgegeben.

Vielen Dank für die Durchforstung des Codes
Rolf
 
Hallo,

ich habe gerade noch mal nachgeschaut. Das Mapi Control kann leider doch nur
das 8.3 Format.
Entweder du übergibst den Namen der Anhänge noch mal separat und benennst die Datei dann um oder du musst was anderes nutzen.
Schau dir mal CDO an.

Gruß
Jens
 
Hallo,

danke erstmal für die Bemühungen. Leider ist dann immer noch unklar, warum in einigen Fällen der Name richtig kommt.

Mittlerweile habe ich auch weitere Tests durchgeführt:
Outlook 2003: Wenn die Mail HTML-Format hat, werden die Dateianhänge nicht richtig erkannt, hat die Mail Text-Format, dann werden die Anhäge in jedem Fall! richtig ausgelesen (also nicht 8.3).
Der gleiche Test bei Outlook 2000: bei allen Formatierungen der Mail habe ich wieder mein Problem. :mad:

Thema CDO: Habe ich erste Schritte unternommen, bräuchte aber noch mehr Info's über das Objektmodell. Da schweigt sich die MSDN gut aus...

Gruß Rolf
 
Hallo Rolf,

hier mal ein paar Links. Der 1. ist zwar ASP aber ist ja fast das geiche wie VB.
Aber du hast Recht, es ist nicht leicht da was gescheites drüber zu finden.

1
2
3

Soll dein Programm denn mit mehreren Mail Clients klar kommen oder
ist immer das richtige Outlook installiert. Dann könntest du auf Mapi
verzichten und direkt mit dem Outlook Objektmodell arbeiten.
Dazu hab ich auch Beispiele. In meinen Programmen nutze ich Mapi wenn
Outlook Express das Standardmailprogramm ist und den Outlook Verweis
wenn Outlook das Standardmailprogramm ist.

Jens
 
Hallo Jens,

danke für die Links, ich werde sie demnächst ausprobieren.

Du schreibst:
...Soll dein Programm denn mit mehreren Mail Clients klar kommen oder
ist immer das richtige Outlook installiert....


Genau das ist der Grund, warum ich VBA für Outlook nicht benutzen kann.

Gruß Rolf
 
Zurück