tiene son saber que oculta mandan los for enviar electronico cómo cuales correo copia con como campos automaticamente vba email utf-8 outlook outlook-vba

vba - son - que es cc en correo



Generar archivo para abrir el mensaje nuevo de Outlook con campo Bcc (2)

Necesito abrir programáticamente Outlook 2016 en la computadora de los usuarios, con un nuevo mensaje, que contiene los campos predefinidos (A, Bcc, cuerpo UTF-8, datos adjuntos). Para eso, necesito generar un archivo que Outlook abra como un nuevo mensaje o un script que haga que Outlook abra el nuevo mensaje.

Puede parecer una tarea fácil, pero en realidad es complicado. Lo haría, por ejemplo, de una manera que genere un archivo .eml, con contenido como este:

From: [email protected] To: [email protected] Cc: [email protected] Bcc: [email protected] X-Unsent: 1 Subject: Something This is a test message. Multipart can be used to add attachment.

El problema es que esto no funcionará, porque si ese archivo es abierto por Outlook (como archivo .eml), Outlook puede abrirlo, pero ignora completamente la línea CCO.

Entonces en otra iteración, trataría de hacer un script VBS en su lugar:

Set objoutlookApp = CreateObject("Outlook.Application") Set objmessage = objoutlookApp.CreateItem(olMailItem) objmessage.TO = "[email protected];[email protected]" objmessage.CC = "[email protected];[email protected]" objmessage.BCC = "[email protected]" objmessage.Subject = "E-Mail Subject" objmessage.Body = "Here comes some text" objmessage.display set objmessage = Nothing set objoutlookApp = Nothing wscript.quit

Esto parece un poco mejor, pero aún es insuficiente. En primer lugar, el archivo VBS no puede estar en formato UTF-8, por lo que no es posible enviar un correo electrónico en chino, por ejemplo, necesito poder escribir una cadena codificada UTF-8 directamente en el cuerpo ya que debe ser una solución de archivo único. Y segundo, no tengo idea de cómo agregar los archivos adjuntos (multiparte) de esta manera.

¿Hay alguna forma de abrir una nueva ventana de mensajes en Outlook con campos predefinidos (incluyendo Bcc), mediante un archivo que pueda generar en el lado del servidor y luego enviarlo al usuario para abrirlo?


El modelo de objetos de Outlook proporciona tres formas principales para trabajar con cuerpos de elementos:

  1. Cuerpo : un texto sencillo sin ningún mnarkup.
  2. HTMLBody - un marcado HTML que representa el cuerpo del mensaje.
  3. El editor de Word. La propiedad WordEditor de la clase Inspector devuelve una instancia del documento de Word que representa el cuerpo del mensaje. Entonces, puede usar el modelo de objetos de Word para hacer lo que necesite con el cuerpo del mensaje.

Depende de usted cuál es la forma de elegir. Consulte el Capítulo 17: Trabajar con cuerpos de artículos para obtener más información.

Puede usar el método Add de la clase Attachments que reabra un nuevo archivo adjunto en la colección Attachments. Por ejemplo:

Sub AddAttachment() Dim myItem As Outlook.MailItem Dim myAttachments As Outlook.Attachments Set myItem = Application.CreateItem(olMailItem) Set myAttachments = myItem.Attachments myAttachments.Add "D:/Documents/Q496.xlsx", _ olByValue, 1, "4th Quarter 1996 Results Chart" myItem.Display End Sub

Finalmente, puede encontrar útil la forma de automatizar Outlook desde otro artículo del programa .


Su archivo VBS no puede ser codificado en UTF-8, pero el script VB funciona bien con archivos codificados en UTF-16. No tuve ningún problema con el siguiente archivo guardado en codificación UTF-16 desde el Bloc de notas:

Set objoutlookApp = CreateObject("Outlook.Application") Set objmessage = objoutlookApp.CreateItem(olMailItem) objmessage.TO = "[email protected];[email protected]" objmessage.CC = "[email protected];[email protected]" objmessage.BCC = "有些BCC名 <[email protected]>" objmessage.Subject = "E-Mail Subject" objmessage.Body = "Here comes some text" objmessage.display set objmessage = Nothing set objoutlookApp = Nothing