Wie versende ich Serien-E-Mails mit Microsoft Office und .NET 2.0?
Lösung
Es gibt viele verschiedene Möglichkeiten Serien-E-Mails bzw. Newsletter zu verschicken. In diesem How-to-Guide wird gezeigt, wie man diese Aufgabe mit Hilfe des Serienbrief-Assistenten von Microsoft Word erledigt. Dabei liegen gleich zwei Vorteile auf der Hand. Erstens wird recht wenig Entwicklungsarbeit benötigt, da man die vorhandene Funktionalität des Serienbrief-Assistenten verwendet. Der zweite Vorteil ist, dass der erstellte Newsletter ohne weiteren Aufwand mit den gewohnten Funktionen von Microsoft Word nachbearbeitet werden bzw. ihm ein persönlicher Touch verliehen werden kann.
Im ersten Schritt muss eine Datenquelle erstellt werden, die der Serienbrief-Assistent benötigt. Eine recht einfache Möglichkeit ist eine Datei zu erstellen, die eine HTML-formatierte Tabelle enthält. Dies wird im folgenden Code-Ausschnitt durchgeführt. Dabei wird eine temporäre Datei angelegt.
Dim mailMergeStreamWriter As System.IO.StreamWriter
Dim filepath As String = System.IO.Path.GetTempFileName()
mailMergeStreamWriter = System.IO.File.CreateText(filepath)
mailMergeStreamWriter.AutoFlush = True
mailMergeStreamWriter.WriteLine("<table>")
mailMergeStreamWriter.WriteLine("<tr><th>" & _
"Vorname</th><th>" & _
"Nachname</th><th>" & _
"EMail</th></tr>")
mailMergeStreamWriter.WriteLine("<tr><td>" & _
"Max</td><td>" & _
"Mustermann</td><td>" & _
"max.mustermann@adventureworkscinema.de</td></tr>")
mailMergeStreamWriter.WriteLine("</table>")
mailMergeStreamWriter.Close()
Nun kann die erstellte Datei als Datenquelle für den Serienbrief-Assistenten verwendet werden. Dies wird im nächsten Code-Ausschnitt demonstriert. Außerdem werden ein paar benötigte Einstellungen vorgenommen.
With Globals.ThisDocument.MailMerge .OpenDataSource(filepath, Microsoft.Office.Interop.Word.WdOpenFormat. wdOpenFormatWebPages) .MailAddressFieldName = "EMail" .MailSubject = "Betreff" .MainDocumentType = Word.WdMailMergeMainDocType.wdEMail .Destination = Word.WdMailMergeDestination.wdSendToEmail .MailFormat = Word.WdMailMergeMailFormat.wdMailFormatPlainText End With
Ist dieser Schritt erledigt, dann können Seriendruckfelder etc. hinzugefügt werden. Dies kann sowohl per Code als auch manuell mit Microsoft Word gemacht werden. In diesem How-to-Guide wird nur die manuelle Methode mit der Seriendruck-Menüleiste verwendet.
Sobald dies abgeschlossen ist, müssen die E-Mails nur noch verschickt werden. Dies geschieht mit dem folgenden Code-Ausschnitt.
Globals.ThisDocument.MailMerge.Execute()
Dieser Aufruf erstellt die einzelnen E-Mails und fügt sie dem Postausgang des bevorzugten E-Mail-Programms hinzu. Damit ist die Serien-E-Mail bzw. der Newsletter fertig.