Ja, das Speichern des Kennworts im Klartext in Ihrer Anwendung ist nicht sicher. Tu es nicht!
Stattdessen sollten Sie das Passwort speichern in Ihrer App.config Datei verschlüsselt (oder irgendwo anders in einer Konfigurationsdatei, machine.config zum Beispiel):
Encrypting and Decrypting ApplicationConfigSections
Alternativ können Sie Fragen Sie den Benutzer zur Laufzeit nach den Anmeldeinformationen.
Wenn Sie nicht explizit ein Passwort angeben möchten, können Sie sich über die Windows-Authentifizierung des aktuell angemeldeten Benutzers authentifizieren. Dazu können Sie SmtpClient.UseDefaultCredentials
zum Senden der Mail verwenden. Dies funktioniert natürlich nur, wenn der SmtpServer die Windows-Anmeldedaten des Benutzers erkennt.
Wenn Sie von Man-in-the-Middle-Angriffen und Paket sicher sein wollen, Sniffing, sollten Sie SSL verwenden, um die Authentifizierungsdaten zu übertragen. Sie können dies tun, indem Sie enabling SSL in the configuration oder nur die Eigenschaft selbst einstellen: SmtpClient.EnableSsl
. (.NET> = 4.0)
Sie müssen das Kennwort verschlüsseln, da jede einfache Zeichenfolge mit Tools wie Reflector einfach angezeigt werden kann. Ich würde entweder einen Benutzer auffordern oder ein verschlüsseltes Passwort in einer Konfigurationsdatei speichern. –
Erstellen Sie ein ** Dienstkonto **, das E-Mails senden kann (aber nicht viel mehr) und die Anmeldeinformationen verschlüsselt? – SpaceBison