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.