DIY escribiendo software de correo electrónico

  
                              

cara
de Outlook Express, Foxmail, Eudora, volar, como una carta personal de una gran variedad de software de correo electrónico, también está ansioso por querer escribir su propia verdad? Puedes lograr esto siguiendo los pasos a continuación.

a, manualmente para intentar la transmisión

Foxmail en el estado de la ventana de transmisión, a menudo cambiando la fila de caracteres que se muestra, por ejemplo CORREO DE :, RCPT TO, datos, etc., representan Estado de trabajo. ¿Pero cuál es su mecanismo interno? Vamos a "simular" el proceso de envío de software de correo electrónico.

Ejecute TELNET.EXE en Windows 95/98 primero. Encienda el eco parcial en su menú Terminal /Preferencias. Abra el menú "Conexión" y seleccione el elemento del menú "Sistema remoto" para abrir un cuadro de diálogo. Complete la dirección de su servidor de correo en el campo "Nombre del host", complete la columna "Puerto" e inicie la conexión.

Después de encender, habrá similar a los siguientes caracteres:

220 XXX Sendmail ...

donde 220 es el retorno del código del servidor SMTP que indica listo, listo para enviar Carta, SENDMAIL es el proceso SENDMAIL responsable del envío de mensajes en el sistema UNIX, y XXX es el nombre del servidor.

Primero, debe indicar su identidad al servidor para que el sistema pueda componer automáticamente el registro. El formato del comando es:

HELO su nombre de host

Cuando termina, el servidor devuelve 250, lo que indica la aceptación. Ahora puede decirle al servidor su dirección de salida para que la otra parte pueda responder o enviar una respuesta errónea.

CORREO DESDE: Su dirección de correo electrónico

Tenga en cuenta que no se pueden omitir los dos puntos. Si el sistema lo aprueba, también devuelve 250. En este punto, puede decirle al servidor SMTP a quién se enviará su carta. Intro:

RCPT TO: dirección del destinatario

Si utiliza este comando varias veces, significa que la carta enviada a varios destinatarios al mismo tiempo. Después de recibir el código 250 devuelto, puede comenzar a transferir datos. Ingrese el comando DATOS y presione Intro. Después de ver el código de retorno 354, puede comenzar a ingresar el contenido del correo electrónico. Al final del contenido, y luego jugar en una nueva línea en unos períodos separados, a continuación, Intro, para indicar al servidor pierde su carta más. En este momento, puede recibir el código 250 devuelto por el servidor, que indica Aceptar.

Finalmente, escriba el comando QUIT para terminar esta sesión TELNET. Después de que el servidor vuelva a 221, se desconectará activamente.

En segundo lugar, para escribir un pequeño programa

Nuestro objetivo es diseñar un programa de VB, lo que indica que para completar esta serie de acciones. Por lo tanto, debe comprender cómo usar el control de comunicación de Winsock en Visual Basic.

VB5 Abrir, crear un nuevo proyecto "EXE estándar" en el menú "Proyecto /parte", añade Control Microsoft Winsock 5.0 de control. La propiedad LocalPort del control Winsock se usa para establecer el puerto de red que usa el host local, que suele ser 25. propiedades RemoteHost RemotePort y se puede proporcionar el puerto, que se comunican con el servidor de red, en el que RemotePort establece en 25 indica el enlace con el servidor SMTP. El atributo de protocolo se establece en 0-sckTCPProtocol, lo que significa que se utiliza el protocolo TCP.

Hay varias formas en que Winsock es lo que necesitamos. Conecte método para configurar después de las cuatro propiedades comienzan a conectar un host remoto, cuando se reciben los datos de Winsock, se genera DataArrival evento. En este caso, puede utilizar el método GetData para obtener los datos recibidos. Alternativamente, puede enviar datos utilizando el método SendData.

Con esta información en la mano, podemos diseñar un programa de envío simple. Los procedimientos utilizados en el control de la siguiente manera:

Sólo cuando se comunica con cada servidor de ejecución de comandos para comprobar el código de retorno, es necesario enviar un mensaje en la parte del evento Winsock1_DataArrival. Código de esta función es la siguiente:

Private Sub cmdSend_Click ()

Winsock1.RemoteHost = txtServer.Text

Winsock1.Connect

End Sub

---------------------- Private Sub Winsock1_DataArrival (ByVal bytesTotal como de largo)

Dim como secuencia de datos

Winsock1.GetData datos

Select Case Val (datos) 'código de retorno de procesamiento

caso 220' sólo si se envía el comando de comunicación helicóptero, y establece el indicador de helo, para identificar

etiqueta = "helo"

Winsock1.SendData "helo" y txtServer.Text y vbCrLf

caso 250 'si el retorno 250 (OK)

Seleccionar etiqueta caso' es señalizador de determinación se establece cuando el comando de ejecución, para distinguir cuál de los comandos ejecutados simplemente

Caso "helo"

Winsock1.SendData "MAIL FROM:" y txtFrom.Text y vbCrLf
etiqueta

= "mail"

Case "'s mail"' Si acaba de ejecutar el comando MAIL, ejecute comando RCPT

Winsock1.SendData "RCPT TO:" y txtTo.Text y vbCrLf
etiqueta

=
"RCPT"

Caso "RCPT" 'Si acaba de realizar el comando RCPT se ejecuta
comando DATA

"datos" Winsock1.SendData y vbCrLf

etiqueta = "datos"

CASE "datos" 'si se ejecuta el comando DATA acaba de realizar comando

Winsock1.SendData "dejar de fumar" y vbCrLf

etiqueta = "dejar de fumar"

Fin Seleccione

Case 251

Winsock1.SendData "datos" y vbCrLf

etiqueta = "datos" Caso

354

Winsock1.SendData "De:" y txtFrom.Text y vbCrLf &"Para:" y txtTo.Text y vbCrLf y "Asunto:" y txtSubject.Text y vbCrLf y "Fecha:" y ahora ()

Winsock1.SendData "MIME-Version: 1.0" &vbCrLf y "Content-Type: text /plain; charset =" "gb2312" "" &vbCrLf &"Content-Transfer-Encodin g :. 8 bits "&vbCrLf y vbCrLf

Winsock1.SendData txtContent.Text

Winsock1.SendData vbCrLf &" "&vbCrLf

Caso 221 'comando QUIT si el código de retorno, es evidente bandera de comandos, listo para desconectar

etiqueta = ""

Case Else 'Si otros códigos de retorno, es un error

Winsock1.SendData "dejar de fumar" y vbCrLf

etiqueta = "dejar de fumar"

MsgBox "error" y datos

End Select

End Sub

En tercer lugar, los encabezados y codificación

cuando recibe un correo electrónico enviado sólo para sí mismo, es posible que la letra ni el "de", "a", no "tema" y "fecha". Esto se debe a que la función de codificación de la información del encabezado y el cuerpo del correo no se ha agregado al programa. Un encabezado de mensaje típico es el siguiente:

De: "CXX"

Para:

Asunto: ?? = GB2312 B taW797TLtKbK5MjrytW8 /SJL =
??

Fecha: Lun 20 Dic de 1999 16: 46: 58 + 0800

MIME-Version: 1.0

Content-Type: text /plain;

charset = "gb2312 "

Content-Transfer-Encoding: quoted-printable

en el encabezado del mensaje especifica la codificación es citado imprimible, de hecho, la mayoría de los servidores chinos apoyan codificación de 8 bits, no hay necesidad Luego codificar. bloque modificado del siguiente modo:

Sub Winsock1_DataArrival ()

......

Case 354

Winsock1.SendData "De:" y txtFrom.Text y vbCrLf &"Para:" y txtTo.Text y vbCrLf y "Asunto:" y txtSubject.Text y vbCrLf y "Fecha:" y ahora ()

Winsock1.SendData "MIME-Version: 1.0" &vbCrLf y "Content-Type: text /plain; charset = "" gb2312 "" "&vbCrLf y:". "" 8 bits Content-Transfer-Encoding "&vbCrLf y vbCrLf

Winsock1.SendData txtContent.Text

Winsock1.SendData vbCrLf &&vbCrLf

......

End Sub

Hasta ahora, un simple software de correo electrónico se ha escrito con éxito. Los lectores interesados ​​pueden agregar o restar funciones según sea necesario para satisfacer sus necesidades.

Copyright © Conocimiento de Windows All Rights Reserved