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.
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:
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%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?
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
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.
Tags und Links c#