code

Odosielanie e-mailov bez zásahu užívateľa

Dlho sme hľadali najlepší spôsob odosielania naplánovaných e-mailov z databázy Access. Keďže Microsoft do Outlooku zaviedol v "Centre dôveryhodnosti" tzv. "Programový prístup" kde predvolená hodnota je "upozorniť na podozrivú aktivitu" a odoslanie emailu "podozrivou aktivitou" rozhodne asi je :-), nebolo možné odosielať emaily bez manuálneho potvrdenia každého emailu osobitne, čo pri naplánovaných dávkach (niekoľko desiatok emailov) zaberalo užívateľom určitý čas a bezduché klikanie v pravidelnom intervale.

Odosielanie e-mailov bez zásahu užívateľa

#SoftverNaMieru

1. vyššie popísaný problém riešime nasledovným kódom, generovaním emailov v databáze Access:

Public Function SendEmailWithOutlook(MessageTo As String, Subject As String, MessageBody As String)
' !Pri automatickom odosielaní cez Windows Task Scheduler je lepšie mať Outlook zavretý!
Microsoft nápoveda
' Vo VBA zapnúť: Tools > References > Microsoft Outlook 16.0 Object Library
' Definujeme premenné
     Dim olApp As New Outlook.Application
     Dim oEmail As Outlook.MailItem ' An Outlook Mail item
     Dim FileName As String, TodayDate As String
' Ak potrebujeme ako prílohu nejakú zostavu z aktuálnej db:
' Export zostavy do rovnakého adresára ako db s pridaním dátumu
     TodayDate = Format(Date, "MMDDYYYY")
     FileName = Application.CurrentProject.Path & "\ReportName_" & TodayDate & ".pdf"
     DoCmd.OutputTo acReport, "rprUserRightsAT", acFormatPDF, FileName, False
' Vytvoríme nový emailový objekt
     Set oEmail = olApp.CreateItem(olMailItem)
' Pridáme adresáta, predmet a telo správy
     With oEmail
          .To = MessageTo ' Adresát správy
          .Subject = Subject ' Predmet správy
          .Body = MessageBody ' Telo správy
          .Attachments.Add FileName ' Príloha = zostava z aktuálnej db
          .Save ' Uloží do konceptov - pomáha pri bezchybnom priebehu
          .Send ' Okamžité odoslanie
     End With
' Uvoľníme premenné
     Set oEmail = Nothing
     Set olApp = Nothing
End Function

2. nastavenie Outlooku

Už je iba potrebné zmeniť nastavenie samotného Outlooku, ktorý odosiela emaily z databázy Access. Je potrebné Outlook "Spustiť ako správca", ďalej pokračujeme: Súbor > Možnosti > Centrum dôveryhodnosti > Nastavenie centra dôveryhodnosti > Programový prístup > Nikdy neupozorňovať na podozrivú aktivitu. Keďže túto voľbu Microsoft neodporúča, pre odosielanie emailov vytvoríme vždy samostatné Windows konto, kde nemá bežný užívateľ prístup a preto si môžeme dovoliť zmeniť toto nastavenie, ktoré je platné len pre novovytvorené Windows konto/účet. A cez Task Scheduler môžeme automaticky spúšťať odosielanie emailov bez zásahu/potvrdenia od užívateľa.

Na záver

Ak vás téma zaujala, môžete si pozrieť aj naše video - odosielanie emailov.