Email Attachment auswerten C#

Diskutiere Email Attachment auswerten C# im Developer Network Forum im Bereich Hardware & Software Forum; Hallo Entwickler, ich bekomme von meinem BackUp - Programm eine EMail mit Anhang zugeschickt. Die Mail im Klartext sieht so aus : Bei jeder...
  • Email Attachment auswerten C# Beitrag #1
N

Nastarowje

Bekanntes Mitglied
Dabei seit
19.04.1999
Beiträge
378
Reaktionspunkte
0
Ort
Erfurt / Thüringen
Hallo Entwickler,

ich bekomme von meinem BackUp - Programm eine EMail mit Anhang zugeschickt.

Die Mail im Klartext sieht so aus :

Return-Path: <[email protected]>X-Flags: 1001Delivered-To: GMX delivery to [email protected]ived: (qmail invoked by alias); 07 May 2009 12:39:07 -0000Received: from

mailhost.XXX.de (EHLO mailhost.XXX.de) [XX.XX.XX.XX] by mx0.gmx.net (mx002) with SMTP; 07 May 2009 14:39:07 +0200Subject: WG: Backup Exec-Meldung: Auftrag

erfolgreich (Server: "SERVER01") (Auftrag: "Vollbackup")To: [email protected]-Mailer: Lotus Notes Release 8.0.2 August 07, 2008Message-ID:

<[email protected]>From: [email protected]: Thu, 7 May 2009 14:39:02 +0200X-MIMETrack: Serialize by Router on

DOMINO/XXX(Release 7.0|August 18, 2005) at 07.05.2009 14:39:07MIME-Version: 1.0Content-type: multipart/mixed;

Boundary="0__=4EBBFF3CDFD6FDE78f9e8a93df938690918c4EBBFF3CDFD6FDE7"X-GMX-Antivirus: 0 (no virus found)X-GMX-Antispam: 0 (Mail was not recognized as

spam)X-GMX-UID: VOQ7f71geWU6IQ/4fnVzfTc5U3U4N88j--0__=4EBBFF3CDFD6FDE78f9e8a93df938690918c4EBBFF3CDFD6FDE7Content-type: multipart/related;

Boundary="1__=4EBBFF3CDFD6FDE78f9e8a93df938690918c4EBBFF3CDFD6FDE7"--1__=4EBBFF3CDFD6FDE78f9e8a93df938690918c4EBBFF3CDFD6FDE7Content-type:

multipart/alternative;

Boundary="2__=4EBBFF3CDFD6FDE78f9e8a93df938690918c4EBBFF3CDFD6FDE7"--2__=4EBBFF3CDFD6FDE78f9e8a93df938690918c4EBBFF3CDFD6FDE7Content-type: text/plain;

charset=ISO-8859-1Content-transfer-encoding: quoted-printableMit freundlichen Gr=FC=DFen // ----- Weitergeleitet von XXX am 07.05.2009 14:39 -----

= =

= Backup Exec-Meldung: Auftrag erfolgreich (Server: "SERVER01") (=Auftrag:

"Vollbackup") = =

= backup

= an: = XXX

= 07.05.2=009 10:31

= = (Server: "SERVER01") (Auftrag: "Vollbackup")

Erfolgreich abgeschlossen.=(Seeattached file: BEX_SERVER01_00367.htm)=--2__=4EBBFF3CDFD6FDE78f9e8a93df938690918c4EBBFF3CDFD6FDE7Content-type: text/html;

charset=ISO-8859-1Content-Disposition: inlineContent-transfer-encoding: quoted-printable<html><body><p>Mit freundlichen Gr=FC=DFen // Kind

regards.<br><br><br>XXX<br>Support Engineer / Fachinformatiker / Internetingenieur<br><br>----------------------------------------<br><<br>E-Mail:

XXX<br>URL: <a href=3D"XXX">XXX</a><br><br><font size=3D"2" color=3D"#800080">----- Weitergeleitet von XXX</font><font size=3D"2" color=3D"#800080"> am

07.05.2009 14:39</f=ont><font size=3D"2" color=3D"#800080"> -----</font><br><br><table width=3D"100%" border=3D"0" cellspacing=3D"0" cellpadding=3D"0">=<tr

valign=3D"top"><td style=3D"background-image:url(cid:[email protected]); background-repeat: no-repeat; " widt=h=3D"1%"

valign=3D"middle"><img width=3D"80" height=3D"1" src=3D"cid:[email protected]" border=3D"0" alt=3D""><br=><img

src=3D"cid:[email protected]" width=3D="80" height=3D"1"></td><td width=3D"100%" valign=3D"middle"><img width=3D="1"

height=3D"1" src=3D"cid:3__=3D4EBBFF3CDFD6FDE78f9e8a93df93869091@xx=..de" border=3D"0" alt=3D""><br>
Bei jeder Email, die ich bisher gesehen habe befindet sich der Anhang im EMail Text als Base64 Codierter String. Bei dieser sehe ich lediglich den Dateinamen des Attachments.

Wie kann ich mittels C# das Attachment in diesen Fall auslesen? Wo finde ich das Attachment?

Bin schon verzweifelt am suchen. Bei der oben dargestellten Mail handelt es sich um ein Original. Lediglich persönliche Daten und IP Adressen habe ich unkenntlich gemacht.

Gibt es eine Markierung, wo ein Base64 codierter Anhang beginnt und wo er endet? Bisher konnte ich das ehr durch testen rausbekommen. Hat jemand eine - möglichst deutsche Doku - dazu?


Vielen Dank
 
  • Email Attachment auswerten C# Beitrag #3
N

Nastarowje

Bekanntes Mitglied
Dabei seit
19.04.1999
Beiträge
378
Reaktionspunkte
0
Ort
Erfurt / Thüringen
Hallo,

mittlerweile bekomme ich die Mail komplett herunter geladen. Nun versuche ich den base64 codierten anhang zu entschlüsseln. dies mache ich folgendermassen :

Code:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
  public partial class Form1 : Form
  {
    public Form1()
    {
      InitializeComponent();
    }


    private void button1_Click(object sender, EventArgs e)
    {
      ASCIIEncoding NewEncoding = new ASCIIEncoding();
      byte[] buffer = NewEncoding.GetBytes(richTextBox1.Text);

      richTextBox2.Text = Convert.ToBase64String(buffer, 0, buffer.Length);
    }

    private void button2_Click(object sender, EventArgs e)
    {
      byte[] encodedDataAsBytes = System.Convert.FromBase64String(richTextBox2.Text);
      richTextBox1.Text = System.Text.ASCIIEncoding.ASCII.GetString(encodedDataAsBytes);
      
    }
  }
}

wenn ich eigenen Text eingeb, funktioniert es hervorragend. Sowohl Codeieren wie auch encodieren funktioniert fehlerfrei.

nehme ich mir nun aber einen codierten anhang vor, bekomme ich nur zeichen und symbole, die mit dem eigentlichen anhang nix mehr zu tun haben.

gibt es irgendeinen Punkt, ab den ich den anhang ausschneiden muss und gibt es ein ende, das für mich erkenntlich ist??

Wenn ich eigenen text codiere, bekomme ich immer == als letzte 2 Zeichen angezeigt. In der Mail ist dies aber nicht so.kann mir jemand helfen den dateianhang wieder lesbar zu machen??


Vielen Dank
 
  • Email Attachment auswerten C# Beitrag #4
N

Nastarowje

Bekanntes Mitglied
Dabei seit
19.04.1999
Beiträge
378
Reaktionspunkte
0
Ort
Erfurt / Thüringen
Hallo,

so habe jetzt herausbekommen, warum der String nicht zurückgewandelt wird. Es liegt daran, das es verschiedene Arten gibt, wie man Base64 codieren kann.

Wie kann ich die Art der Base64 codierung herausbekommen? Gibt es Methoden, die alle Codierungen abdecken?


würde mir sehr helfen
 
  • Email Attachment auswerten C# Beitrag #5
N

Nastarowje

Bekanntes Mitglied
Dabei seit
19.04.1999
Beiträge
378
Reaktionspunkte
0
Ort
Erfurt / Thüringen
Hi, irgendwie konnte ich gerade nicht bearbeiten.

naja hier noch ein paar anmerkungen :

habe jetzt herausgefunden, das die fehlenden Bits am ende des base64 string mit 0 aufgefüllt werden es steht also zum Beispiel == am ende des Strings. Dies passiert dann, wenn ich nur 6 Bits verwende um zu codieren.

Jetzt habe ich am Anfang aber // stehen. Leider finde ich in den RFC keine Anhaltspunkte. Wann bekomme ich diese Zeichen rein???

Der Ascii Code sieht am Anfang decodiert nun so aus :

Code:
FF FE 3C 00 48 00 54 00 4D 00 4C 00 3E 00 3C 00 48 00 45 00 41 00 44 00 3E 00 0D 00 0A 00 3C 00 4D 00 45 00 54 00 41 00 20 00 48 00 54 00 54 00 50 00 2D 00 45 00 51 00 55 00 49 00 56 00 3D 00 27 00 4D 00 53 00 54 00 68 00 65 00 6D 00 65 00 43 00 6F 00 6D 00 70 00 61 00 74 00 69 00 62 00 6C 00 65 00 27 00 20 00

durch die Schrägstriche werden wahrscheinlich FF und FE am anfang generiert, was im originalen Text (ist HTML File) nicht der Fall ist. Außerdem ist dann jedes zweite Zeichen ein Sonderzeichen, zu erkennen am Ascii 00.

Hat jemand Erfahrung, wie das Codiert sein könnte? Laut Header ist der MIME-Version: 1.0 Content-type: multipart/mixed. Nur leider finde ich keine Beschreibung dazu. Außerdem gibt es wohl laut wikipedia 130 Untergruppen zum Content-type.


Hoffe irgendeiner kann mir weiterhelfen.


Danke im vorraus
 
  • Email Attachment auswerten C# Beitrag #6
U

UnimatrixZero

Bekanntes Mitglied
Dabei seit
27.06.2001
Beiträge
645
Reaktionspunkte
0
  • Email Attachment auswerten C# Beitrag #7
N

Nastarowje

Bekanntes Mitglied
Dabei seit
19.04.1999
Beiträge
378
Reaktionspunkte
0
Ort
Erfurt / Thüringen
Doch, ich hatte im oberen Teil nur den Download fehlerhaft, deshalb fehlt was von der email. - meine Frage war ja anfangs, wo der Anhang ist.

Das Problem habe ich zwischenzeitlich gelöst gehabt, da ich die Auswertung an falscher stelle abgebrochen habe.

zu meiner letzen Frage mit den 2 Schrägstrichen :

hier nochmal ein Auszug aus dem Attachment. Der String wird mit == abgeschlossen (nicht gezeigt). Das bedeutet, das die Codierung mit 6bit erfolgt. der rest wird mit 00 aufgefüllt. Dieser String beginnt aber noch zusätzlich mit //, was ich nicht nachvollziehen kann. Diese 2 Zeichen existieren nämlich nicht im Quellcode. Also gehe ich auch hier von einer verschiebung aus. anders kann ich mir nicht erklären, das ein Sonderzeichen an jeder 2ten Position eingefügt wird. Wenn du Tipps hast, wie ich diesen String decodieren kann oder du eine quelle für mich hast wäre ich sehr dankbar.

Code:
Content-type: text/html;     name="BEX_SERVER01_00369.htm"Content-Disposition: attachment; filename="BEX_SERVER01_00369.htm"Content-ID: <[email protected]>Content-transfer-encoding: base64//48AEgAVABNAEwAPgA8AEgARQBBAEQAPgANAAoAPABNAEUAVABBACAASABUAFQAUAAtAEUAUQBVAEkAVgA9ACcATQBTAFQAaABlAG0AZQBDAG8AbQBwAGEAdABpAGIAbABlACcAIABDAE8ATgBUAEUATgBUAD0AJwB5AGUAcwAnAD4APAAvAE0ARQBUAEEAPgANAAoADQAKADwAVABJAFQATABFAD4AQQB1AGYAdAByAGEAZwBzAHAAcgBvAHQAbwBrAG8AbABsADoAIABCAEUAWABfAFMARQBSAFYARQBSADAAMQBfADAAMAAzADYAOQAuAHgAbQBsADwALwBUAEkAVABMAEUAPgANAAoAPABTAFQAWQBMAEUAIAB0AHkAcABlAD0AJwB0AGUAeAB0AC8AYwBzAHMAJwA+AA0ACgAuAEgARQBMAEwATwAgAHsAZABpAHMAcABsAGEAeQA6AG4AbwBuAGUAfQANAAoAQgBPAEQAWQAgAHsAIABmAG8AbgB0AC0AZgBhAG0AaQBsAHkAOgBBAHIAaQBhAGwAOwAgAGYAbwBuAHQALQBzAGkAegBlADoAOQBwAHQAIAB9AAoAIAAgACAAIAAgACAAIAAgAFAAUgBFAC4AVwBXAF8ASQBOAEQARQBOAFQAIAB7AC



Vielen Dank
 
  • Email Attachment auswerten C# Beitrag #8
U

UnimatrixZero

Bekanntes Mitglied
Dabei seit
27.06.2001
Beiträge
645
Reaktionspunkte
0
Die // Am Anfang und == am Ende gehören zum Base64-Teil. Den kannst Du mit buffer = Convert.FromBase64String("...") in ein Byte-Array wandeln. Raus kommt allerdings kein ASCII, sondern Unicode. Mit System.Text.Encoding.Unicode.GetString(buffer); hast Du dann den korrekten String.
 
  • Email Attachment auswerten C# Beitrag #9
N

Nastarowje

Bekanntes Mitglied
Dabei seit
19.04.1999
Beiträge
378
Reaktionspunkte
0
Ort
Erfurt / Thüringen
Vielen lieben Dank, werde morgen früh gleich testen. Jetzt weiss ich auch, warum ich mir das in keinen Schreibprogramm anschauen konnte :-D


hat mir sehr geholfen :victory:
 
  • Email Attachment auswerten C# Beitrag #10
N

Nastarowje

Bekanntes Mitglied
Dabei seit
19.04.1999
Beiträge
378
Reaktionspunkte
0
Ort
Erfurt / Thüringen
Sehr gut - hat alles geklappt. Vielen Dank nochmal.

Sind die Base64 Strings die ich decodiere generell Unicode oder ist auch Ascii dabei? Wie kann ich das unterscheiden? Was muss ich aus der Mail auslesen?


Danke
 
  • Email Attachment auswerten C# Beitrag #11
U

UnimatrixZero

Bekanntes Mitglied
Dabei seit
27.06.2001
Beiträge
645
Reaktionspunkte
0
In Base64 kannst Du alles kodieren was Du willst. In dem Fall "Content-type: text/html". Daß da 16-Bit-Unicode verwendet wird, ist vermutlich eine Microsoft-Unsitte. Kannst Du aber einfach erkennen, da Unicode-Strings meistens einen Prolog haben. Die ersten beiden Zeichen sind entweder 0xFF 0xFE oder 0xFE 0xFF. Die Reihenfolge gibt die Endianess an. Das sollte der Decoder aber automatisch erkennen.
 
  • Email Attachment auswerten C# Beitrag #12
N

Nastarowje

Bekanntes Mitglied
Dabei seit
19.04.1999
Beiträge
378
Reaktionspunkte
0
Ort
Erfurt / Thüringen
Hi, Danke

dann weiss ich jetzt wo die 2 Schrägstriche herkommen. Wenn ich mir die ersten 2 Byte anschaue - siehe unten sieht man FF und FE

das sind genau diese beiden
 
Thema:

Email Attachment auswerten C#

ANGEBOTE & SPONSOREN

https://www.mofapower.de/

Statistik des Forums

Themen
213.179
Beiträge
1.579.172
Mitglieder
55.878
Neuestes Mitglied
Satan666
Oben