viernes, 10 de abril de 2009

Enviar Correo Electrónico con CSharp.net

Es posible enviar un correo electrónico mediante C#, mediante las clases System.Net, System.Net.Mail y System.Net.Mime

En el siguiente ejemplo se muestra un formulario que envia un simple correo electrónico a través del Servidor SMTP de GMAIL y se le adjunta una imagen ".jpg"
Clases que se deben de declarar:
using System.Net;
using System.Net.Mail;
using System.Net.Mime;
//Se crea un Objeto llamado "msg" de la
clase
"MailMessage"

System.Net.Mail.MailMessage msg = new
System.Net.Mail.MailMessage();


//Se establece el destinatario

msg.To.Add("adrianmevi@hotmail.com");


/*Se establece el remitente, asi como el nombre que aparecerá en la

bandeja de entrada, así como el formato de codificación
*/

msg.From = new MailAddress("adrianmevi@gmail.com",
"Soy adry", System.Text.Encoding.UTF8);


//Se establece el asunto del mail

msg.Subject = "Prueba de envío de correo desde Cuenta Gmail en c# by
adryan";


//Formato de codificación del Asunto

msg.SubjectEncoding =
System.Text.Encoding.UTF8;


//Se establece el cuerpo del mail
msg.Body
= "Si veo este correo en una cuenta mía esque si se pudo jjejejejej !!!! by
adryan";


//Se establece la
codificación del Cuerpo

msg.BodyEncoding =
System.Text.Encoding.Unicode;


//Se indica si al cuerpo del mail, se interpretara como código
HTMl

msg.IsBodyHtml =
false;


//Se establece la cadena de texto con la ubicación del archivo a
adjuntar
string
file =
"d:/foto.jpg";

//Se adjunta el archivo

Attachment data = new Attachment(file, MediaTypeNames.Application.Octet);

ContentDisposition disposition = data.ContentDisposition;

disposition.CreationDate = System.IO.File.GetCreationTime(file);

disposition.ModificationDate = System.IO.File.GetLastWriteTime(file);

disposition.ReadDate = System.IO.File.GetLastAccessTime(file);

msg.Attachments.Add(data);


//Se prepara el envio del mail creando un objeto de tipo
SmtpClient

SmtpClient client = new
SmtpClient();


//Se establecen las credenciales para enviar el mail, muy importante
autentificarse con la cuenta de correo y la contraseña

client.Credentials = new System.Net.NetworkCredential("adrianmevi@gmail.com",
"*************");


//Se establece el puerto de envio

client.Port =
587;


//Se establece el servidor SMTP, en este caso GMAIL

client.Host =
"smtp.gmail.com";

//Seguridad SSL si o
no

client.EnableSsl = true;


//Se envia el Mail controlando la
ecepción

try

{

client.Send(msg);

}
catch
(System.Net.Mail.SmtpException
ex)

{

MessageBox.Show(ex.Message);

}
Este código puede ir en el evento clic de un botón, en el evento load de un form o en donde se requiera colocarlo.
Como se menciono antes, es necesario contar con las clases indicadas, así como el archivo a adjuntar. Acerca de las credenciales, es importante tener una cuenta de correo electrónico en el cual podamos utilizar su servidor SMTP. GMAIL lo permite, pero parece ser que Hotmail no. Habría que probar con algún otro servidor de correo, como sería nuestro proveedor de internet, el del trabajo, etc.

domingo, 5 de abril de 2009

Mostrar un MessageBox en una página ASP.net

Si es posible mostrar un MessageBox al estilo de un Form de Windows, el único inconveniente esque el mensaje aparece como un elemento externo, si no me entiendes hasta este momento lo entenderás al fina, los pasos son sencillos y aquí te lo pongo (Estos pasos que coloco son mi lógica de programación si alguien puede mejorarlo y lo publica en otro sitio de internet estaría muy agradecido que como referencia coloque mi dirección web).

Antes que nada se supone que ya saben crear un nuevo sitio en Visual Studio 2005 y que ya se tiene agregado un form por lo menos el "Default.aspx".

Se inserta un ASPBUTTON dentro del form (este es solo un ejemplo sencillo) le configuramos las propiedaades que nosotros queramos, yo le cambie el text a "Mostrar Mensaje" y el id del botón a "btnMostrarMensaje".

Le damos clic derecho en el explorador de soluciones y elegimos la opción "Agregar Referencia".

Nos aparece la siguiente Ventana; y elegimos el ensamblado "System.Windows.Forms" que es el contiene el espacio de nombres (namespace) System.Windows.Forms el utilizado en los programas de "WindowsForms", cosa muy diferente en los programas con ASP.net que son "WebForms".

Lo seleccionamos y damos clic en "Aceptar", hasta ahora solo hemos agregado el ensamblado.
En la página de código agregamos el "Espacio de Nombres" "System.Windows.Forms" declarándolo en el encabezado de Namespaces.

En el evento "clic" del Botón escribimos el código correspondiente para mostrar un mensaje con el objeto "Message" y su método "Show()" este ejemplo está en c#.net pero es lo mismo para VB.net.

Listo!!!, ya tienes tu mensaje emergente de Windows y NO es un JavaScript!!!, ejecútalo y compruebalo, te aparederá de la siguiente forma:
¿Ven el inconveniente? El mesaje ocupa un lugar en la barra de tareas independiente de la página. Si alguien lo mejora que me lo haga saber, saludos a todos.