Tjenare! ingen som har erfarenhet av detta? har hittat en hel del komponenter som utför detta (bifogar filer från byte() arrayer) , men de kostar, och detta borde man ju kunna lösa själv tycker jag ju .. funkar ju internt men inte extern. Skumt? JA!Mail med bifogade filer från byte() arrayer
Har lite panik på ett projekt som jag sitter på här.
Eftersom .net's CDO mailer funktioner endast stöder mail med bifogade filer från själva fysiska filer, går det alltså inte att maila filer från t.ex byte() arrayer (blobbar från databaser). Detta löste jag med att sitta och läsa om SMTP och göra min egen mailkomponent som ärver från TcpClient, och kommunicerar direkt med SMTP servern.
Allt verkade funka, internt får jag emot mailen med subject, body, bifogade filer och allt. (om jag skickar till min egen mailbox från samma exchangeserver)
Men såfort jag försöker skicka externt (typ till hotmail eller vadsom), så kommer faktiskt mailet fram men body och alla bifogade filer försvinner eller blir korrupta!! Body kan inte läsas, och den förstår inte att det finns bifogade filer med.
Och här är stället som jag ger upp på, för jag har ingen aning om vad som är fel ... Är det någon som har nån aning om vad som kan vara fel ? Eller om det finns någon gratis eller färdig .net komponent jag kan använda som kan bifoga filer från byte() arrayer?
Funktionen som genererar body och bifogade filer ser ut såhär:
<code>
Private Function GenerateFullData() As String
'TODO: Möjliga charsets: US-ASCII / ISO-8859-9 / ISO-8859-1 / ISO-2022-JP
'testa Content-Transfer-Encoding: quoted-printable
'"Content-Type: text/plain; charset=ISO-8859-1 " & vbCrLf & _
'"Content-Transfer-Encoding: 8bit; " & vbCrLf & _
'header
Dim x As String = _
"From: " & Me.From & " " & vbCrLf & _
"To: " & Me.ToAddress & " " & vbCrLf & _
"Subject: " & Me.Subject & " " & vbCrLf & _
"X-Mailer: Avancit Mailer 1.1b" & vbCrLf & _
"MIME-Version: 1.0 " & vbCrLf & _
"Content-Type: multipart/mixed; " & vbCrLf & _
" boundary= ""KkK170891tpbkKk__FV_KKKkkkjjwq"" " & vbCrLf & _
vbCrLf & _
"--KkK170891tpbkKk__FV_KKKkkkjjwq " & vbCrLf & _
"Content-Type: text/plain; charset=ISO-8859-1 " & vbCrLf & _
"Content-Transfer-Encoding: 8bit; " & vbCrLf & _
vbCrLf & _
Me.Body & vbCrLf & _
vbCrLf
'
'loopa attachments
For Each y As SMTPAttachment In Me.Attachments
x += "--KkK170891tpbkKk__FV_KKKkkkjjwq " & vbCrLf & _
"Content-Type: application/octet-stream " & vbCrLf & _
"Content-Transfer-Encoding: base64 " & vbCrLf & _
"Content-Disposition: attachment; " & vbCrLf & _
" filename= """ & y.FileName & """ " & vbCrLf & _
vbCrLf
Dim base64String As String = System.Convert.ToBase64String(y.Data, 0, y.Data.Length)
Dim cntr As Integer = 0
Do While cntr < base64String.Length
Dim nextchunk As Integer = 100
If (base64String.Length - (cntr + nextchunk)) < 0 Then
nextchunk = base64String.Length - cntr
End If
x += (base64String.Substring(cntr, nextchunk))
x += vbCrLf
cntr += nextchunk
Loop
Next
x += "--KkK170891tpbkKk__FV_KKKkkkjjwq-- " & vbCrLf & _
vbCrLf & "." & vbCrLf
Return x
End Function
</code>
obs: strunta i att koden inte är så optimerad än =)Sv: Mail med bifogade filer från byte() arrayer