Wie sende ich E-Mails aus einem Programm, ohne dass ein bereits vorhandenes Konto verwendet wird?

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

  •  09-06-2019
  •  | 
  •  

Frage

Ich möchte, dass mein Programm mir Fehlerberichte per E-Mail senden kann.Wie kann ich dies tun, ohne einen Benutzernamen/ein Passwort/einen SMTP-Server usw. fest zu codieren?in den Code?(Dadurch könnten Benutzer das Programm dekompilieren und dieses E-Mail-Konto übernehmen.)

Mir wurde gesagt, dass man mit Telneting auf Port 25 einiges machen könnte, aber ich bin mir über die Details noch nicht ganz im Klaren.Die meisten Codefragmente bei Google gehen davon aus, dass Sie bereits über ein Konto verfügen, was in dieser Situation nicht funktioniert.

Ich verwende .NET v3.5 (insbesondere C#), aber ich kann mir vorstellen, dass die Ideen in den meisten Sprachen ähnlich genug sind.Solange Sie wissen, dass ich das für eine Offline-App mache und mir keinen PHP-Code oder ähnliches zur Verfügung stelle, sollte alles in Ordnung sein.

War es hilfreich?

Lösung

Solange Ihr Konto auf gmail.com ist, richten Sie es ein gmail-smtp-in.l.google.com als ausgehenden SMTP-Server in Ihrem Programm.Sie müssen kein Passwort angeben, um E-Mails an Gmail-Konten zu senden, wenn Sie diesen Server verwenden.

Andere Tipps

Ich würde einen Webservice erstellen, zu dem ich eine Verbindung herstellen kann.Dieser Webservice sollte die E-Mail basierend auf den von Ihrem Programm bereitgestellten Daten senden.Alle sensiblen Zugangsdaten werden auf der Webservice-Seite gespeichert, was die Sicherheit erhöht.

Wenn das Programm Ihnen direkt eine E-Mail senden muss, muss es diese Informationen irgendwie erhalten, damit ein entschlossener Angreifer auch an diese Informationen gelangen kann.

Haben Sie darüber nachgedacht, irgendwo ein einfaches http-Formular oder einen Webdienst zu hosten, damit Sie die benötigten Informationen dort aus der Anwendung heraus veröffentlichen können (keine Authentifizierung erforderlich) und sie entweder speichern, um sie später manuell anzusehen, oder die E-Mail von diesem Server aus senden können?

Ich denke, der beste Plan wäre, die Fehlerinformationen an einen Dienst (im einfachen Fall ein Webformular) zu übermitteln, der unter Ihrer Kontrolle läuft und der dann eine E-Mail senden (oder sie auf andere geeignete Weise protokollieren) könnte.

Wenn davon ausgegangen wird, dass das Versenden der E-Mail für den Endbenutzer von Vorteil ist, besteht eine andere Option darin, den Benutzer seinen eigenen SMTP-Server (und ggf. Benutzernamen/Passwort) eingeben zu lassen. Auf Unix-Systemen können Sie möglicherweise einfach sendmail verwenden und sich darauf verlassen Der Benutzer muss es korrekt konfigurieren.Ich habe früher an einem System gearbeitet, das diesen Ansatz nutzte, um den Benutzern Berichte über die geplanten Aufgaben des Systems zu senden, und das funktionierte ganz gut.

Sie müssen lediglich den SMTP-Server des ISP kennen, den Sie verwenden, denn wenn Sie den SMTP-Server Ihres eigenen ISP verwenden, gelten Sie nicht als Verursacher von Mail-Relay-Spam, sodass Sie ohne Authentifizierung durchgehen können.

Leider ist es nicht immer möglich, diese Informationen einfach zu erhalten ODER es gibt eine kleine Ausnahme, die es Ihnen nicht ermöglicht, sich anonym anzumelden, wie wenn Sie Exchange in einem Unternehmen verwenden ...

Zuerst habe ich darüber nachgedacht, Ihre Informationen zu verschlüsseln und zur Laufzeit zu entschlüsseln, aber durch Ausspähen der Netzwerkkarte wären sie immer noch verfügbar.Sie könnten dies jedoch mit einem Webservice irgendwo kombinieren, der die Entschlüsselung und den E-Mail-Versand für Sie übernimmt (oder Informationen direkt an den Webservice sendet, je nachdem, was Sie bevorzugen), wie bereits von anderen vorgeschlagen.

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);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top