firma enviar desde correo con body application agregar vba excel-vba email outlook signature

enviar - Correo electrónico de Outlook y firma de Excel VBA-.Body vs.HTMLbody



outlook.mailitem signature (2)

Cuando establece la propiedad HTMLBody, asegúrese de fusionar el HTMLBody existente (con la firma) y sus datos nuevos; no puede concatenar dos cadenas de HTML y espera un HTML válido. encuentre la posición de la cadena "<body" , encuentre la posición de la siguiente ">" (para cuidar los elementos del cuerpo con atributos), inserte sus datos después de eso ">".

Tengo un botón en mi hoja de trabajo para enviar un correo electrónico (más más, pero no importante). Quiero mi firma predeterminada con su formato HTML, pero ninguna de las opciones está produciendo los resultados que deseo:

  • .Body produce el cuerpo correcto (fuentes y retornos de carro) pero la firma es texto sin formato

  • .HMTLBody produce la firma correcta, pero el cuerpo por alguna razón, la fuente va a Times New Roman en lugar de la Calibri predeterminada, y los retornos de carro no funcionan si utilizo vbNewLine , vbCr o vbCrLf

¿Soy SOL? ¿Debo simplemente escoger uno y lidiar con eso, o hay alguna forma de que yo tenga mi torta y la coma también?

Código:

.Display '' need to display email first for signature to work .Subject = Title .To = ActiveSheet.Range("E10").Value '' <-- Put email of the recipient here .CC = "" '' <-- Put email of ''copy to'' recipient here .HTMLBody = "Thank you for the opportunity to bid on " & ActiveSheet.Range("B9").Value & ". " & _ " Please read our attached proposal in its entirety to be sure of all inclusions, exclusions, and products proposed. Give us a call with any questions or concerns." & _ vbCrLf & vbCrLf & _ "Thank you," & _ .HTMLBody '' Adds default signature .Attachments.Add PdfFile

Actualizar:

Código de trabajo final gracias a la ayuda de ambas respuestas a continuación:

.Display '' We need to display email first for signature to be added .Subject = Title .To = ActiveSheet.Range("E10").Value .CC = "" .HTMLBody = "<font face=""calibri"" style=""font-size:11pt;"">Thank you for the opportunity to bid on " & ActiveSheet.Range("B9").Value & ". " & " Please read our attached proposal in its entirety to be sure of all inclusions, exclusions, and products proposed. Give us a call with any questions or concerns." & _ "<br><br>" & _ "Thank you," & _ .HTMLBody & "</font>" '' Adds default signature .Attachments.Add PdfFile


intente insertar sus datos en las etiquetas html correctas:

.HTMLBody = "<font face=""verdana"" color=""black"">This is some text!</font>"

para espacios debe agregar esta etiqueta "<br>" , por ejemplo:

.HTMLBody = "<font face=""calibri"" color=""black""> hello <br>" .HTMLBody = .HTMLBody & " how <br>" & " are <br>" & " you?</font>"

resulta en:

Hola

cómo

son

¿tú?

Edit2

Para insertar imágenes (firma como imágenes) puede usar el siguiente código:

1 paso Copie este código y pegue en el módulo de clase y asígnele un nombre a ese módulo de clase como "MailOptions"

Private Message As CDO.Message Private Attachment, Expression, Matches, FilenameMatch, i Public Sub PrepareMessageWithEmbeddedImages(ByVal FromAddress, ByVal ToAddress, ByVal Subject, ByVal HtmlContent) Set Expression = CreateObject("VBScript.RegExp") Expression.Pattern = "/<EMBEDDEDIMAGE/:(.+?)/>" Expression.IgnoreCase = True Expression.Global = False ''one match at a time Set Message = New CDO.Message Message.From = FromAddress Message.To = ToAddress Message.Subject = Subject ''Find matches in email body, incrementally increasing the auto-assigned attachment identifiers i = 1 While Expression.Test(HtmlContent) FilenameMatch = Expression.Execute(HtmlContent).Item(0).SubMatches(0) Set Attachment = Message.AddAttachment(FilenameMatch) Attachment.Fields.Item("urn:schemas:mailheader:Content-ID") = "<attachedimage" & i & ">" '' set an ID we can refer to in HTML Attachment.Fields.Item("urn:schemas:mailheader:Content-Disposition") = "inline" '' "hide" the attachment Attachment.Fields.Update HtmlContent = Expression.Replace(HtmlContent, "cid:attachedimage" & i) '' update the HTML to refer to the actual attachment i = i + 1 Wend Message.HTMLBody = HtmlContent End Sub Public Sub SendMessageBySMTP(ByVal SmtpServer, ByVal SmtpUsername, ByVal SmtpPassword, ByVal UseSSL) Dim Configuration Set Configuration = CreateObject("CDO.Configuration") Configuration.Load -1 '' CDO Source Defaults Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = SmtpServer ''Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = SmtpPort Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 30 If SmtpUsername <> "" Then Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1 Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = SmtpUsername Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = SmtpPassword End If Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = UseSSL Configuration.Fields.Update Set Message.Configuration = Configuration Message.Send End Sub

Paso 2. En un módulo estándar, elaborará su contenido .html y creará una instancia de un objeto de la clase:

public sub send_mail() Dim signature As String dim mail_sender as new MailOptions ''here you are instantiating an object from the class module created previously dim content as string signature = "C:/Users/your_user/Documents/your_signature.png" content = "<font face=""verdana"" color=""black"">This is some text!</font>" content = content & "<img src=""<EMBEDDEDIMAGE:" & signature & " >"" />" mail_sender.PrepareMessageWithEmbeddedImages _ FromAddress:="[email protected]", _ ToAddress:="[email protected]", _ Subject:="your_subject", _ HtmlContent:=content ''your_Smtp_Server, for example: RelayServer.Contoso.com correos.SendMessageBySMTP "your_Smtp_Server", "your_network_user_account", "your_network_user_account_password", False end sub