Senden Sie auf der Festplatte gespeicherte eml-Dateien

8

Ich erstelle Emls und speichere sie in einem Verzeichnis, indem ich die Prozedur über hier . Ich möchte wissen, wie man diese eml-Dateien sendet? Ich habe versucht, das Objekt der SMTPClient-Klasse zu verwenden, aber das MailMessage-Objekt als Parameter verwendet und ich konnte kein Objekt vom Typ MailMessage mit diesen gespeicherten eml-Dateien finden und erstellen.

    
UJ. 20.08.2009, 13:14
quelle

6 Antworten

7

Das korrekte Laden einer EML-Datei ist nicht so einfach wie es aussieht. Sie können eine Implementierung in 95% Fällen innerhalb weniger Tage schreiben. Verbleibende 5% würden mindestens einige Monate dauern ;-). Ich weiß, ob ich an der Entwicklung beteiligt war.

Berücksichtigen Sie folgende Faktoren:

  • Unicode-E-Mails
  • Sprachen von rechts nach links
  • Korrektur von fehlerhaften EML-Dateien, die durch bekannte Fehler in gängigen Mail-Clients und -Servern verursacht wurden
  • Umgang mit S / MIME (verschlüsselte und signierte E-Mail-Nachrichten)
  • Umgang mit mehreren Methoden zum Kodieren von Anhängen
  • Umgang mit eingebetteten Bildern und Stylesheets, die in HTML-E-Mails eingebettet sind
  • stellt sicher, dass es eine MIME-Folternachricht von Mike Crispin richtig analysiert (Mitautor von Mime und IMAP RFCs)
  • stellt sicher, dass eine fehlerhafte Nachricht nicht zum Pufferüberlauf oder zum Absturz anderer Anwendungen führt
  • Umgang mit hierarchischen Nachrichten (Nachricht mit angehängten Nachrichten)
  • stellt sicher, dass es sehr große E-Mails richtig behandelt

Das Entwickeln eines solchen Parsers benötigt Jahre und ein kontinuierliches Feedback für seine Benutzer. Derzeit ist kein solcher Parser im .NET Framework enthalten. Bis es sich ändert, würde ich einen MIME-Parser von einem etablierten Anbieter bekommen.

Der folgende Code verwendet unsere Rebex Secure Mail-Komponente , aber ich bin sicher, dass ähnliche Aufgaben repliziert werden können leicht mit Komponenten anderer Hersteller.

Der Code basiert auf dem E-Mail-Nachrichten-Lernprogramm .

%Vor%     
Martin Vobr 27.01.2010 17:03
quelle
6

Verwenden Sie EMLReader , um Daten von .eml abzurufen Datei. Es enthält alle Daten, die Sie zum Erstellen eines MailMessage -Objekts wie From, To, Subject, Body & amp; eine ganze Menge mehr.

%Vor%     
HuBeZa 20.08.2009 15:39
quelle
1

Tu, was ich getan habe ... gib auf.

Der Aufbau des MailMessage-Objekts scheint der Fokus zu sein, ich habe auch hier ähnliche Fragen ... Wie sende ich? eine E-Mail, wenn ich sie schon als String habe?

Nach dem, was ich gesehen habe, ist der einfachste Weg, einen rohen Socket zu verwenden, um den gesamten Inhalt der .eml-Datei auf den Mail-Server zu laden und den Mail-Server die harten Sachen wie von, zu erkennen Betreff, ect durch Parsing der E-Mail mit seiner Engine.

Das einzige Problem ... RFC 821 ... so ein Schmerz, ich versuche, einen sauberen Weg zu finden, dies zu tun und Mail schon in der Mailbox schnell zu lesen.

BEARBEITEN:

Ich habe eine saubere Lösung gefunden und in meinem Thread behandelt:)

Wie sende ich eine E-Mail, wenn ich sie bereits als Zeichenfolge habe?

    
War 23.01.2012 17:06
quelle
1

Wenn Sie ein Microsoft-Shop sind und sowieso einen Exchange-Server haben, gibt es eine andere Lösung, die viel einfacher ist als alles, was hier vorgeschlagen wird:

Jeder Exchange-Server verfügt über ein Abholverzeichnis, das standardmäßig konfiguriert ist.
Standardmäßig ist es %ExchangeInstallPath%TransportRoles\Pickup .

Sie kopieren einfach die .eml Dateien in dieses Verzeichnis und Exchange sendet automatisch die Mails.

Lesen Sie diesen TechNet-Artikel für weitere Informationen:
Abholverzeichnis und Replay-Verzeichnis

    
Christian Specht 02.10.2015 19:56
quelle
0

Für die Aufzeichnungen:

Schreiben Sie in der Nuget Packager-Konsole:

%Vor%

Dann in Ihrem Code:

%Vor%     
mmaty 16.07.2015 10:49
quelle
0

Wie andere gezeigt haben, ist EML einfach kein guter Weg, um eine Mail-Nachricht zu bearbeiten. Sie könnten besser dran sein, indem Sie Ihre E-Mails in einem anderen Format speichern. Obwohl es im .Net-Framework mehrere Serialisierungs-Engines gibt, um jedes Objekt zu serialisieren, könnten Sie auch in Betracht ziehen, die Komponenten Ihrer Mails, wie Adressen, Körper, Dateien, die in base64 angehängt werden, in einer eigenen XML-Datei zu speichern / p>

Unten finden Sie ein Beispiel für den Einstieg:

%Vor%

Ein weiterer Vorteil wäre, dass Sie, anders als beim Erstellen von EML, den smtpClient nicht benötigen, um die Konzept-Mail-Dateien zu erstellen.

Xml ist extrem einfach in C # zu erstellen und zu parsen.

Sie haben die Gründe für das Speichern von EML nicht angegeben. Wenn Langzeitarchivierung ein Ziel wäre, könnte XML einen Vorteil haben.

    
Roland 10.06.2016 10:18
quelle

Tags und Links