Bon dia!

Alguns recordareu l’article que ja fa temps vaig fer sobre enviar correus amb Access
Avui afegeixo una opció per poder enviar correus, en lloc de en text pla, en HTML, amb la quantitat d’opcions que això dona, no cal que m’esplaií més.

Abans utilitzavem la funció SendMessages

Function SendMessages(Dir As String, CC As String, Asunto As String, TextoMsg As String, Optional AttachmentPath, Optional AttachmentPath2)
Dim OutApp As Outlook.Application
Dim OutMail As Outlook.MailItem

    Set OutApp = CreateObject("Outlook.Application")
    Set OutMail = OutApp.CreateItem(olMailItem)

    With OutMail
    .To = Dir
    .CC = CC
    .BCC = ""
    .Subject = Asunto
    .Body = TextoMsg

    'Se pueden adjuntar ficheros
    If Not IsMissing(AttachmentPath) Then
        .Attachments.Add (AttachmentPath)
    End If
    'Es poden adjuntar 2 adjunts
    If Not IsMissing(AttachmentPath2) Then
        .Attachments.Add (AttachmentPath2)
    End If
    .Send
    '.Display 'tambien se puede usar .Send y lo situa en la bandeja de salida
    End With

Set OutMail = Nothing
Set OutApp = Nothing

End Function

Ara en lloc d’aquesta funció posem la nova amb HTML

CorreuHTML

Function CorreuHTML(Dir As String, CC As String, Asunto As String, TextoMsg As String, Optional AttachmentPath, Optional AttachmentPath2)
Dim OutApp As Outlook.Application
Dim OutMail As Outlook.MailItem

    Set OutApp = CreateObject("Outlook.Application")
    Set OutMail = OutApp.CreateItem(olMailItem)

    With OutMail
    .To = Dir
    .CC = CC
    .BCC = ""
    .Subject = Asunto
    .Body = .HTMLBody
    .HTMLBody = TextoMsg
    .BodyFormat = olFormatHTML

    'Se pueden adjuntar ficheros
    If Not IsMissing(AttachmentPath) Then
        .Attachments.Add (AttachmentPath)
    End If
    'Es poden adjuntar 2 adjunts
    If Not IsMissing(AttachmentPath2) Then
        .Attachments.Add (AttachmentPath2)
    End If
    .Send
    '.Display 'tambien se puede usar .Send y lo situa en la bandeja de salida
    End With

Set OutMail = Nothing
Set OutApp = Nothing

End Function

S’ha de netejar una mica, però per que s’entengui d’on ve aquest codi, per això deixo  .body = .HTMLbody

Ara la funció ha canviat lleugerament,

CorreuHTML Correu, "", "Assumpte", "<html><body>hola</body></html>"

Però això és poc pràctic, per tant en lloc de  text directament en codi VB el que farem es un textbox on enganxarem tot el codi en el formulari

Ara obrim el nostre editor HTML preferit, fem el nostre correu tot macu i fem copy paste del codi

Ara ja tindrem de la mateixa forma que abans, el nostre correu personalitzat a cada usuari, però amb HTML.

Anex:
Normalment si voleu fer coses «decents», en l’edició del HTML usareu CSS, però realitzant les primeres proves m’he donat conte que depenent del nostre visor, Outlook, Gmail, Hotmail, etc, la forma és diferent.

La primera prova l’he fet amb CSS dins del HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<style type="text/css">
<!--
.Color {
	color: #393;
}
.ColorGris {
	color: #999;
}
-->
</style>
</head>

<body>

<p class="Color">Abans d’imprimir  aquest correu, pensi si realment és necessari.El medi ambient es cosa de tots.</p>
<h6 class="ColorGris">Avís Legal:<br />
  La informació continguda en aquest  missatge de correu electrònic és confidencial i està destinada únicament a la  persona a la qual ha estat enviada, pot contenir informació privada i  confidencial. Si vostè no és el destinatari al que ha estat remesa, no pot  copiar-la, distribuir-la, ni emprendre amb ella cap tipus d’acció. Si creu que  ho ha rebut per error, per favor notifiqui-ho al remitent, gràcies.</h6>
<h6 class="ColorGris">Les seves dades estan incloses a la  nostre base de dades, al càrrec de ****, en compliment de la normativa  en la LOPD 15/1999 de 13 de Desembre, inscrit a l’Agència Espanyola de  Protecció de Dades amb codi d’inscripció .
</body>
</html>

D’aquesta forma veiem en Outlook el correu així

Però en canvi en Gmail el veiem així

La sol·lució és utilitzar CSS Inline, en lloc de definir la fulla d’estils al principi en la pròpia línia

<p style="color: #393;">Contingut</p>

No se massa de CSS però segur que també pots, com a possible solució, externalitzar el CSS al web, de la mateixa forma que poses les imatges amb ruta absoluta http://…

Que vagi de gust 🙂