Comment faire pour envoyer un email à partir d'un programme _without_ à l'aide d'un compte préexistant?

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

  •  09-06-2019
  •  | 
  •  

Question

J'aimerais que mon programme pour être en mesure de m'envoyer des rapports d'erreur.Comment puis-je le faire sans codage en dur des un nom d'utilisateur/mot de passe/SMTP server/etc.dans le code?(Cela permettrait aux utilisateurs de décompiler le programme et prendre le contrôle de ce compte de messagerie.)

J'ai dit que vous pourriez faire quelque chose avec telneting sur le port 25, mais je suis très floue sur les détails.La plupart des extraits de code sur Google supposons que vous disposez d'un compte préexistant, qui ne fonctionne pas dans cette situation.

Je suis à l'aide .NET v3.5 (C# en particulier), mais j'imagine que les idées sont assez similaires dans la plupart des langues.Aussi longtemps que vous le savez, je suis en train de faire ce pour une application hors ligne, et de ne pas me fournir le code PHP ou quelque chose, on doit être fine.

Était-ce utile?

La solution

Tant que votre compte est sur gmail.com, set up gmail-smtp-in.l.google.com comme sortant SMTP-server dans votre programme.Vous n'avez pas besoin de fournir un mot de passe pour envoyer un courriel à gmail-comptes lors de l'utilisation de ce serveur.

Autres conseils

Je voudrais créer un webservice pour vous connecter.Ce webservice doit envoyer l'e-mail sur la base des données de votre programme.Tous les sensibles de données access est conservé sur le webservice côté, il est donc plus sûr.

Si le programme a de vous contacter directement, il a d'obtenir que les informations de quelque sorte, alors un attaquant déterminé pourrait obtenir ces informations.

Avez-vous envisagé d'accueillir un http simple formulaire web ou service, quelque part, de sorte que vous pouvez poster les informations dont vous avez besoin là de l'application (aucune authentification requise), et enregistrer manuellement les regarder plus tard, ou envoyer un courriel à partir de ce serveur?

Je pense que le meilleur plan serait de soumettre les informations d'erreur à certains de service (dans le cas simple d'un formulaire web) en cours d'exécution sous votre contrôle, qui pourrait alors envoyer un courrier électronique (ou de l'enregistrer à un autre moyen approprié).

Si l'envoi de l'e-mail est supposé être un avantage pour l'utilisateur final, une autre option serait d'avoir à l'utilisateur d'entrer son propre serveur SMTP (et nom d'utilisateur / mot de passe si nécessaire) - Sur les systèmes Unix, vous pouvez peut-être juste utiliser sendmail et s'appuient sur l'utilisateur de l'avoir correctement configuré.J'ai l'habitude de travailler sur un système qui a utilisé cette approche pour envoyer à l'utilisateur des rapports du système de tâches planifiées, et qui fonctionnait très bien.

Ce que vous devez faire est de connaître le serveur SMTP du fournisseur d'accès que vous utilisez, car lorsque vous utilisez le serveur SMTP de votre fournisseur d'accès, vous ne sont pas considérés comme faisant mail-relais de spam, alors vous pouvez aller à travers sans aucune authentification.

Malheureusement, il n'est pas toujours possible d'obtenir cette information facilement, OU pour une petite exception qui ne les laissez pas vous connecter de manière anonyme, comme lorsque vous êtes à l'aide de l'Échange dans une société...

J'ai d'abord pensé le cryptage de vos informations et de les déchiffrer en cours d'exécution, mais il serait encore disponible en sniffant le réseau de la carte.Vous pouvez, toutefois, combiner cela avec un webservice quelque part qui ferait le déchiffrer et le publipostage pour vous (ou l'envoyer directement l'information au service web, qui jamais vous visez plutôt) comme déjà suggéré par d'autres.

MailMessage msg = new MailMessage("someone@foo.com", "someoneelse@bar.com");
msg.Subject = "Check it out!";
msg.Body = "Visit stackoverflow.com!";
SmtpClient client = new SmtpClient("some.smtp.server", 25);
client.Send(msg);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top