Cómo escribir envío y recepción de correo electrónico usando vb
VB: Enviar y recibir correos electrónicos
Enviar y recibir correos electrónicos es una función muy útil para algunas aplicaciones que realizan tareas especiales. Por ejemplo, si una herramienta de software que monitorea el uso de recursos de un servidor de red tiene la función de enviar correos electrónicos automáticamente, cuando descubre que el uso de recursos del servidor se acerca a un estado crítico preestablecido, puede enviar un correo electrónico al administrador del sistema. Los correos electrónicos de alerta permiten a los administradores del sistema tomar medidas oportunas para evitar incidentes importantes. En Visual Basic, una aplicación puede implementar la función de enviar y recibir correos electrónicos llamando a MAPI (Interfaz de programación de aplicaciones de mensajería, interfaz de programación de aplicaciones de mensajes) de Microsoft. En este artículo, el autor combinará ejemplos simples para presentarle el método de programación para realizar la función de envío y recepción de correo electrónico en el programa VB.
Para compilar un programa VB con la función de enviar y recibir correos electrónicos, debe usar Visual Basic 4.0 o superior, porque solo Visual Basic 4.0 o superior tiene dos controles centrales que implementan la función de enviar y recibir correos electrónicos. : Control de sesión MAPI y controles de mensajes MAPI. El control de sesión MAPI se usa para establecer y controlar una sesión de Microsoft Mail y el control de mensajes MAPI se usa para crear, enviar y recibir mensajes de correo. Además, el programa debe ejecutarse en un entorno que utilice un sistema de mensajería compatible con MAPI (como Microsoft Exchange, Microsoft Mail, Outlook, etc.).
Antes de comenzar a programar, primero debe agregar el control MAPI a la caja de herramientas de VB. La operación específica es: seleccione el comando Controles personalizados en el elemento del menú Herramientas en la barra de menú de VB, abra el cuadro de diálogo "Controles personalizados", seleccione el elemento "Controles MAPI de Microsoft" en el cuadro de lista "Controles disponibles" y luego presione el botón de comando "Aceptar" para salir del cuadro de diálogo. Posteriormente se agregarán dos nuevos íconos a la caja de herramientas, que son los íconos del control de sesión MAPI y el control de mensajes MAPI.
A continuación, el autor tomará dos programas VB simples como ejemplos para presentar los métodos de programación para enviar y recibir correos electrónicos, respectivamente.
Programa de envío de correo
El proceso de procesamiento básico del programa de envío de correo es redactar un correo electrónico basado en la información ingresada por el usuario y luego usar el método Enviar del control de mensaje MAPI para envía el correo electrónico. Los pasos de programación son los siguientes:
1. Cree un nuevo proyecto VB.
2. Establezca la propiedad Título del formulario predeterminado Form1 en "Enviar correo".
3. Agregue el control MAPI a la caja de herramientas de VB.
4. Agregue un control de sesión MAPI MAPISession1 y un control de mensajes MAPI MAPIMessages1 a Form1.
5. Agregue tres controles de cuadro de texto a Form1, establezca sus propiedades de Nombre en txtSendTo, txtSubject y txtMessage respectivamente, y establezca la propiedad Multilínea de txtMessage en True. Estos tres controles de cuadro de texto se utilizarán para completar el destinatario, el asunto y el contenido del correo electrónico, respectivamente.
6. Agregue tres controles de etiqueta a Form1, establezca sus propiedades Título en "Destinatario", "Asunto" y "Contenido" respectivamente y colóquelos en las ubicaciones apropiadas para Etiquetar el control de cuadro de texto correspondiente.
7. Agregue un control de botón de comando a Form1 y establezca su propiedad Título y propiedad Nombre en "Enviar" y "cmdSend" respectivamente.
8. Agregue el siguiente código al evento Form_Load de Form1:
Private Sub Form_Load()
MAPISession1.SignOn
Fin Sub
9. Agregue el siguiente código al evento Form_Unload de Form1:
Private Sub Form_Unload(Cancel As Integer)
MAPISession1.SignOff
End Sub
10. Agregue el siguiente código al evento Click de cmdSend:
Private Sub cmdSend_Click()
With MAPIMessages1
.MsgIndex = -1
.RecipDisplayName = txtSendTo.Text
.MsgSubject = txtSubject.Text
.MsgNoteText = txtMessage.Text
.SessionID = MAPISession1.SessionID
.Send
Finalizar con
MsgBox "¡Correo electrónico enviado!", , "Enviar correo electrónico"
Finalizar sub
Después de completar el destinatario, el asunto y el contenido del correo electrónico, presione el botón de comando "Enviar". Si no aparece ningún mensaje de error en tiempo de ejecución, significa que el correo electrónico se envió correctamente. al destino. De lo contrario, verifique si la dirección del destinatario ingresada es correcta y si el sistema de mensajería que se ejecuta en el sistema funciona correctamente.
Programa de recepción de correo
El programa de recepción de correo es un poco más complicado que el programa de envío de correo. Primero, debe utilizar el método Fetch del control de mensajes MAPI para leer el correo. Este proceso cargará todos los correos no leídos en la bandeja de entrada del usuario en el control de mensajes MAPI. Luego, verifique la propiedad MsgCount del control de mensajes MAPI para determinar la cantidad total de mensajes leídos mediante el método Fetch. A continuación, puede especificar qué correo electrónico debe procesarse configurando la propiedad MsgIndex del control de mensajes MAPI. Cabe señalar que el recuento de los valores del atributo MsgIndex comienza desde 0, es decir, el número de índice del primer correo electrónico es 0, el número de índice del segundo correo electrónico es 1, y así sucesivamente. Los pasos de programación son los siguientes:
1. Cree un nuevo proyecto VB.
2. Establezca la propiedad Título del formulario predeterminado Form1 en "Recibir correo".
3. Agregue el control MAPI a la caja de herramientas de VB.
4. Agregue un control de sesión MAPI MAPISession1 y un control de mensajes MAPI MAPIMessages1 a Form1.
5. Agregue tres controles de etiqueta y un control de cuadro de texto a Form1, establezca las propiedades de Nombre de los tres controles de etiqueta en lblMsgDateReceived, lblMsgOrigDisplayName y lblMsgSubject respectivamente, y establezca la propiedad Nombre del control de cuadro de texto en txtMsgNoteText y borre el contenido de la propiedad Caption del control de etiqueta y la propiedad Text del control de cuadro de texto. Estos cuatro controles se utilizarán para mostrar la fecha, el remitente, el asunto y el contenido del correo electrónico.
6. Establezca la propiedad Locked y la propiedad Multiline del control txtMsgNoteText en True y establezca la propiedad ScrollBars en 2 - Vertical.
7. Agregue cuatro controles de etiqueta más a Form1 para etiquetar los cuatro controles anteriores y establezca sus propiedades de Título en "Fecha", "Remitente", "Asunto" y "Contenido" respectivamente.
8. Agregue un control de etiqueta a Form1, establezca su propiedad Nombre en lblMsgCount y establezca su propiedad Título en "0.º correo electrónico, total 0 correos electrónicos". Este control se utiliza para mostrar la cantidad total de correos electrónicos recibidos y qué correo electrónico se está procesando actualmente.
9. Agregue tres controles de botón de comando a Form1, establezca sus propiedades de Nombre en cmdPrevious, cmdNext y cmdClose respectivamente, y establezca sus propiedades de Título en "Anterior", "Siguiente", "cierre".
10. Escriba una subrutina FetchNewMail a nivel de formulario:
Public Sub FetchNewMail()
MAPIMessages1.FetchUnreadOnly = True
MAPIMessages1. Fetch
End Sub
11. Escriba una subrutina DisplayMessage a nivel de formulario:
Public Sub DisplayMessage()
lblMsgCount.Caption = "th" amplificador _
LTrim(Str(MAPIMessages1.MsgIndex 1)) amplificador "mensajes, total" _
LTrim(Str(MAPIMessages1 .MsgCount)) amplificador; ; "correos"
lblMsgDateReceived.Caption = MAPIMessages1.MsgDateReceived
txtMsgNoteText.Text = MAPIMessages1.MsgNoteText
lblMsgOrigDisplayName.Caption = MAPIMessages1 .MsgOrigDisplayName
lblMsgSubject.Caption = MAPIMessages1.MsgSubject
End Sub
12. Agregue el siguiente código al evento Form_Load de Form1:
Private Sub Form_Load( )
MAPISession1.SignOn
MAPIMessages1.SessionID = MAPISession1.SessionID
FetchNewMail
DisplayMessage
End Sub
13. Agregue el siguiente código al evento Click de cmdPrevious:
Private Sub cmdPrevious_Click()
If MAPIMessages1.MsgIndex gt 0 Then
>MAPIMessages1.MsgIndex = MAPIMessages1.MsgIndex - 1
DisplayMessage
De lo contrario
Pitido
Finalizar si p>
End Sub
14. Agregue el siguiente código al evento Click de cmdNext:
Private Sub cmdNext_Click()
If MAPIMessages1.MsgIndex lt; MAPIMessages1.MsgCount - 1 Entonces
MAPIMessages1.MsgIndex = MAPIMessages1.MsgIndex 1
DisplayMessage
De lo contrario
Pitido
<p> End If
End Sub
15. Agregue el siguiente código al evento Click de cmdClose:
Private Sub cmdClose_Click()
Descargarme
End Sub
Durante el proceso de carga del formulario, el código en el evento de carga del formulario leerá nuevos correos electrónicos. Si hay nuevos correos electrónicos, el primer correo electrónico nuevo será. mostrado. Si hay varios mensajes nuevos, puede utilizar los botones de comando "Anterior" y "Siguiente" para hojearlos.
Recibir correo
Este ejemplo es para leer todos los correos no leídos en la bandeja de entrada del usuario. Si desea leer todos los correos en la bandeja de entrada, solo necesita ejecutar el método Fetch previamente. , la propiedad FetchUnreadOnly del control de mensajes MAPI se estableció en False. Se puede determinar si el correo electrónico recibido específico se ha leído mediante el atributo MsgRead. Si el cuerpo o el archivo adjunto de un correo electrónico se ha visto antes, el correo electrónico se marcará automáticamente como leído. Sin embargo, simplemente explorar el asunto del correo electrónico no lo marcará como leído.
Adjuntos de correo electrónico
De la misma manera que maneja los correos electrónicos, MAPI también proporciona un contador y un índice para los archivos adjuntos de correo electrónico. Al procesar un correo electrónico recibido, puede determinar cuántos archivos adjuntos contiene el correo electrónico verificando la propiedad AttachmentCount y luego procesar cada archivo adjunto configurando la propiedad AttachmentIndex.
El rango de valores legales de AttachmentIndex es de 0 a AttachmentIndex-1. Después de configurar el valor del atributo AttachmentIndex, puede leer los siguientes atributos del archivo adjunto:
AttachmentName: cuando el archivo adjunto es un archivo, este atributo se utiliza para especificar el nombre del archivo. Cuando el archivo adjunto es un objeto OLE, esta propiedad se utiliza para especificar el tipo de objeto.
AttachmentPath: Este atributo se utiliza para especificar el nombre de ruta completo del archivo como archivo adjunto.
AttchmentPosition: Este atributo se utiliza para especificar la posición del archivo adjunto en el contenido del correo electrónico. Cuando el remitente muestra el contenido del mensaje, utilizará la información proporcionada por esta propiedad para colocar la bandera del archivo adjunto en la ubicación adecuada.
AttachmentType: Este atributo se utiliza para especificar el tipo de archivo adjunto. Su valor legal son tres valores enteros, los cuales están representados por las siguientes constantes en VB:
·mapData-El archivo adjunto. es un archivo de datos
·mapEOLE-El archivo adjunto es un objeto OLE incrustado
·mapSOLE-El archivo adjunto es un objeto OLE estático
Al enviar un correo electrónico, los atributos anteriores El método de uso es el mismo que cuando se recibe correo, excepto que la operación de lectura se cambia a una operación de escritura. Cabe mencionar que la propiedad AttachmentIndex se puede establecer en cualquier valor al enviar un correo electrónico. El atributo AttachmentCount se establecerá automáticamente en el valor correcto sin configuración manual.
Resumen
Al analizar los códigos de los dos programas anteriores, el proceso básico del programa VB con la función de enviar y recibir correos electrónicos se puede resumir de la siguiente manera:
1. Uso El control de sesión MAPI establece una sesión de correo.
2. Utilice el control de mensajes MAPI para procesar correos electrónicos.
3. Utilice nuevamente el control de sesión MAPI para liberar la sesión de correo electrónico.
Dado que los dos programas VB anteriores son solo ejemplos simples, se han omitido algunos detalles que no están estrechamente relacionados con el tema de este artículo, como el manejo de errores. Al compilar programas de utilidad, debería considerar agregar estos detalles para garantizar la confiabilidad del programa.