working una transporte servidor segura requiere puede not net_io_connectionclosed example escribir datos conexión cliente autenticó c# email gmail

una - smtpclient c# example



Envío de correo electrónico sin nombre de usuario y contraseña de codificación (8)

Almacene el nombre de usuario y la contraseña en un archivo de configuración ...

Usando Configuraciones en C #

¿Hay alguna forma de enviar un correo electrónico desde C # sin la codificación manual de mi nombre de usuario y contraseña usando Gmail SMTP?

Sé que hay algún software que puede ver el código fuente, y realmente no me gusta que vean mi contraseña de Gmail.


Externalice la configuración específica del entorno, especialmente la configuración sensible, como las credenciales, en un archivo de configuración.


Haga una POST HTTP a su servidor web, que enviará el correo electrónico en nombre de la aplicación. Probablemente necesite alguna forma de autenticar que el POST realmente proviene de su aplicación, por lo que necesitará codificar una clave para la aplicación, pero como tiene el control de la parte del servidor, puede bloquear las claves que se consideren mal utilizadas. .

Alternativamente, crea una cuenta de Gmail secundaria desechable, que utilizas para enviar correos electrónicos a tu cuenta principal, que la reenviará al destinatario deseado.

Sin embargo, todo esto me parece una tontería, en última instancia, la mejor solución depende de lo que pretendas hacer con el envío de los correos electrónicos.



No debe usar su nombre de usuario y contraseña en una aplicación que alguien más esté ejecutando.

Modifique la aplicación para que solicite al usuario sus credenciales de correo electrónico y las use.

Esto tendrá que ser almacenado en un archivo de configuración y aún puede ser leído por otra persona a menos que almacene la contraseña encriptada.


Primera opción: almacenar nombre de usuario y contraseña en config

using System.Net.Mail; var fromEmail = ConfigurationSettings.AppSettings[ "mail" ]; var fromPassword = ConfigurationSettings.AppSettings[ "pass" ]; var fromAddress = new MailAddress(fromEmail, "From Name"); var toAddress = new MailAddress("[email protected]", "To Name"); const string subject = "Subject"; const string body = "Body"; var smtp = new SmtpClient { Host = "smtp.gmail.com", Port = 587, EnableSsl = true, DeliveryMethod = SmtpDeliveryMethod.Network, UseDefaultCredentials = false, Credentials = new NetworkCredential(fromAddress.Address, fromPassword) }; using (var message = new MailMessage(fromAddress, toAddress) { Subject = subject, Body = body }) { smtp.Send(message); }

en app.config:

<appSettings> <add key="mail" value="[email protected]" /> <add key="pass" value="password" /> </appSettings>

También puede crear un archivo de configuración segura cifrándolo.

Segunda opción: leer nombre de usuario y contraseña del usuario


Si está ejecutando en ASP.NET, puede encriptar secciones del archivo web.config usando la herramienta aspnet_regiis.exe .

Si está ejecutando una aplicación normal con un archivo app.config, puede cifrar todo el archivo, o solo partes del archivo, como lo describe Jon Galloway en su entrada de blog "Encriptar contraseñas en un archivo .config de .NET". .

Una vez que tenga esto en el archivo de configuración, puede usar la clase SecureString para obtener sus opciones de nombre de usuario / contraseña del archivo de configuración y mantenerlas encriptadas en la memoria hasta el último momento absoluto en que sean necesarias / usadas.


Investigué un poco desde mi comentario, así que ahora me siento mejor respondiendo.

Puede usar un archivo de configuración que se puede configurar usando estas Instrucciones

A continuación, puede pasar la información para las variables que desee. Esto los almacenará fuera de su programa, aunque todavía están escritos en texto plano.

Un ejemplo de un archivo de configuración es similar a esto.

<?xml version ="1.0"?> </configuration> </appSettings> <add key="password" value="Jdas7#8SL" /> </appSettings> </configuration>

En cuanto a obtener esa información en su programa, aquí hay un enlace que debería servir como un buen ejemplo.

C # usando configuraciones de configuración

Si le preocupa la seguridad y no desea que se escriba en ningún lugar, debe hacerlo para que pueda ingresarla personalmente en todo momento. O puede traducir la contraseña usando alguna fórmula como se menciona en mi comentario. Pero como concluyó allí, todavía estás en un aprieto.

Buena suerte.