7 Stimmen

Wie sende ich am besten eine E-Mail aus einer .NET-Anwendung?

Ich arbeite an einer Windows Forms (.NET 3.5) Anwendung, die einen eingebauten Exception-Handler hat, um alle (Gott bewahre) Ausnahmen abzufangen, die auftreten können. Ich möchte, dass der Exception-Handler in der Lage sein, den Benutzer auffordern, eine Send Error Report Taste, was dann dazu führt, dass die App eine E-Mail an meine FogBugz-E-Mail-Adresse sendet.

Wie lässt sich dies am besten bewerkstelligen, und gibt es irgendwelche Stolpersteine, auf die man achten sollte?

6voto

Dr8k Punkte 1088

Sie sollten sich keine Gedanken über Client-Anmeldeinformationen machen müssen und einfach den SmtpClient verwenden, wie von Esteban vorgeschlagen. Der Benutzer muss bei der Konfiguration eine gültige Smtp-Server-URL angeben, aber die meisten ISPs erlauben anonymes Smtp, sofern Sie sich in ihrem Netzwerk befinden (einer ihrer Clients) - solange der Benutzer die URL für den Smtp-Server seines ISPs eingibt, haben die meisten Leute keine Probleme.

Hinweis: Es gibt einen vordefinierten Abschnitt in der .config-Datei für die Speicherung der Konfigurationsoptionen für das SmtpClient-Objekt. Wenn Sie die Einstellungen dort ablegen, müssen Sie beim Senden einer E-Mail nichts explizit in Ihrem Code einstellen. Ein Beispiel für diesen Abschnitt finden Sie unten:

<system.net>
   <mailSettings>
      <smtp deliveryMethod="Network" from="stuff@somewhere.com.au">
         <network host="smtp.somewhere.com.au" />
      </smtp>
   </mailSettings>
</system.net>

Die Angabe des Benutzernamens und des Passworts ist optional. Intellisense funktioniert für diese Teile der Konfigurationsdatei.

Edit: Kleine Korrektur an meinem Code-Beispiel.

3voto

Esteban Araya Punkte 28454

Sie sollten die Klasse SmtpClient wie folgt verwenden aquí .
Es gibt keine Probleme - das Versenden von E-Mails ist so einfach wie nur möglich.

2voto

Brannon Punkte 24857

In einer kontrollierten Umgebung, SmtpClient zu verwenden, wäre die Antwort. Aber auf dem Rechner eines Benutzers benötigen Sie einen SMTP-Server, um die Nachricht zu versenden.

Sie könnten den Benutzer nach seinen SMTP-Zugangsdaten fragen, aber ich denke, das wäre in Ihrem Fall unpraktisch. Als Benutzer würde ich meine SMTP-Anmeldedaten nicht an eine zufällige Anwendung weitergeben wollen (denken Sie an SPAM). Sie möchten auch nicht Ihre eigenen SMTP-Zugangsdaten in die Anwendung fest einprogrammieren, da es für einen böswilligen Benutzer trivial wäre, diese Zugangsdaten auszuspähen und Ihren Server zum Versenden von SPAM zu verwenden.

Im Idealfall können Sie den Mail-Agenten des Benutzers zum Senden der E-Mail verwenden. Ich dachte, Sie könnten eine mailto:-URL formulieren und ausführen, aber ich bin mir nicht sicher, ob Sie in der Lage wären, den Text oder Anhänge für die Nachricht anzugeben.

2voto

Byron Ross Punkte 1535

Sie haben erwähnt, dass Sie Fogbugz verwenden.

Versuchen Sie http://www.fogcreek.com/FogBugz/docs/60/topics/customers/BugzScout.html?isl=59722 ou http://www.fogcreek.com/FogBugz/blog/post/C-wrapper-for-the-FogBugz-API.aspx?isl=59722

Es gibt einige Beispielcodes, ich glaube in Ihrem FB-Installationsverzeichnis. Ich habe mit Michael Pryor re überprüft: Lizenzierung und er sagte, es war in Ordnung, ihren Code zu verwenden, aber YMMV, so würde ich überprüfen.

Sie bietet einen guten Ausgangspunkt.

1voto

Eric Z Beard Punkte 36325

Vielleicht möchten Sie auch die 3rd party aspNetEmail Bibliothek, die viele nützliche Funktionen bietet, die über das hinausgehen, was Ihnen System.Net.Mail bietet.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X