winsock MIME ficheros adjuntos base64
Tango bastante avanzada mi aplicación para bajarme los correos de diferentes cuentas POP. Guardo los mensajes con extensión .eml para comprobar en outloock que los he bajado bien, pero precisamente lo que no quiero es utilizar Outloock y eso implica que debo aprender a guardar los ficheros que me bienen codificados en base64 (jpg,bmp,doc,etc.).
Os adjunto un código de decodificación de uno de los ficheros que me he bajado de un mail. ´He comprobado que el código de decodificación es correcto, pero al guardar el fichero e intentar abrirlo con Imagin me dice que el formato es desconocido. ¿Alguién sabe por qué?
Option Explicit
Dim Base64Chars
'Código obtenido de www.tutoriales.org
Private Sub Command1_Click()
Dim w1, w2, w3, w4, n, strOut
Dim strIn As String
Base64Chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
Command1.Enabled = False
strIn = _
"Qk0eAQAAAAAAAHYAAAAoAAAAEgAAAA4AAAABAAQAAAAAAKgAAAAAAAAAAAAAABAAAAAAAAAA" & vbCrLf & _
"AAAAAAAAgAAAgAAAAICAAIAAAACAAIAAgIAAAICAgADAwMAAAAD/AAD/AAAA//8A/wAAAP8A" & vbCrLf & _
"/wD//wAA////AIiIiIiIiIiIiAAAAIiIiIiICAiIiAAAAIiIiIiAgPCIiAAAAIiIiIgID/8I" & vbCrLf & _
"iAAAAIiIiICA/P/wiAAAAIiIiAgPz8kfCAAAAIiIgID8/PEQiAAAAIAACA//z/8ACAAAAICA" & vbCrLf & _
"cICIiIADCAAAAICzAAAAAAAzCAAAAICA+/v7+/sDCAAAAIAPv7+/v7+wCAAAAIAAAAAAAAAA" & vbCrLf & _
"CAAAAIiIiIiIiIiIiAAAAA=="
strOut = ""
For n = 1 To Len(strIn) Step 4
w1 = mimecode(Mid(strIn, n, 1))
w2 = mimecode(Mid(strIn, n + 1, 1))
w3 = mimecode(Mid(strIn, n + 2, 1))
w4 = mimecode(Mid(strIn, n + 3, 1))
If w2 >= 0 Then strOut = strOut + Chr(((w1 * 4 + Int(w2 / 16)) And 255))
If w3 >= 0 Then strOut = strOut + Chr(((w2 * 16 + Int(w3 / 4)) And 255))
If w4 >= 0 Then strOut = strOut + Chr(((w3 * 64 + w4) And 255))
Next n
Open "c:windowstempMiAdjunto.bmp" For Binary As #1
Put #1, , strOut
Close #1
MsgBox "Finalizada la decodificación"
End Sub
Function mimecode(ByVal strcode)
If Len(strcode) = 0 Then
mimecode = -1
Exit Function
Else
mimecode = InStr(Base64Chars, strcode) - 1
End If
End Function
Os adjunto un código de decodificación de uno de los ficheros que me he bajado de un mail. ´He comprobado que el código de decodificación es correcto, pero al guardar el fichero e intentar abrirlo con Imagin me dice que el formato es desconocido. ¿Alguién sabe por qué?
Option Explicit
Dim Base64Chars
'Código obtenido de www.tutoriales.org
Private Sub Command1_Click()
Dim w1, w2, w3, w4, n, strOut
Dim strIn As String
Base64Chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
Command1.Enabled = False
strIn = _
"Qk0eAQAAAAAAAHYAAAAoAAAAEgAAAA4AAAABAAQAAAAAAKgAAAAAAAAAAAAAABAAAAAAAAAA" & vbCrLf & _
"AAAAAAAAgAAAgAAAAICAAIAAAACAAIAAgIAAAICAgADAwMAAAAD/AAD/AAAA//8A/wAAAP8A" & vbCrLf & _
"/wD//wAA////AIiIiIiIiIiIiAAAAIiIiIiICAiIiAAAAIiIiIiAgPCIiAAAAIiIiIgID/8I" & vbCrLf & _
"iAAAAIiIiICA/P/wiAAAAIiIiAgPz8kfCAAAAIiIgID8/PEQiAAAAIAACA//z/8ACAAAAICA" & vbCrLf & _
"cICIiIADCAAAAICzAAAAAAAzCAAAAICA+/v7+/sDCAAAAIAPv7+/v7+wCAAAAIAAAAAAAAAA" & vbCrLf & _
"CAAAAIiIiIiIiIiIiAAAAA=="
strOut = ""
For n = 1 To Len(strIn) Step 4
w1 = mimecode(Mid(strIn, n, 1))
w2 = mimecode(Mid(strIn, n + 1, 1))
w3 = mimecode(Mid(strIn, n + 2, 1))
w4 = mimecode(Mid(strIn, n + 3, 1))
If w2 >= 0 Then strOut = strOut + Chr(((w1 * 4 + Int(w2 / 16)) And 255))
If w3 >= 0 Then strOut = strOut + Chr(((w2 * 16 + Int(w3 / 4)) And 255))
If w4 >= 0 Then strOut = strOut + Chr(((w3 * 64 + w4) And 255))
Next n
Open "c:windowstempMiAdjunto.bmp" For Binary As #1
Put #1, , strOut
Close #1
MsgBox "Finalizada la decodificación"
End Sub
Function mimecode(ByVal strcode)
If Len(strcode) = 0 Then
mimecode = -1
Exit Function
Else
mimecode = InStr(Base64Chars, strcode) - 1
End If
End Function