Wie versende ich Serien-E-Mails mit Microsoft Office und .NET 2.0?

Veröffentlicht: 10. Aug 2006

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.