La meilleure façon d’envoyer un e-mail à partir d’une application .NET ?

StackOverflow https://stackoverflow.com/questions/57919

  •  09-06-2019
  •  | 
  •  

Question

Je travaille sur une application Windows Forms (.NET 3.5) dotée d'un gestionnaire d'exceptions intégré pour intercepter toutes les exceptions (à Dieu ne plaise) qui pourraient survenir.J'aimerais que le gestionnaire d'exceptions puisse inviter l'utilisateur à cliquer sur un Envoyer un rapport d'erreur bouton, ce qui amènerait alors l'application à envoyer un e-mail à mon adresse e-mail FogBugz.

Quelle est la meilleure façon de procéder et y a-t-il des « pièges » à surveiller ?

Était-ce utile?

La solution

Vous souhaiterez utiliser la classe SmtpClient comme indiqué ici.
Il n’y a pas de piège : envoyer des e-mails est aussi simple que possible.

Autres conseils

Vous ne devriez pas avoir à vous soucier des informations d'identification du client et utilisez simplement SmtpClient comme suggéré par Esteban.Vous aurez besoin que l'utilisateur fournisse une URL de serveur Smtp valide lors de la configuration, mais la plupart des FAI autorisent le smtp anonyme à condition que vous soyez sur leur réseau (l'un de leurs clients) - tant que l'utilisateur saisit l'URL du serveur smptp de son FAI, alors la plupart les gens n'auraient aucun problème.

Note:Il existe une section prédéfinie du fichier .config pour stocker les options de configuration de l'objet SmtpClient.Si vous y définissez les paramètres, vous n'avez pas besoin de définir explicitement quoi que ce soit dans votre code lors de l'envoi d'un e-mail.Un exemple de section est ci-dessous :

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

Le nom d'utilisateur et le mot de passe sont facultatifs.Intellisense fonctionne pour ces parties du fichier de configuration.

Modifier:légère correction à mon exemple de code.

Dans un environnement contrôlé, utiliser SmtpClient serait la réponse.Mais sur la machine d'un utilisateur, vous auriez besoin d'un serveur SMTP pour envoyer.

Vous pouvez demander à l'utilisateur ses informations d'identification SMTP, mais je pense que cela ne serait pas pratique dans votre cas.En tant qu'utilisateur, je ne voudrais pas fournir mes informations d'identification SMTP à une application aléatoire (pensez au SPAM).Vous ne souhaitez pas non plus coder en dur vos propres informations d'identification SMTP dans l'application, il serait trivial pour un utilisateur malveillant de renifler ces informations d'identification et d'utiliser votre serveur pour envoyer du SPAM.

Idéalement, vous pourriez utiliser l'agent de messagerie de l'utilisateur pour envoyer l'e-mail.Je pensais que vous pourriez formuler et exécuter un mailto :URL, mais je ne sais pas si vous seriez en mesure de spécifier le corps ou les pièces jointes du message.

Vous avez mentionné que vous utilisez Fogbugz.

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

Il existe des exemples de code, je pense, dans votre répertoire d'installation FB.J'ai vérifié auprès de Michael Pryor concernant :licence et il a dit que c'était bien d'utiliser leur code, mais YMMV, donc je vérifierais.

Cela constitue un bon point de départ.

Vous voudrez peut-être également consulter le tiers aspNetEmail bibliothèque, qui a de nombreuses fonctionnalités utiles à offrir au-dessus de ce que System.Net.Mail vous offre.

Vous souhaiterez utiliser la classe SmtpClient comme indiqué ici.Il n’y a pas de piège : envoyer des e-mails est aussi simple que possible.

Un vaste FAQ System.Net.Mail est situé ici.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top