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 ...
¿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.
La herramienta de registro de ASP.NET IIS puede hacer eso por usted. Solo tienes que escribir una sola línea. Consulte http://odetocode.com/blogs/scott/archive/2006/01/08/encrypting-custom-configuration-sections.aspx .
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.