Как отправить HTML Email с помощью VBA из MS Access - PullRequest
0 голосов
/ 04 февраля 2020

Я сам нашел решение. Вместо хранения HTML в переменной Text я напрямую использую поле html из базы данных. Поэтому я сейчас использую .htmlbody = rs.fields ("tekst"), и это прекрасно работает!

Отправка простых текстовых писем - не проблема. Если я пытаюсь отправить HTML, он всегда отправляется в виде простого текста.

Я пытался использовать .HTMLbody вместо .Body, но все равно та же проблема.

Текст HTML сохраняется в таблице MS Access в поле tekst, которое имеет формат Memo - Rich text. Я использую учетную запись Gmail.

Sub SendGmail()

   'creating a CDO object
   Dim Mail As CDO.Message
   Set Mail = New CDO.Message

   'Enable SSL Authentication
   Mail.Configuration.Fields.Item _
   ("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True

   'Make SMTP authentication Enabled=true (1)
   Mail.Configuration.Fields.Item _
   ("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1

   'Set the SMTP server and port Details
   'Get these details from the Settings Page of your Gmail Account
   Mail.Configuration.Fields.Item _
   ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = _
   "smtp.gmail.com"
   Mail.Configuration.Fields.Item _
   ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
   Mail.Configuration.Fields.Item _
   ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2

   'Set your credentials of your Gmail Account
   Mail.Configuration.Fields.Item _
   ("http://schemas.microsoft.com/cdo/configuration/sendusername") = _
   "myaddress@gmail.com"
   Mail.Configuration.Fields.Item _
   ("http://schemas.microsoft.com/cdo/configuration/sendpassword") = _
   "*********"

   'Update the configuration fields
   Mail.Configuration.Fields.Update

   'get text
   Set rs = CurrentDb.OpenRecordset("select tekst from tekst")
   rs.MoveFirst
   txt = "<html><body>" & rs.Fields("tekst") & "</body></html>"

   'Set All Email Properties
   With Mail
      .AutoGenerateTextBody = False
      .Subject = "test123"
      .From = "myaddress@gmail.com"
      .To = "toaddress"
      .CC = ""
      .HTMLBody = txt
      '.AddAttachment ("Folder Address") 'To attach Documents in mail
   End With
End Sub

Ответы [ 2 ]

0 голосов
/ 05 февраля 2020

Вы должны обернуть свои данные в полностью отформатированную страницу HTML для .HTMLbody - как в следующем примере:

<!DOCTYPE html> 

<html xmlns="http://www.w3.org/1999/xhtml" lang="en" charset="iso-8859-1">
<head>
    <title>E-mail Test</title>
</head>
<body style="font-family: 'segoe ui', helvetica, arial, sans-serif">

    <span style="font-size: 12pt">
        <p>Best regards,</p>
        <p style="font-style: italic">
            Firstname Lastname<br />
            Company
        </p>
        <img src="https://i.imgur.com/HbdRTBD.gif" alt="Company" title="Company"/>
    </span>

    <table style="font-size: 9pt">
        <tr>
            <td>Phone:</td>
            <td>00 00 00 00</td>
        </tr>
        <tr>
            <td>E-mail:</td>
            <td>
                <a title="name@example.com" href="mailto:Firstname%20Lastname%20%3cname@example.com%3e?subject=Received%20data">
                    Firstname Lastname
                </a>
            </td>
        </tr>
    </table>
    <hr>

</body>
</html>
0 голосов
/ 05 февраля 2020

Попробуйте установить для свойства ContentMediaType значение "text/html".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...