Autenticación SMTP que utiliza System.Web.mail

El espacio de nombres System.Web.Mail proporciona un API que le permite crear y enviar mensajes está utilizando el componente de mensaje CDOSYS (Objetos de datos de colaboración para Windows 2000). El mensaje de correo se entrega a través de un servidor SMTP.

Las más muchas instalaciones de servidor SMTP requieren autenticación. Es decir, motiva principal como esto es debido a personas que abusan servidor SMTP para Spaming (envía correo no deseado no solicitado).

Las clases de espacio de nombres System.Web.Mail no exponen que un API proporciona credenciales a un servidor SMPT. Puede lograr esto de cualquier modo definiendo valor de configuración para el Configuration object asociado al Message CDO. Las configuraciones están compuestas de un conjunto de campos (propiedades) que es simplemente pares de nombre. Es la mayoría de campos de configuración utilizados para mensajería http://schemas.microsoft.com/cdo/configuration/ espacio de nombres.

Puede establecer campos al mensaje agregándolos a la colección System.Web.Mail.MailMesage.Fields.
 
CDO Campa para configurar autenticación SMTP < BR. / > objeta que modifica campos en el objeto asociado Configuration </B> para configurar Mensaje. Residen mayorías de los nombres de campo http://schemas.microsoft.com/cdo/configuration/ espacio de nombres:

  • smtpserver: Nombre de servidor SMTP.
  • smtpserverport : ( configuración predeterminada : 25 ) puerto de servidor SMTP.
  • sendusing: CdoSendUsingPort, valor 2 para enviar el mensaje utilizando la red.
  • smtpauthenticate: Especifica el mecanismo utilizado al autenticarse a un servicio SMTP a través de la red. El valor posible es:
    CdoAnonymous <B>- </B> valora 0. No autentique.
    CdoBasic <B>- </B> valora 1. Utilice autenticación texto simple básico. Cuando utiliza esta opción, tiene que proporcionar el nombre de usuario y la contraseña a través de los campos sendusername y sendpassword.
    CdoNTLM <B>- </B> valora 2. El current process security context se utiliza para autenticación con el servicio.
  • sendusername: Nombre de usuario
  • sendpassword: Contraseña

Example

En el ejemplo siguiente muestra cómo enviar un mensaje de correo electrónico a través de un servidor SMTP que requiere servidor de autenticación a través de la red proporcionando credenciales en texto simple.

using System;
using System.Web.Mail;
namespace SMTPAuthentication
{
 public class SMTPAuthenticationExample
 {
  public static void SendMail()
  {
   string smtpServer = "smtp.domain.com";
   string userName = "johnDoe";
   string password = "pass";
   int cdoBasic = 1;
   int cdoSendUsingPort = 2;
   MailMessage msg = new MailMessage();
   if (userName.Length > 0)
   {
    msg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpserver", smtpServer);
    msg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpserverport", 25) ;
    msg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusing", cdoSendUsingPort) ;
    msg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate", cdoBasic);
    msg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername", userName);
    msg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendpassword", password); 
   }
   msg.To = "someone@domain.com";
   msg.From = "me@domain.com";
   msg.Subject = "Subject";
   msg.Body = "Message";
   SmtpMail.SmtpServer = smtpServer;
   SmtpMail.Send(msg);
  }
 }
}

Observa : <EM> de que las clases del espacio de nombres System.Web.Mail System.Web.Mail namespace se pueden utilizar <EM> de ASP.NET o cualquier aplicación. administrado Asegurarse de que su proyecto hace referencia al assembly. System.Web.dll System.Web.dll </EM>
 
Referencias :
Para más información acerca de visita de objeto de datos de colaboración:
http://msdn.microsoft.com/library/en-us/exchanchor/htms/msexchsvr_cdo_top.asp
 
Para más información acerca del System.Web.Mail, se visita el espacio de nombres:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwebmail.asp

CDONTS authentication

<%
Dim objMsg
Dim objConfig

Set objMsg    = CreateObject("CDO.Message")
Set objConfig = CreateObject("CDO.Configuration")

Dim objFields
Set objFields = objConfig.Fields

' Setup server information
objFields("http://schemas.microsoft.com/cdo/configuration/smtpserver")       = "mysmtpserver.com"
objFields("http://schemas.microsoft.com/cdo/configuration/smtpserverport")   = 25
objFields("http://schemas.microsoft.com/cdo/configuration/sendusing")        = 2

' Setup server login information if your server require it
objFields("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
objFields("http://schemas.microsoft.com/cdo/configuration/sendusername")     = "SMTPAUTHUser"
objFields("http://schemas.microsoft.com/cdo/configuration/sendpassword")     = "SMTPAUTHPassword"

objFields.Update

' Now you can setup message to send
Set objMsg.Configuration = objConfig
objMsg.To       = "tosomeone@somewhere.com"
objMsg.From     = "fromme@withlove.com"
objMsg.Subject  = "Hello"
objMsg.TextBody = "This is my test mail from CDOSYS"

objMsg.Send
%>

ComboBox de búsqueda incremental

El control ComboBox que se incluye con Visual Basic tiene funcionalidad simplista, mientras que muchos controles de otros fabricantes ofrecen características adicionales adicionales. Una de estas características de terceros es la capacidad del control ComboBox para buscar texto y buscar entradas, comenzando por ese texto mientras se escribe texto en el control ComboBox.

Por ejemplo, si escribe las letras "he," el control ComboBox buscará la primera entrada de texto comenzando por "he" y se mostrar el texto completo, como "Hello World".

A continuación se un ejemplo de código que demuestra cómo lograr esta funcionalidad con el control ComboBox que se incluye con Visual Basic.

Ejemplo del paso a paso

  1. Inicie un proyecto nuevo de Visual Basic. Se creará Form1 de manera predeterminada.
  2. Colocar un control ComboBox en el formulario.
  3. Agregue el código siguiente a la ventana de código de Form1:
    Option Explicit
    
       Private Const WM_SETREDRAW = &HB
       Private Const KEY_A = 65
       Private Const KEY_Z = 90
       #If Win32 Then
    
       Private Declare Function SendMessage Lib "user32" Alias _
           "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, _
           ByVal wParam As Long, lParam As Long) As Long
    
       #Else
    
       Private Declare Function SendMessage Lib "User" ( _
           ByVal hwnd As Integer, ByVal wMsg As Integer, _
           ByVal wParam As Integer, lParam As Any) As Long
    
       #End If
       Private Sub Combo1_KeyUp(KeyCode As Integer, Shift As Integer)
         Dim sComboText As String
         Dim iLoop As Integer
         Dim sTempString As String
         Dim lReturn As Long
         If KeyCode >= KEY_A And KeyCode <= KEY_Z Then
           'only look at letters A-Z
           sTempString = Combo1.Text
           If Len(sTempString) = 1 Then sComboText = sTempString
           lReturn = SendMessage(Combo1.hWnd, WM_SETREDRAW, False, 0&)
           For iLoop = 0 To (Combo1.ListCount - 1)
             If UCase((sTempString & Mid$(Combo1.List(iLoop), _
               Len(sTempString) + 1))) = UCase(Combo1.List(iLoop)) Then
               Combo1.ListIndex = iLoop
               Combo1.Text = Combo1.List(iLoop)
               Combo1.SelStart = Len(sTempString)
               Combo1.SelLength = Len(Combo1.Text) - (Len(sTempString))
               sComboText = sComboText & Mid$(sTempString, Len(sComboText) + 1)
               Exit For
             Else
               If InStr(UCase(sTempString), UCase(sComboText)) Then
                 sComboText = sComboText & Mid$(sTempString, Len(sComboText) _
                 + 1)
                 Combo1.Text = sComboText
                 Combo1.SelStart = Len(Combo1.Text)
               Else
                 sComboText = sTempString
                 End If
             End If
           Next iLoop
           lReturn = SendMessage(Combo1.hWnd, _
           WM_SETREDRAW, True, 0&)
         End If
       End Sub
    
       Sub Form_load()
         Combo1.AddItem "Alpha"
         Combo1.AddItem "Beta"
         Combo1.AddItem "Charlie"
         Combo1.AddItem "Delta"
         Combo1.AddItem "Dingo"
       End Sub

     

  4. En el menú Ejecutar, haga clic en Inicio o presione la tecla F5 para ejecutar el programa.

Si se escribe la letra "D", observará que "delta" es el texto activo en el ComboBox. Si, a continuación, escribe una "I", se mostrará el texto "Dingo". Todas las siguientes letras que escriba, la siguiente palabra en la lista de control ComboBox comenzará con la secuencia de caracteres que ha escrito.

Nota : la propiedad de estilo del control ComboBox debe ser "0 - combinado de lista desplegable" para que esto funcione correctamente.