Exportar (0) Imprimir
Expandir todo
Este artículo proviene de un motor de traducción automática. Mueva el puntero sobre las frases del artículo para ver el texto original. Más información.
Traducción
Original

SmtpClient (Clase)

Permite a las aplicaciones enviar mensajes de correo electrónico mediante el protocolo SMTP (Protocolo simple de transferencia de correo).

System.Object
  System.Net.Mail.SmtpClient

Espacio de nombres:  System.Net.Mail
Ensamblado:  System (en System.dll)

public class SmtpClient : IDisposable

El tipo SmtpClient expone los siguientes miembros.

  NombreDescripción
Método públicoSmtpClient()Inicializa una nueva instancia de la clase SmtpClient usando la configuración del archivo de configuración.
Método públicoSmtpClient(String)Inicializa una nueva instancia de la clase SmtpClient que envía correo electrónico mediante el servidor SMTP especificado.
Método públicoSmtpClient(String, Int32)Inicializa una nueva instancia de la clase SmtpClient que envía correo electrónico mediante el servidor y el puerto SMTP especificados.
Arriba

  NombreDescripción
Propiedad públicaClientCertificatesEspecifique los certificados que deben utilizarse para establecer la conexión SSL (Secure Sockets Layer).
Propiedad públicaCredentialsObtiene o establece las credenciales utilizadas para autenticar al remitente.
Propiedad públicaDeliveryFormatObtiene o establece el formato de entrega utilizado por SmtpClient para enviar correo electrónico.
Propiedad públicaDeliveryMethodEspecifica la forma en que se controlarán los mensajes de correo electrónico salientes.
Propiedad públicaEnableSslEspecifique si el objeto SmtpClient utiliza SSL (Secure Sockets Layer) para cifrar la conexión.
Propiedad públicaHostObtiene o establece el nombre o la dirección IP del host que se utiliza para las transacciones SMTP.
Propiedad públicaPickupDirectoryLocationObtiene o establece la carpeta donde las aplicaciones guardan los mensajes de correo que el servidor SMTP local va a procesar.
Propiedad públicaPortObtiene o establece el puerto utilizado para las transacciones SMTP.
Propiedad públicaServicePointObtiene la conexión de red utilizada para transmitir el mensaje de correo electrónico.
Propiedad públicaTargetNameObtiene o establece el nombre del proveedor de servicios (SPN) que se utiliza para la autenticación cuando se usa la protección extendida.
Propiedad públicaTimeoutObtiene o establece un valor que especifica el intervalo de tiempo a partir del cual se considera que una llamada a Send sincrónica excede el tiempo de espera.
Propiedad públicaUseDefaultCredentialsObtiene o establece un valor Boolean que controla si se envían DefaultCredentials con las solicitudes.
Arriba

  NombreDescripción
Método públicoDispose()Envía un mensaje QUIT al servidor SMTP, finaliza correctamente la conexión TCP y libera todos los recursos usados por la instancia actual de la clase SmtpClient.
Método protegidoDispose(Boolean)Envía un mensaje QUIT al servidor SMTP, finaliza correctamente la conexión TCP, libera todos los recursos usados por la instancia actual de la clase SmtpClient y opcionalmente elimina los recursos administrados.
Método públicoEquals(Object)Determina si el objeto especificado es igual al objeto actual. (Se hereda de Object).
Método protegidoFinalize Permite que un objeto intente liberar recursos y realizar otras operaciones de limpieza antes de ser reclamado por la recolección de elementos no utilizados. (Se hereda de Object).
Método públicoGetHashCode Sirve como una función hash para un tipo en particular. (Se hereda de Object).
Método públicoGetType Obtiene el Type de la instancia actual. (Se hereda de Object).
Método protegidoMemberwiseClone Crea una copia superficial del Object actual. (Se hereda de Object).
Método protegidoOnSendCompletedGenera el evento SendCompleted.
Método públicoSend(MailMessage)Envía el mensaje especificado a un servidor SMTP para su entrega.
Método públicoSend(String, String, String, String)Envía el mensaje de correo electrónico especificado a un servidor SMTP para su entrega. El remitente del mensaje, los destinatarios, el asunto y el cuerpo del mensaje se especifican mediante objetos String.
Método públicoSendAsync(MailMessage, Object)Envía el mensaje de correo electrónico especificado a un servidor SMTP para su entrega. Este método no bloquea el subproceso que realiza la llamada y permite al llamador pasar un objeto al método que se invoca cuando termina la operación.
Método públicoSendAsync(String, String, String, String, Object)Envía un mensaje de correo electrónico a un servidor SMTP para su entrega. El remitente del mensaje, los destinatarios, el asunto y el cuerpo del mensaje se especifican mediante objetos String. Este método no bloquea el subproceso que realiza la llamada y permite al llamador pasar un objeto al método que se invoca cuando termina la operación.
Método públicoSendAsyncCancelCancela una operación asincrónica para enviar un mensaje de correo electrónico.
Método públicoSendMailAsync(MailMessage)Envía el mensaje especificado a un servidor SMTP para su entrega como una operación asincrónica.
Método públicoSendMailAsync(String, String, String, String)Envía el mensaje especificado a un servidor SMTP para su entrega como una operación asincrónica. . El remitente del mensaje, los destinatarios, el asunto y el cuerpo del mensaje se especifican mediante objetos String.
Método públicoToString Retorna una cadena que representa al objeto actual. (Se hereda de Object).
Arriba

  NombreDescripción
Evento públicoSendCompletedSe produce cuando finaliza una operación asincrónica de envío de correo electrónico.
Arriba

La clase SmtpClient se utiliza para enviar correo electrónico a un servidor SMTP para su entrega. El protocolo SMTP se define en el documento RFC 2821, que está disponible en http://www.ietf.org.

Las clases que se muestran en la siguiente tabla se utilizan para crear mensajes de correo electrónico que pueden enviarse mediante SmtpClient.

class

Descripción

Attachment

Representa los datos adjuntos. Esta clase le permite adjuntar archivos, secuencias o texto a un mensaje de correo electrónico.

MailAddress

Representa la dirección de correo electrónico del remitente y los destinatarios.

MailMessage

Representa un mensaje de correo electrónico.

Para crear y enviar un mensaje de correo electrónico mediante SmtpClient, deberá especificar la siguiente información:

  • El servidor host SMTP que utiliza para enviar los mensajes de correo electrónico. Vea las propiedades Host y Port.

  • Las credenciales para la autenticación, en caso de que el servidor SMTP las requiera. Vea la propiedad Credentials.

  • La dirección de correo electrónico del remitente. Vea los métodos Send y SendAsync que toman un parámetro from. Vea también la propiedad MailMessage.From.

  • La dirección o las direcciones de correo electrónico de los destinatarios. Vea los métodos Send y SendAsync que toman un parámetro recipient. Vea también la propiedad MailMessage.To.

  • El contenido del mensaje. Vea los métodos Send y SendAsync que toman un parámetro body. Vea también la propiedad MailMessage.Body.

Para incluir datos adjuntos en un mensaje de correo electrónico, deberá crear primero los datos adjuntos mediante la clase Attachment y, a continuación, agregarlos al mensaje mediante la propiedad MailMessage.Attachments. En función del lector del correo electrónico utilizado por los destinatarios y del tipo de archivo de los datos adjuntos, es posible que algunos destinatarios no puedan leer los datos adjuntos. Para los clientes que no puedan mostrar los datos adjuntos en su formato original, podrá especificar vistas alternativas mediante la propiedad MailMessage.AlternateViews.

Puede utilizar la aplicación o los archivos de configuración del equipo para especificar el host predeterminado, el puerto y los valores de las credenciales de todos los objetos SmtpClient. Para obtener más información, vea <mailSettings> (Elemento, Configuración de red).

Para enviar el mensaje de correo electrónico y efectuar un bloqueo mientas espera a que el correo electrónico se trasmita al servidor SMTP, utilice uno de los métodos Send sincrónicos. Para permitir que el subproceso principal de su programa siga ejecutándose mientras se transmite el correo electrónico, utilice uno de los métodos SendAsync asincrónicos. Cuando una operación SendAsync finaliza, se provoca el evento SendCompleted. Para recibir este evento, deberá agregar un delegado SendCompletedEventHandler al evento SendCompleted. El delegado SendCompletedEventHandler deberá hacer referencia a un método de devolución de llamada que controle la notificación de eventos SendCompleted. Para cancelar una transmisión de correo electrónico asincrónica, utilice el método SendAsyncCancel.

NotaNota

Si hay una transmisión de correo electrónico en curso y vuelve a llamar a SendAsync o Send, recibirá una excepción InvalidOperationException.

Se puede reutilizar la conexión establecida por la instancia actual de la clase SmtpClient en el servidor SMTP si una aplicación desea enviar varios mensajes al mismo servidor SMTP. Esto es particularmente útil cuando se usa autenticación o cifrado para establecer una conexión con el servidor SMTP. El proceso de autenticar y establecer una sesión de TLS pueden ser operaciones que consuman muchos recursos. Un requisito para restablecer una conexión para cada mensaje al enviar una cantidad grande de correo electrónico al mismo servidor SMTP pudiera tener un impacto significativo en rendimiento. Hay varias aplicaciones de correo electrónico de volumen alto que envían actualizaciones del estado del correo electrónico, distribuciones de boletín o alertas de correo electrónico. También muchas aplicaciones cliente de correo electrónico admiten un modo fuera de línea donde los usuarios pueden crear muchos mensajes de correo electrónico que se envían después cuando se establece una conexión al servidor SMTP. Es típico que un usuario de correo electrónico envíe todos los mensajes de SMTP a un servidor SMTP concreto (se proporciona por el proveedor de acceso a Internet) que después reenvía este correo electrónico a otros servidores SMTP.

La implementación de clase SmtpClient agrupa las conexiones SMTP para que pueda evitar la sobrecarga de restablecer una conexión para cada mensaje en el mismo servidor. Una aplicación puede reutilizar el mismo objeto SmtpClient para enviar muchos correos electrónicos diferentes al mismo servidor SMTP y a muchos servidores SMTP diferentes. Como resultado, no hay ninguna manera de determinar cuando una aplicación ha terminado de usar el objeto SmtpClient y se debería limpiar.

Cuando una sesión de SMTP está finalizada y el cliente desea finalizar la conexión, debe enviar un mensaje SALIR al servidor para indicar que no tiene ningún más mensaje para enviar. Esto permite al servidor liberar los recursos asociados con la conexión del cliente y procesa los mensajes que fueron enviados por el cliente.

La clase SmtpClient no tiene un método Finalize, por tanto, una aplicación debe llamar a Dispose para liberar explícitamente a los recursos. El método Dispose itera todas las conexiones establecidas con el servidor SMTP especificado en la propiedad Host y envía un mensaje QUIT seguido de la correcta finalización de la conexión TCP. El método Dispose también libera los recursos no administrados que usa el objeto Socket y, de forma opcional, desecha los recursos administrados.

Hay que llamar a Dispose cuando se deja de utilizar el objeto SmtpClient. El método Dispose deja el objeto SmtpClient en un estado no utilizable. Después de llamar a Dispose, hay que liberar todas las referencias a SmtpClient de modo que la memoria ocupada por SmtpClient pueda ser reclamada por el recolector de elementos no utilizados.

TopicLocation
Cómo: Instalar y configurar servidores virtuales SMTP en IISConfigurar aplicaciones Web ASP .NET
Cómo: Instalar y configurar servidores virtuales SMTP en IIS 6.0Generar aplicaciones Web ASP .NET en Visual Studio
Cómo: Instalar y configurar servidores virtuales SMTP en IIS 6.0Generar aplicaciones Web ASP .NET en Visual Studio

En el siguiente ejemplo de código se muestra cómo enviar un mensaje de correo electrónico de forma asincrónica.



using System;
using System.Net;
using System.Net.Mail;
using System.Net.Mime;
using System.Threading;
using System.ComponentModel;
namespace Examples.SmptExamples.Async
{
    public class SimpleAsynchronousExample
    {
        static bool mailSent = false;
        private static void SendCompletedCallback(object sender, AsyncCompletedEventArgs e)
        {
            // Get the unique identifier for this asynchronous operation.
             String token = (string) e.UserState;

            if (e.Cancelled)
            {
                 Console.WriteLine("[{0}] Send canceled.", token);
            }
            if (e.Error != null)
            {
                 Console.WriteLine("[{0}] {1}", token, e.Error.ToString());
            } else
            {
                Console.WriteLine("Message sent.");
            }
            mailSent = true;
        }
        public static void Main(string[] args)
        {
            // Command line argument must the the SMTP host.
            SmtpClient client = new SmtpClient(args[0]);
            // Specify the e-mail sender.
            // Create a mailing address that includes a UTF8 character
            // in the display name.
            MailAddress from = new MailAddress("jane@contoso.com", 
               "Jane " + (char)0xD8+ " Clayton", 
            System.Text.Encoding.UTF8);
            // Set destinations for the e-mail message.
            MailAddress to = new MailAddress("ben@contoso.com");
            // Specify the message content.
            MailMessage message = new MailMessage(from, to);
            message.Body = "This is a test e-mail message sent by an application. ";
            // Include some non-ASCII characters in body and subject.
            string someArrows = new string(new char[] {'\u2190', '\u2191', '\u2192', '\u2193'});
            message.Body += Environment.NewLine + someArrows;
            message.BodyEncoding =  System.Text.Encoding.UTF8;
            message.Subject = "test message 1" + someArrows;
            message.SubjectEncoding = System.Text.Encoding.UTF8;
            // Set the method that is called back when the send operation ends.
            client.SendCompleted += new 
            SendCompletedEventHandler(SendCompletedCallback);
            // The userState can be any object that allows your callback 
            // method to identify this send operation.
            // For this example, the userToken is a string constant.
            string userState = "test message1";
            client.SendAsync(message, userState);
            Console.WriteLine("Sending message... press c to cancel mail. Press any other key to exit.");
            string answer = Console.ReadLine();
            // If the user canceled the send, and mail hasn't been sent yet,
            // then cancel the pending operation.
            if (answer.StartsWith("c") && mailSent == false)
            {
                client.SendAsyncCancel();
            }
            // Clean up.
            message.Dispose();
            Console.WriteLine("Goodbye.");
        }
    }
}


.NET Framework

Compatible con: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0

.NET Framework Client Profile

Compatible con: 4, 3.5 SP1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (no se admite el rol Server Core), Windows Server 2008 R2 (se admite el rol Server Core con SP1 o versiones posteriores; no se admite Itanium)

.NET Framework no admite todas las versiones de todas las plataformas. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

Todos los miembros static (Shared en Visual Basic) públicos de este tipo son seguros para la ejecución de subprocesos. No se garantiza que los miembros de instancias sean seguros para la ejecución de subprocesos.

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft