Domino 9 und frühere Versionen > ND8: Entwicklung
Liste mit contentTypes(MIME)/Problem mit Name von Anhängen in Email
Preda7oR:
Hallo zusammen,
ich hab folgende zwei Fragen:
1. Bei dem Befehl "Call notesMIMEEntity.SetContentFromBytes( stream, contentType, encoding )" muss ja der contentType angegeben werden. Gibt es hierzu eine Liste, welche verschiedenen Typen es gibt? Also application/pdf, image/bmp etc...
2. Ich erstelle mit VBA eine Email im HTML-Format mit Anhängen. Dies klappt jetzt auch soweit so gut, nur passen die Namen der einzeönen Anhänge nicht. D.h. Sie entsprechen nicht dem Dateinamen, sondern heißen z.b. "application-xlsx-attachment" bei einer Excel-Datei und nicht "xyz.xlsx". Ich verwende folgenden Code:
--- Code: ---Sub LotusMail(Empfaenger As String, Inhalt As String, Absender As String,
Betreff As String, CC As String, BCC As String, Anhang As Variant, Zeile As
Integer)
Dim server As String, mailfile As String
Dim session As Object
Dim DB As Object
Dim doc As Object
Dim alleAnhänge As Variant
' Auslesen der Mail-DB
Set session = CreateObject("Notes.NotesSession")
session.ConvertMime = False
server = session.GetEnvironmentString("MailServer", True)
mailfile = session.GetEnvironmentString("MailFile", True)
Set DB = session.GETDATABASE(server, mailfile)
Set doc = DB.CreateDocument()
doc.Form = "Memo"
doc.SendTo = Empfaenger ' Adressdaten übergeben
doc.CopyTo = Split(CC, ";") 'CC
doc.BlindCopyTo = Split(BCC, ";") ' BCC
doc.Subject = Betreff 'Betreff
Set body = doc.CreateMIMEEntity
Set bodyChild = body.CreateChildEntity()
Set stream = session.CreateStream
Call stream.Writetext(Inhalt)
Call bodyChild.SetContentFromText(stream, "text/html;charset=iso-8859-1",
1729)
Call stream.Close
Call stream.Truncate
alleAnhänge = Split(Anhang, ";")
' Pfade der Anhänge bearbeiten und hinzufügen
For i = 0 To UBound(alleAnhänge)
strAnhang = alleAnhänge(i)
If Len(strAnhang) > 0 And Len(Dir(strAnhang)) > 0 Then
' Name des Anhangs aus dem Pfad extrahieren
Position = InStrRev(strAnhang, "\")
Dateiname = Right(strAnhang, Len(strAnhang) - pos)
'Neues Child-Element des body für einen Anhang
Set bodyChild = body.CreateChildEntity()
Set Header = bodyChild.CreateHeader("Content-Type")
Call Header.SetHeaderVal("multipart/mixed")
Set Header = bodyChild.CreateHeader("Content-Disposition")
Call Header.SetHeaderVal("attachment; filename=" & Dateiname)
Set Header = bodyChild.CreateHeader("Content-ID")
Call Header.SetHeaderVal(Dateiname)
Set stream = session.CreateStream()
If stream.Open(strAnhang, "binary") Then
Dateityp = Split(alleAnhänge(i), ".")
Dateityp = "application/" & Dateityp(UBound(Dateityp))
Call bodyChild.SetContentFromBytes(stream, Dateityp, 1730)
End If
End If
Next
Call stream.Close
Call stream.Truncate
'doc.SAVEMESSAGEONSEND = True
doc.principal = Absender 'Absender
Call doc.Send(False) 'Email senden
'Variablen leeren
session.ConvertMime = True
Set doc = Nothing
Set DB = Nothing
End Sub
--- Ende Code ---
Wäre super wenn mir jemand auf die Sprünge helfen köönte :-)
Vielen Dank im Voraus!!
VG Dennis
m3:
--- Zitat ---[RFC2046] specifies that Media Types (formerly known as MIME types) and Media
Subtypes will be assigned and listed by the IANA.
Procedures for registering Media Types can be found in [RFC6838], [RFC4289],
and [RFC6657]. Additional procedures for registering media types for transfer via
Real-time Transport Protocol (RTP) can be found in [RFC4855].
--- Ende Zitat ---
Die in RFC 2046 geforderte Liste der Media Types (formerly known as MIME types) and Media Subtypes hält die IANA auf http://www.iana.org/assignments/media-types/media-types.xhtml vor.
Wenn Du den Dateinamen mitschicken willst, möchtest Du Dir RFC 2183 "Communicating Presentation Information in Internet Messages: The Content-Disposition Header Field" ansehen.
Dort heißt es:
--- Zitat --- The `filename' parameter can be used to suggest a filename for
storing the bodypart, if the user wishes to store it in an external
file.
--- Code: ---Content-Disposition: attachment; filename=genome.jpeg;
modification-date="Wed, 12 Feb 1997 16:29:51 -0500";
--- Ende Code ---
--- Ende Zitat ---
Preda7oR:
Vielen Dank hat geklappt ;-)
pram:
Hi Dennis,
auch dir möchte ich meinen Artikel http://atnotes.de/index.php/topic,52040.0.html empfehlen, bevor dir z.B. wegen deinem fehlenden "closeMimeEntities" ein Produktivsystem crashed.
Da habe ich auch Beispielcode wie man eine Mail mit Anhang erstellt.
Gruß
Roland
Preda7oR:
Hey Roland,
vielen Dank für die Anmerkung.
Mein fertiger Code so wie folgt aus. Könntest du oder jemand anders bitte mal drüber schauen, ob da irgendwelche groben schnitzer drin sind?
--- Code: ---Sub LotusMail(Empfaenger As String, Inhalt As String, Absender As String,
Betreff As String, CC As String, BCC As String, Anhang As Variant, Zeile As
Integer)
Dim server As String, mailfile As String
Dim session As Object
Dim DB As Object
Dim doc As Object
Dim alleAnhänge As Variant
' Auslesen der Mail-DB
Set session = CreateObject("Notes.NotesSession")
session.ConvertMime = False
server = session.GetEnvironmentString("MailServer", True)
mailfile = session.GetEnvironmentString("MailFile", True)
Set DB = session.GETDATABASE(server, mailfile)
Set doc = DB.CreateDocument()
Set body = doc.CreateMIMEEntity
Set bodyChild = body.CreateChildEntity()
Set stream = session.CreateStream
Call stream.Writetext(Inhalt)
Call bodyChild.SetContentFromText(stream, "text/html;charset=iso-8859-1",
1729)
Call stream.Close
Call stream.Truncate
alleAnhänge = Split(Anhang, ";")
' Pfade der Anhänge bearbeiten und hinzufügen
For i = 0 To UBound(alleAnhänge)
strAnhang = alleAnhänge(i)
If Len(strAnhang) > 0 And Len(Dir(strAnhang)) > 0 Then
' Name des Anhangs aus dem Pfad extrahieren
Position = InStrRev(strAnhang, "\")
Dateiname = Right(strAnhang, Len(strAnhang) - Position)
'Neues Child-Element des body für einen Anhang
Set bodyChild = body.CreateChildEntity()
Set Header = bodyChild.CreateHeader("Content-Type")
Call Header.SetHeaderVal("multipart/mixed")
Set Header = bodyChild.CreateHeader("Content-Disposition")
Call Header.SetHeaderVal("attachment; filename=" & Dateiname)
Set Header = bodyChild.CreateHeader("Content-ID")
Call Header.SetHeaderVal(Dateiname)
Set stream = session.CreateStream()
If stream.Open(strAnhang, "binary") Then
Dateityp = Right(Dateiname, Len(Dateiname) - InStrRev
(Dateiname, "."))
'Auswahl des Dateitypes
If Dateityp Like "xls*" Then
Dateityp = "application/vnd.ms-excel"
Else
If Dateityp Like "doc*" Then
Dateityp = "application/msword"
Else
If Dateityp Like "ppt*" Then
Dateityp = "application/vnd.ms-powerpoint"
Else
If Dateityp Like "pdf" Then
Dateityp = "application/pdf"
Else
If Dateityp = "bmp" Then
Dateityp = "image/bmp"
Else
If Dateityp = "jpeg" Then
Dateityp = "image/jpeg"
Else
If Dateityp = "gif" Then
Dateityp = "image/gif"
Else
Dateityp =
"application/octet-stream"
End If
End If
End If
End If
End If
End If
End If
Call bodyChild.SetContentFromBytes(stream, Dateityp, 1730)
End If
End If
Next
Call stream.Close
Call stream.Truncate
Call doc.CloseMIMEEntities(True)
doc.Form = "Memo"
doc.SendTo = Empfaenger ' Adressdaten übergeben
doc.CopyTo = Split(CC, ";") 'CC
doc.BlindCopyTo = Split(BCC, ";") ' BCC
doc.Subject = Betreff 'Betreff
doc.principal = Absender 'Absender
'doc.SAVEMESSAGEONSEND = True
Call doc.Send(False) 'Email senden
'Variablen leeren
session.ConvertMime = True
Set doc = Nothing
Set DB = Nothing
End Sub
--- Ende Code ---
Vielen Dank!!
VG
Dennis
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln