Ενημερώθηκε: Αύγουστος 2021; Ισχύει για το Microsoft Outlook 365 / 2019 / 2016
Εδώ είναι ένα σημείωμα που πήραμε από έναν αναγνώστη.
Ευχαριστούμε για την πολύ χρήσιμη βοήθεια κωδικοποίησης του Outlook. Αναρωτιέμαι αν μπορείτε να μοιραστείτε κάποιον κώδικα που θα βοηθήσει στην αυτοματοποίηση της αποστολής ενός email στο Outlook; Γνωρίζω ότι υπάρχουν διάφοροι τρόποι αποστολής επαναλαμβανόμενων μηνυμάτων, αλλά με ενδιαφέρει συγκεκριμένα να χρησιμοποιήσω το VBA για αυτήν την εργασία.
Ευχαριστώ για την ερώτηση. Η αυτόματη αποστολή email φαίνεται να είναι από τις πιο χρήσιμες και δημοφιλείς εργασίες που μπορείτε να αυτοματοποιήσετε χρησιμοποιώντας το VBA. Διαβάστε παρακάτω για περισσότερες λεπτομέρειες και ένα απλό σενάριο για να ξεκινήσετε εδώ.
Σύνταξη VBA για αποστολή μηνυμάτων ηλεκτρονικού ταχυδρομείου του Outlook
Στο σχετικά απλό παράδειγμα παρακάτω, θα καλύψουμε τα ακόλουθα βήματα:
- Αρχικά, θα χρησιμοποιήσουμε το μοντέλο αντικειμένου VBA Outlook για να δημιουργήσουμε ένα νέο στοιχείο email.
- Στη συνέχεια, θα προχωρήσουμε και θα ορίσουμε τη σημασία του μηνύματος, τους παραλήπτες (που χωρίζονται με άνω τελείες) και το στυλ και το περιεχόμενο του κειμένου του σώματος.
- Στη συνέχεια, θα εμφανίσουμε το μήνυμα στην εφαρμογή Microsoft Outlook.
- Τέλος, θα προχωρήσουμε και θα το στείλουμε στους παραλήπτες.
Αυτός είναι ο απλός κώδικας VBA για αυτόματη δημιουργία και αποστολή απλών μηνυμάτων ηλεκτρονικού ταχυδρομείου. Σημειώστε ότι πρόκειται να βελτιώσετε εύκολα αυτό το σενάριο ώστε να περιλαμβάνει συνημμένα αρχεία, εργασίες κ.λπ.', αλλά ας ξεκινήσουμε με ένα πολύ βασικό σενάριο.
Sub SendMail()
Dim MyEmail As MailItem
Set MyEmail = Application.CreateItem(olMailItem)
With MyEmail
.To = ""
.Importance = olImportanceHigh
.Subject = ""
.Body = ""
.BodyFormat = olFormatHTML
.Display
End With
'I purposely commented the next line, uncomment it by removing the "'" sign to send your email.
' MyEmail.Send
End Sub
Συντόμευση μακροεντολής VBA του Outlook
Ίσως θελήσετε να εξετάσετε τη συσχέτιση του κώδικα VBA που μόλις γράψατε με ένα κουμπί εντολής στο Outlook. Αυτό θα σας επιτρέψει να το εκκινήσετε εύκολα από μια συντόμευση που βρίσκεται στην κορδέλα του Outlook.
Δείτε πώς να το κάνετε αυτό:
- Πρώτα, προχωρήστε και ανοίξτε το Microsoft Outlook.
- Πατήστε Αρχείο και μετά επιλέξτε Επιλογές
- Τώρα προχωρήστε και επιλέξτε Προσαρμογή κορδέλας.
- Στην ενότητα Προσαρμογή κορδέλας, θα παρατηρήσετε το πλαίσιο λίστας Επιλογή εντολών από.
- Επιλέξτε Μακροεντολές
- Στη συνέχεια, επιλέξτε τον νέο κωδικό VBA που δημιουργήσατε, στην περίπτωσή μας το όνομα θα πρέπει να είναι SendMail.
- Στη συνέχεια, πατήστε Προσθήκη και μετά OK. Προαιρετικά, μπορεί να θέλετε να αντιστοιχίσετε ένα εικονίδιο στη μακροεντολή σας.
- Η μακροεντολή σας θα είναι διαθέσιμη στη γραμμή εργαλείων γρήγορης πρόσβασης στην επάνω αριστερή πλευρά της εφαρμογής Outlook.
Πιθανά προβλήματα με τις ρυθμίσεις μακροεντολών VBA
Οι ρυθμίσεις μακροεντολών του Outlook ενδέχεται να πρέπει να συντονιστούν για την εκτέλεση μακροεντολών. Αν ναι, δείτε πώς να το κάνετε αυτό.
Μπόνους: Στείλτε ένα email από το Outlook χρησιμοποιώντας το PowerShell
Στο PowerShell, μπορείτε να χρησιμοποιήσετε το Send-MailMessage cmdlet για να στείλετε μηνύματα ηλεκτρονικού ταχυδρομείου. Ωστόσο, απαιτεί έλεγχο ταυτότητας στον διακομιστή αλληλογραφίας και δεν υποστηρίζει σύγχρονες μεθόδους ελέγχου ταυτότητας, όπως OAuth και Σύγχρονος έλεγχος ταυτότητας της Microsoft. Επομένως, είναι πολύ πιο εύκολο να στείλετε ένα μήνυμα ηλεκτρονικού ταχυδρομείου εάν έχετε διαμορφώσει ένα προφίλ Outlook στον υπολογιστή σας.
Ακολουθεί ένα παράδειγμα δέσμης ενεργειών PowerShell που διαβάζει δεδομένα από ένα αρχείο Excel και χρησιμοποιεί ένα προφίλ του Outlook για να στείλει ένα μήνυμα ηλεκτρονικού ταχυδρομείου στο κάθε χρήστης:
# ανοίξτε το αρχείο Excel
$ExcelObj = New-Object -comobject Excel.Application
$ExcelWorkBook = $ExcelObj.Workbooks.Open("C:\PS\user_list.xlsx")
$ExcelWorkSheet = $ExcelWorkBook.Sheets.Item("Sheet1")
# Λάβετε τον αριθμό των συμπληρωμένων σειρών σε ένα αρχείο xlsx
$rowcount=$ExcelWorkSheet.UsedRange.Rows.Count
# Κάντε βρόχο σε όλες τις σειρές στη στήλη 1, ξεκινώντας από τη δεύτερη σειρά (αυτά τα κελιά περιέχουν τα ονόματα χρήστη και τα μηνύματα ηλεκτρονικού ταχυδρομείου).
for($i=2;$i -le $rowcount;$i++){
$useremail = $ExcelWorkSheet.Columns.Item(1).Rows.Item($i).Text
$FullUsername = $ExcelWorkSheet.Columns.Item(2).Rows.Item($i).Text
$Status = $ExcelWorkSheet.Columns.Item(4).Rows.Item($i).Text
$pwdchange = $ExcelWorkSheet.Columns.Item(3).Rows.Item($i).Text
# Δημιουργία κειμένου κειμένου
$strSubj = " Η κατάσταση του λογαριασμού σας στον τομέα woshub.com "
$strBody = "Αγαπητέ " + $FullUsername
$strBody = $strBody + " `r`n Ο λογαριασμός σας στον τομέα woshub.com βρίσκεται στο " + $Status
$strBody = $strBody + "`r`n Η ημερομηνία και η ώρα της τελευταίας αλλαγής κωδικού πρόσβασης είναι: " + $pwdchange
$strfile="C:\ps\" + $useremail + ".txt"
# Υποθέτουμε ότι το Outlook εκτελείται, αν δεν είναι, θα πρέπει να το ξεκινήσετε με την εντολή $outlook = new-object -comobject outlook.application
$outlook = [Runtime.InteropServices.Marshal]::GetActiveObject("Outlook.Application")
$email = $outlook.CreateItem(0)
$email.To = $useremail
$email.Subject = $strSubj
$email.Body = $strBody
# Επισυνάψτε ένα αρχείο (αν χρειάζεται)
$email.Attachments.add($strfile)
#send the e-mailsage
$email.Send()
}
$ExcelWorkBook.close($true)

Αυτό το σενάριο PowerShell προϋποθέτει ότι το Outlook εκτελείται στον υπολογιστή σας. Το σενάριο δημιουργεί το θέμα και το σώμα του e-mail για κάθε διεύθυνση SMTP παραλήπτη στο αρχείο XLSX και επισυνάπτει το αρχείο. Στη συνέχεια στέλνει το e-mail.