asphelper.de - Tipps & Skripts - Newsletter

Link: Wichtiger Hinweis in eigener Sache!


 Autor: Klaus Keller Erstellt am: 2003-06-01  Geändert am: 2006-08-12 Aufrufe: 9992 


 << Vorheriger Tipp Nächster Tipp >>



Tipp 36: Newsletter



Newsletter sind eine hervorragende Möglichkeit, um Neuigkeiten an Interessierte weiterzugeben. In diesem Tipp möchte ich Ihnen aufzeigen, wie Sie Newsletter an Interessierte versenden können.

Es gibt 2 Bereiche, die ich Ihnen hier vorstellen möchten. Der erste Bereich ist der öffentliche Teil. Dieser beinhaltet lediglich 2 Formulare, um sich ein- und auszutragen. Der 2te Bereich beinhaltet die Administrator-Seite, durch die der Newsletter versandt wird. Ich habe mich bei allen Seiten auf ein Minimum an Ausstattung und Extras beschränkt. Denn ein Newsletter, vor allem die Admin-Seiten, kann sehr umfassend sein.

Z.B. kann man einen den Besuchern anbieten, Interessens-Bereiche auszuwäheln. Für den Administrator eine Auswahl der Email-Komponente und noch viele andere Dinge.

Sehr wichtig ist auch das rechtliche, wozu Sie auch teilweise verpflichtet sind! Allerdings kann ich hier nur einige Empfehlungen geben. Diese Empfehlungen sind ohne Gewähr, aufgrund von event. Gesetzesänderungen. Die Empfehlungen habe ich in jedem Bereich des Newsletters dargestellt.

Bevor die Datenbank erstellt wird, müssen zuerst einmal alle Ordner erstellt werden, die Ordnerstruktur sieht so aus:

Falls Sie die Ordner und Dateien nicht selbst erstellen möchten, können Sie diese hier herunterladen. Die Dateien beinhalten allerdings keinen Quellcode, das vollständige Projekt können Sie am Seitenende herunterladen.

Die Datenbank
Als Datenbank wird eine Access-Datenbank verwendet. Je nach Anzahl der eingetragenen Adressen kann u.U. ein Umstieg auf ein Professionelleres System empfehlenswert sein, denn mit einer sehr grossen Anzahl von Datensätzen leidet die Geschwindigkeit.

Wie auch mit den ASP-Seiten habe ich mich bei der Datenbank auf das absolute Minimum beschränkt. Denn mit diesen Skripts und der Datenbank möchte ich Ihnen eine Grundlage für Ihren Newsletter vorstellen. In der Datenbank wird nur eine Tabelle benötigt, diese lautet "tblNewsletter".

In der Tabelle werden nur 2 Felder erstellt:
NewsletterID, Felddatentyp: Autowert. In der oberen Leiste sehen Sie ein Schlüsselsymbol, klicken Sie darauf, um dieses Feld als Primärschlüssel festzulegen.
Newsletter_Email, Felddatentyp: Text. Im unteren Bereich geben Sie bitte als Feldgrösse 255 an.
Anschliessend die Tabelle mit dem Namen "tblNewsletter" abspeichern. Das wars mit der Datenbank!

Der öffentliche Bereich
In dieser Seite kann der Besucher seine Email-Adresse ein- oder austragen. Der einfachheit halber wird nur die Email-Adresse angegeben. Natürlich können Sie hier den Namen noch mit einbauen, um den Besucher per Namen ansprechen zu können.
1   
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
<% @ Language="VBScript"
   LCID = 1031 %><%
   Option Explicit
   Response.Buffer = true
   Session.LCID = 1031
   Session.Timeout = 30
%>
<html>
    <head>
        <title>Newsletter</title>
        <style>
        body{font-family:arial;font-size:13px;}
        font{font-family:arial;font-size:13px;}
        th{background-color:#909090;font-size:18px;color:#ffd700;}
        td{background-color:#ffd700;font-size:14px;color:#404040;}
        .Fehler1{font-size:15px;color:#e01010;font-weight:bold;}
        .Fehler2{font-size:13px;color:#e01010;}
      </style>
    </head>
    <body>
<%
Public Job, EmailEintrag, EmailAustrag, FehlerAustrag, FehlerEintrag, EintragOK, AustragOK

Job = Request("Job")
EmailEintrag = left(Request("EmailEintrag"),255)
EmailAustrag = left(Request("EmailAustrag"),255)


Select Case Job
  Case "Eintrag"
    If CheckEmail(EmailEintrag) Then
      Call NewsletterEintrag
    else
      FehlerEintrag = true
      Call Formular()
    End if
  Case "Austrag"
    If CheckEmail(EmailAustrag) Then
      Call NewsletterAustrag
    else
      FehlerAustrag = true
      Call Formular()
    End if
  Case Else
    Call Formular()
End Select


%> </body>
</html><%



Public Sub Formular()
    %><br><br><br>

    <% If EintragOK Then %>
        <p align=center><font class="fonth3"><b>
            Vielen Dank für Ihr Interesse! Ihre Adresse wurde eingetragen.
        </b></font></p>
    <% end if %>
    <% If FehlerEintrag Then %>
        <p align=center><font class="fehler1">
            Leider ist ein Fehler aufgetreten, bitte prüfen Sie Ihre Angaben.
        </font></p>
    <% end if %>
    <table align=center border="1" bordercolor="#606060" cellspacing="0">
      <tr>
        <th colspan=2>
            Anmelden für den Newsletter
        </th>
      </tr>
      <form action="Newsletter.asp" method="post" id=form2 name=form2>
      <tr>
          <td align=center>
            Ihre Email-Adresse:</td>
          <td>
            <input type="text" name="EmailEintrag" id="EmailEintrag"
                   value="<%=EmailEintrag %>" size="20">
          </td>
        </tr>
        <tr>
          <td colspan=2 align=center>
            <input type="submit" name="Submit" id="Submit" value="Anmelden">
            <input type="hidden" name="Job" id="Job" value="Eintrag">
          </td>
        </tr>
        </form>
    </table>


    <br><br><br><br><br><br>
    <% If AustragOK Then %>
        <p align=center><font class="fonth3"><b>
            Das löschen Ihrer Email-Adresse wurde erfolgreich durchgeführt. Vielen Dank für
            Ihr Interesse, natürlich freue ich mich über Ihren Besuch auf meinen Seiten!
        </b></font></p>
    <% End if %>
    <% If FehlerAustrag Then %>
        <p align=center><font class="fehler1">
            Leider ist ein Fehler aufgetreten, bitte prüfen Sie Ihre Angaben.
        </font></p>
    <% end if %>
    <table align=center border="1" bordercolor="#606060" cellspacing="0">
      <tr>
        <th align=center colspan=2>
            Newsletter abbestellen
        </th>
      </tr>
      <form action="Newsletter.asp" method="post" id=form2 name=form2>
      <tr>
        <td>Ihre Email-Adresse:</td>
        <td>
          <input type="text" name="EmailAustrag" id="EmailAustrag"
            value="<%= EmailAustrag %>" size="20">
        </td>
      </tr>
      <tr>
        <td colspan=2 align=center>
          <input type="submit" name="Submit" id="Submit" value="Abbestellen">
          <input type="hidden" name="Job" id="Job" value="Austrag">
        </td>
      </tr>
      </form>
    </table>
    <br><br><br>
    <b>Hinweis zum Newsletter:</b><br>
    Ihre Daten werden nur für den Versand des Newsletters gespeichert, Ihre
    Daten werden nicht für andere Tätigkeiten verwendet, verarbeitet oder weitergegeben.
    Bei jedem Newletter ist ein Link, mit dem Sie den Newsletter abbestellen können.
    Den Newsletter können Sie aber auch hier abbestellen, danach werden Ihre Daten
    dauerhaft gelöscht.
    <%
End Sub



Public Sub NewsletterAustrag
  Dim rs, strConn
  set rs = Server.CreateObject("ADODB.Recordset")
  strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _
             Server.MapPath("~db\Newsletter.mdb")
  rs.Open "Select * from tblNewsletter Where Newsletter_Email = '" & _
                     EmailAustrag & "'", strConn, 3, 3
  If not rs.EOF Then
    rs.Delete
    rs.Update
  End if
  rs.Close
  set rs = nothing
  AustragOK = true
  Call Formular()
End Sub



Public Sub NewsletterEintrag
  Dim rs, strConn
  set rs = Server.CreateObject("ADODB.Recordset")
  strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _
               Server.MapPath("~db\Newsletter.mdb")
  rs.Open "Select * from tblNewsletter Where Newsletter_Email = '" & _
                  EmailEintrag & "'", strConn, 3, 3
  If rs.EOF Then
    rs.AddNew
    rs.fields("Newsletter_Email").value = EmailEintrag
    rs.Update
  End if
  rs.Close
  set rs = nothing
  EintragOK = true
  Call Formular()
End Sub


Public Function CheckEmail(ByVal PruefAdresse)
    '==================================================================================
    'Name und Version
    'CheckEmail <-> Version 1.41, letzte Änderung am 2004-03-07
    '----------------------------------------------------------------------------------
    'Beschreibung:
    'Prüft ob eine Email-Adresse korrekt ist. Geprüft wird auf die TopLevel-Domain
    '(TLD) wie z.B. de, at, com usw. Teilweise wird auch geprüft, ob einige Zeichen
    'dem vorgeschriebenem Zeichensatz entsprechen.
    'Mehr Infos hierzu unter http://www.asphelper.de/tip/tip18.asp
    '----------------------------------------------------------------------------------
    'Parametername Datentyp Verwendung
    'PruefAdresse String Zu prüfende Email-Adresse
    '----------------------------------------------------------------------------------
    'Rückgabewert
    'Datentyp: Boolean
    'Beschreibung: true, falls Email-Adresse korrekt. false, falls Email-Adresse nicht
    'korrekt.
    '----------------------------------------------------------------------------------
    'Copyright ©2001-2004 Klaus Keller
    'Dieses Skript ist ein Computerprogramm das lt. §69UrhG Urheberrechtlichen Schutz
    'geniesst und darf nicht als eigenes Programm ausgegeben werden. Das Anbieten
    'zum Download bedarf der Zustimmung. Alle Skripte wurden mit grösstmöglicher Sorgfalt
    'entwickelt, sollten dennoch Fehler enthalten sein, wird keine Haftung übernommen,
    'weder für direkt noch indirekt entstehende Schäden.
    '
    'Klaus Keller
    'http://asphelper.de
    '====================================================================================
    
    Dim strDomains, arrDomains, i, Adresse, Laenge, Flag, SetAt
    Dim SetAtPlace, Character, ASCII, ix
    SetAt = false
    PruefAdresse = LCase(PruefAdresse)
    PruefAdresse = Replace(PruefAdresse, "ß", "ss")
    Laenge = len(PruefAdresse)
    
    If Laenge > 0 Then
        If instr(2,PruefAdresse,"@") > 0 Then
            If instr(instr(1,PruefAdresse,"@")+ 3,PruefAdresse,".") > 0 then
                Adresse=Right(PruefAdresse,Laenge-InstrRev(PruefAdresse,".",-1))
                arrDomains = Array("de","at","ch","com","org","net","aero", _
                "ac","ad","ae","af","ag","ai","al","am","an","ao","aq","ar", _
                "arpa","as","au","aw","az","ba","bb","bd","be","bf","bg", _
                "bh","bi","biz","bj","bm","bn","bo","br","bs","bt","bv", _
                "bw","by","bz","ca","cc","cd","cf","cg","ci","ck","cl", _
                "cm","cn","co","coop","cr","cu","cv","cx","cy","cz","dj", _
                "dk","dm","do","dz","ec","edu","ee","eg","eh","er","es", _
                "et","eu","fi","fj","fk","fm","fo","fr","ga","gd","ge", _
                "gf","gg","gh","gi","gl","gm","gn","gov","gp","gq","gr", _
                "gs","gt","gu","gw","gy","hk","hm","hn","hr","ht","hu", _
                "id","ie","il","im","in","info","io","iq","ir","is","it", _
                "je","jm","jo","job","jp","ke","kg","kh","ki","km","kn","kp", _
                "kr","kw","ky","kz","la","lb","lc","li","lk","lr","ls", _
                "lt","lu","lv","ly","ma","mc","md","mg","mh","mk","ml", _
                "mm","mn","mo","mobi","mp","mq","mr","ms","mt","mu","museum", _
                "mv","mw","mx","my","mz","na","name","nc","ne","nf","ng", _
                "ni","nl","no","np","nr","nu","nz","om","pa","pe","pf","pg", _
                "ph","pk","pl","pm","pn","pr","pro","ps","pt","pw","py", _
                "qa","re","ro","ru","rw","sa","sb","sc","sd","se","sg", _
                "sh","si","sj","sk","sl","sm","sn","so","sr","st","su", _
                "sv","sy","sz","tc","td","tf","tg","th","tj","tk","tm", _
                "tn","to","tp","tr","tt","tv","tw","tz","ua","ug","uk", _
                "um","us","uy","uz","va","vc","ve","vg","vi","vn","vu", _
                "wf","ws","ye","yt","yu","za","zm","zr","zw")
                For i = 0 to Ubound(arrDomains)
                    If arrDomains(i) = LCase(Adresse) Then
                        Flag = true
                        Exit For
                    End if
                Next
                If Flag Then
                    SetAtPlace = instr(2, PruefAdresse, "@")
                    For ix = 1 To SetAtPlace - 1
                        Character = mid(PruefAdresse,ix,1)
                        Ascii = asc(Character)
                        If NOT (Character = "." OR Character = "_" OR _
                          Character = "-" OR (ASCII > 47 AND ASCII < 58) OR _
                          (ASCII > 96 AND ASCII < 123)) Then
                            CheckEmail = false
                            Exit Function
                        End if
                    Next
                    CheckEmail = true
                    Exit Function
                End If
            End if
        End if
    End if
    CheckEmail = false
End Function
%>


Die ersten Zeilen sind Ihnen sicherlich bekannt, interessant wird es erst ab Zeile 25. Warum left? Die Datenbank hat nur ein Textfeld für die Email-Adresse, diese kann max. 255 Zeichen fassen. So wird ein Fehler unterbunden.

Von Zeilen 29 bis 46 wird geprüft, was zu tun ist. Soll eine Email-Adresse eingetragen oder ausgetragen werden, so wird die Email-Adresse geprüft. Ist die Adresse korrekt, wird die Aufgabe durchgeführt, ansonsten wird eine Fehlermeldung dargestellt.

Die Prozedur "Formular" ab Zeile 54 beinhaltet sowohl das Formular für das Eintragen einer Email-Adressen, als auch für das Austragen. Wenn ein Fehler beim Ein- und Austragen auftrat, wird eine Fehlermeldung dargestellt. Zeilen 127 bis 132 folgt ein Rechtlicher Hinweis, einen Rechtlicher Hinweis sollten Sie auf jeden Fall anbringen!

Die Prozedur NewsletterAustrag ab Zeile 138 trägt die Email-Adresse in die Datenbank ein. Wichtig hierbei: Eventuell müssen Sie noch den Pfad für die Datenbank anpassen! In der Prozedur NewsletterEintrag wird die Email-Adresse in die Datenbank eingetragen. Zuletzt folgt jene Prozedur, welche die Email-Adresse prüft. Diese habe ich Ihnen bereits in Tipp 18 vorgestellt.

Der Administrator-Bereich
Dieser Bereich beinhaltet lediglich ein Eingabeformular für den Text, das Auslesen der Adressen um dann den Newsletter zu versenden. Als Email-Komponente wird JMail verwendet, natürlich müssen Sie hier ggf. eine andere Komponente verwenden.Anpassen müssen Sie in der Prozedur EmailSenden auf jeden Fall mehrere Angaben wie z.B. die Serveradresse.

Der Quellcode aus der Datei Default.asp aus dem Verzeichnis Newsletter/Admin/Newsletter/:
1   
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
<% @ Language="VBScript"
     LCID = 1031 %><%
     Option Explicit
     Server.ScriptTimeout = 600
     Response.Buffer = true
     Response.Expires=0
     Response.AddHeader "Pragma","no-cache"
     Response.AddHeader "cache-control", "no-store"
     Response.Buffer = true


Public Schritt, NewsletterText

Schritt = Request("Schritt")
NewsletterText = Request("NewsletterText")

Select Case Schritt
  Case 2
    if len(NewsletterText) > 0 Then
      Call Senden
    else
      Call Formular
    end if
  Case Else
    Call Formular
End Select



Public Sub Formular()
  %><p align=center><form action="Default.asp" method="post">
    <textarea rows=30 cols=75 id=NewsletterText name=NewsletterText></textarea><br>
    <input type="submit" name="submit1" id="submit1" value="Newsletter senden">
    <input type="hidden" name="Schritt" id="Schritt" value="2">
  </form></p><%
End Sub



Public Sub Senden()
    Dim rs, strPfadDB, SQL, strText, i
    i = 0
    strText = "anbei erhalten Sie den Newsletter von IHRE_DOMAIN.de" & vbcrlf
    strText = strText & NewsletterText
    set rs = Server.CreateObject("ADODB.Recordset")
    strPfadDB = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _
                   Server.MapPath("..\..\~db\Newsletter.mdb")
    SQL = "Select * from tblNewsletter"
    rs.Open SQL, strPfadDB, 0, 1
    Do while not rs.EOF
      if CheckEmail(rs.Fields("Newsletter_Email").Value) Then
        If EmailSenden(strText, rs.Fields("Newsletter_Email").Value) Then
          i = i + 1
        Else
          Response.Write("Fehler beim EmailVersand: " & _
                          rs.Fields("Newsletter_Email").Value & "<br>")
        End if
      Else
        Response.Write("Falsche Email-Adresse: " & _
                        rs.Fields("Newsletter_Email").Value & "<br>")
      End if
      rs.MoveNext
    Loop
    rs.Close
    set rs = nothing
    Response.Write("<br><br>Anzahl der versandten Emails: " & i)
End Sub



Public Function EmailSenden(ByRef Text, ByRef Recipient)
    Dim JMail
    Set JMail = Server.CreateObject("JMail.SMTPMail")
    JMail.ServerAddress = "ServerAdresse_hier_angeben"
    JMail.Sender = "Info@IhreDomain.de"
    JMail.Subject = "Newsletter"
    JMail.AddRecipient Recipient
    JMail.Body = Text
    On Error Resume Next
    JMail.Execute
    If Err.number > 0 Then
        EmailSenden = false
    Else
        EmailSenden = true
    End If
    On Error GoTo 0
End Function



Public Function CheckEmail(ByVal PruefAdresse)
    '==================================================================================
    'Name und Version
    'CheckEmail <-> Version 1.41, letzte Änderung am 2004-03-07
    '----------------------------------------------------------------------------------
    'Beschreibung:
    'Prüft ob eine Email-Adresse korrekt ist. Geprüft wird auf die TopLevel-Domain
    '(TLD) wie z.B. de, at, com usw. Teilweise wird auch geprüft, ob einige Zeichen
    'dem vorgeschriebenem Zeichensatz entsprechen.
    'Mehr Infos hierzu unter http://www.asphelper.de/tip/tip18.asp
    '----------------------------------------------------------------------------------
    'Parametername Datentyp Verwendung
    'PruefAdresse String Zu prüfende Email-Adresse
    '----------------------------------------------------------------------------------
    'Rückgabewert
    'Datentyp: Boolean
    'Beschreibung: true, falls Email-Adresse korrekt. false, falls Email-Adresse nicht
    'korrekt.
    '----------------------------------------------------------------------------------
    'Copyright ©2001-2004 Klaus Keller
    'Dieses Skript ist ein Computerprogramm das lt. §69UrhG Urheberrechtlichen Schutz
    'geniesst und darf nicht als eigenes Programm ausgegeben werden. Das Anbieten
    'zum Download bedarf der Zustimmung. Alle Skripte wurden mit grösstmöglicher Sorgfalt
    'entwickelt, sollten dennoch Fehler enthalten sein, wird keine Haftung übernommen,
    'weder für direkt noch indirekt entstehende Schäden.
    '
    'Klaus Keller
    'http://asphelper.de
    '====================================================================================

    Dim strDomains, arrDomains, i, Adresse, Laenge, Flag, SetAt
    Dim SetAtPlace, Character, ASCII, ix
    SetAt = false
    PruefAdresse = LCase(PruefAdresse)
    PruefAdresse = Replace(PruefAdresse, "ß", "ss")
    Laenge = len(PruefAdresse)
    
    If Laenge > 0 Then
        If instr(2,PruefAdresse,"@") > 0 Then
            If instr(instr(1,PruefAdresse,"@")+ 3,PruefAdresse,".") > 0 then
                Adresse=Right(PruefAdresse,Laenge-InstrRev(PruefAdresse,".",-1))
                arrDomains = Array("de","at","ch","com","org","net","aero", _
                "ac","ad","ae","af","ag","ai","al","am","an","ao","aq","ar", _
                "arpa","as","au","aw","az","ba","bb","bd","be","bf","bg", _
                "bh","bi","biz","bj","bm","bn","bo","br","bs","bt","bv", _
                "bw","by","bz","ca","cc","cd","cf","cg","ci","ck","cl", _
                "cm","cn","co","coop","cr","cu","cv","cx","cy","cz","dj", _
                "dk","dm","do","dz","ec","edu","ee","eg","eh","er","es", _
                "et","eu","fi","fj","fk","fm","fo","fr","ga","gd","ge", _
                "gf","gg","gh","gi","gl","gm","gn","gov","gp","gq","gr", _
                "gs","gt","gu","gw","gy","hk","hm","hn","hr","ht","hu", _
                "id","ie","il","im","in","info","io","iq","ir","is","it", _
                "je","jm","jo","jp","ke","kg","kh","ki","km","kn","kp", _
                "kr","kw","ky","kz","la","lb","lc","li","lk","lr","ls", _
                "lt","lu","lv","ly","ma","mc","md","mg","mh","mk","ml", _
                "mm","mn","mo","mp","mq","mr","ms","mt","mu","museum","mv", _
                "mw","mx","my","mz","na","name","nc","ne","nf","ng","ni", _
                "nl","no","np","nr","nu","nz","om","pa","pe","pf","pg", _
                "ph","pk","pl","pm","pn","pr","pro","ps","pt","pw","py", _
                "qa","re","ro","ru","rw","sa","sb","sc","sd","se","sg", _
                "sh","si","sj","sk","sl","sm","sn","so","sr","st","su", _
                "sv","sy","sz","tc","td","tf","tg","th","tj","tk","tm", _
                "tn","to","tp","tr","tt","tv","tw","tz","ua","ug","uk", _
                "um","us","uy","uz","va","vc","ve","vg","vi","vn","vu", _
                "wf","ws","ye","yt","yu","za","zm","zr","zw")
                For i = 0 to Ubound(arrDomains)
                    If arrDomains(i) = LCase(Adresse) Then
                        Flag = true
                        Exit For
                    End if
                Next
                If Flag Then
                    SetAtPlace = instr(2, PruefAdresse, "@")
                    For ix = 1 To SetAtPlace - 1
                        Character = mid(PruefAdresse,ix,1)
                        Ascii = asc(Character)
                        If NOT (Character = "." OR Character = "_" OR _
                          Character = "-" OR (ASCII > 47 AND ASCII < 58) OR _
                          (ASCII > 96 AND ASCII < 123)) Then
                            CheckEmail = false
                            Exit Function
                        End if
                    Next
                    CheckEmail = true
                    Exit Function
                End If
            End if
        End if
    End if
    CheckEmail = false
End Function
%>

Das Problem hierbei ist nicht die Funktionalität, denn beide Möglichkeiten funktionieren gleich. Programmierer schreiben oftmals ein Programm, "knien" sich da richtig rein. Nach dem Schreiben des Programms wissen Sie (hoffentlich) alles über das Programm. Nach Wochen oder Monaten muss etwas angepasst werden, nur dann weiss man nicht mehr, was jetzt diese Abfrage macht usw. Die Übersichtlichkeit geht verloren. Programmieren Sie deshalb so, daß Sie auch nach Wochen oder Monaten noch erkennen können, was das Programm wo macht. Und eventuell muss sich ein anderer Programmierer durch Ihr Programm bemühen, deshalb: Gleich von Anfang an übersichtlich programmieren!

Die erste Prozedur stellt das Formular dar, ein Textarea und ein Submit-Button. Das Textarea ist 75 Zeichen breit. Falls Sie schon einmal einen Newsletter erhalten haben (wie z.B. den von asphelper.de), ist Ihnen vielleicht schon aufgefallen, daß die max. Zeilenlänge gleich ist, was das Aussehen des Newsletters verbessert. Beim schreiben Ihres Newsletters sollten Sie deshalb auf die Zeilenlänge (z.B. 75 Zeichen) achten und die Zeilenumbrüche manuell einbinden.

Die nächste Prozedur "Senden" liest die Email-Adressen aus der Datenbank aus und versendet den Newsletter. Bevor der Newsletter an eine Email-Adresse gesandt wird, erfolgt nochmals eine Prüfung, diese Prüfung habe ich in Tipp 18 bereits beschrieben. Wenn Sie jedoch mit Sicherheit davon ausgehen können, daß die Email-Adressen beim Eintragen geprüft werden, so ist natürlich eine erneute Prüfung nicht erforderlich.

Für das Versenden der Email gibt es mehrere Ansätze. In diesem Beispiel wird jede Email-Adresse einzeln ausgelesen, und anschliessend wird jede Email einzeln versandt. Der Grund für diesen Ansatz ist, daß Sie den Abonnenten des Newsletters mit der Email-Adresse oder dem Namen ansprechen können. Falls jedoch der Newsletter-Text für jeden Abonnenten gleich ist, so können Sie das Programm etwas umschreiben. Der Grund dafür ist die Performance. Wenn Sie nur einige Adressen haben (z.B. mehrere Hundert), so brauchen Sie sich kaum um die Performance kümmern. Wichtig wird die Beachtung der Performance, wenn Sie mehrere Tausend oder gar mehrere Hunderttausend Adressen haben.

Zuletzt wird ausgegeben, wieviele Adressen ausgegeben wurden, und bei welchen Email-Adressen es Probleme gab. Noch ein kleiner Tipp: Eventuell sollten Sie Ihren Provider fragen, wann Sie den Newsletter versenden sollten. Das Versenden von mehreren Tausende Mails zur besten Tageszeit macht Sie nicht unbedingt beliebt bei einem Provider.

Rechtliches zum Newsletter-Versand
Das ganze Rechtliche sollten Sie auf jeden Fall beachten, vorweg aber noch etwas rechtlichtes: Die Hinweise hier sind nur Empfehlungen, es entsteht daraus kein rechtlicher Anspruch. Sie sollten sich auf jeden Fall bei kundigen Stellen informieren, eventuell auch bei einem Rechtsanwalt.

Was also ist beim Versenden eines Newsletters zu beachten? Zuerst einmal muss klar erkennbar sein, wer der Absender des Newsletters ist, geben Sie hier idealerweise die Internet-Adresse an. Ausserdem müssen Sie eine Adresse angeben, in welche der Empfänger den Newsletter abbestellen kann. Idealerweise setzen Sie noch einen Link auf Ihre Internet-Seite. Bei reinen Text-Emails also mit http://www.IhreDomain.de. Die meisten Email-Programme setzen dann automatisch einen Link, nur IhreDomain.de reicht nicht.

Desweiteren sollten (müssen) Sie eine Email-Adresse angeben, zum Beispiel Newsletter@IhreDomain.de. Eine Angabe eines Impressums ist ebenfalls empfehlenswert, wenn Sie eine Firma haben, oder mehrere Mitarbeiter bei Ihrer Onlineseite haben, so sollte auch die Redaktionell Verantwortliche Person genannt werden.


Herunterladen: Newsletter_Komplett.zip


 << Zum vorherigen Tipp 35:
Einfacher ASP-Chat

 Zum nächsten Tipp 37 >>
Gästebuch

top top
© Copyright By Klaus Keller, 2001-2008 - Alle Rechte vorbehalten.