> Ich soll was machen, was den Inhalt eines
ausgef�llten Formulares per
> Mail verschickt. Frage: Kann ich irgendwie abfragen, welche Felder das
> Formular, das aufgef�llt wurde, hat(te)? Und welche Inhalte da drinnen
> waren, ohne die Felder namentlich zu kennen?
> Mail verschickt. Frage: Kann ich irgendwie abfragen, welche Felder das
> Formular, das aufgef�llt wurde, hat(te)? Und welche Inhalte da drinnen
> waren, ohne die Felder namentlich zu kennen?
Ich h�nge mal mein Sendmail.asp Skript dran.
Und mach ausnahmsweise HTML mail. Das Formular muss von, an, subject usw.
Felder haben, das die festen Werte aufnimmt. Wobei die englischen und deutschen
Namen verwendet werden k�nnen. SMPT Authentifizierung ist im Code, hier im
Beispiel aber auskommentiert. Ansonsten die �blichen Sachen, die JMail so kann,
BCC, attachments, etc. Es kann mit Formularen oder Links verwendet werden,
die die Parameter im Querystring haben. Sollten mehrere Eingabefelder mit
gleichen Namen auftauchen werden die durchnummeriert und entsprechend gesendet.
Interessant vielleicht noch die Implementierung von successpage und errorpage:
nun, wie der Name sagt, l�sst sich damit das entsrechende Verhalten noch ein
bischen gestalten. Und zu guter Letzt ein Security-check, der sicherstellt dass
es vom eigenen Server aufgerufen werden kann - wir wollen es den Spammern ja
nicht ganz so einfach machen.
--
Viele Gr��e
Hubert Daubmeier
<%@ LANGUAGE = VBScript %> <%
ENABLESESSIONSSTATE = False %>
<%
Dim Field, i, sFehler, sTo, sCheck,
sErrPage, sSuccessPage
If Instr(1, Request.ServerVariables("HTTP_REFERER"), Request.ServerVariables("SERVER_NAME"), 1) = 0 Then
' -- Missbrauch durch Spammer abstellen. Seiten m�ssen vom gleichen Server kommen.
ResponseWrongServer
Else
If Instr(1, Request.ServerVariables("HTTP_REFERER"), Request.ServerVariables("SERVER_NAME"), 1) = 0 Then
' -- Missbrauch durch Spammer abstellen. Seiten m�ssen vom gleichen Server kommen.
ResponseWrongServer
Else
Set JMail =
Server.CreateObject("JMail.SMTPMail")
JMail.ServerAddress = "xx.xx.xx.xx:25"
JMail.Priority = 3 ' default priorit�t auf normal
' -- Sowohl Form als auch Querystring durchgehen. Es ist immer nur einer gef�llt
For Each Field In Request.Form
If Request.Form(Field).Count > 1 Then
For i = 1 to Request.Form(Field).Count
AssignFields Field, Request.Form(Field)(i), CStr(i)
Next
Else
AssignFields Field, Request.Form(Field), ""
End If
Next
For Each Field in Request.QueryString()
If Request.QueryString(Field).Count > 1 Then
For i = 1 to Request.QueryString(Field).Count
AssignFields Field, Request.QueryString(Field)(i), CStr(i)
Next
Else
AssignFields Field, Request.QueryString(Field), ""
End If
sCheck = sCheck or 8 ' -- da bescheissen wir ein bischen
Next
' -- hamer auch alles beieinander?
If sCheck = 15 Then
JMail.Body = JMail.Body & vbcrlf & vbcrlf & "SENDMAIL von " & Request.ServerVariables("SERVER_NAME") & ", " & Request.ServerVariables("HTTP_REFERER")
JMail.AddHeader "Orginating-IP", Request.ServerVariables("REMOTE_ADDR")
JMail.AddHeader "Forwarder", "SENDMAIL.ASP, written by Hubert Daubmeier"
JMail.AddHeader "Caller", Request.ServerVariables("HTTP_REFERER")
JMail.Encoding = "quoted-printable"
JMail.Silent = True
' -- die folgenden Felder nur, wenn der Mailserver Authentifizierung verlangt
' JMail.Message.MailServerUserName = "user"
' JMail.Message.MailServerPassWord = "pwd"
JMail.Execute
sFehler = Trim(JMail.ErrorSource)
If sFehler <> "" Then
ResponseMailServerDown sFehler
Else
If sSuccessPage <> "" Then
Response.Redirect sSuccessPage
Else
ResponseSendenOK
End if
End If
Else
If sErrPage <> "" Then
Response.Redirect sErrPage
Else
ResponseErrorInFields
End if
End if
End If
JMail.ServerAddress = "xx.xx.xx.xx:25"
JMail.Priority = 3 ' default priorit�t auf normal
' -- Sowohl Form als auch Querystring durchgehen. Es ist immer nur einer gef�llt
For Each Field In Request.Form
If Request.Form(Field).Count > 1 Then
For i = 1 to Request.Form(Field).Count
AssignFields Field, Request.Form(Field)(i), CStr(i)
Next
Else
AssignFields Field, Request.Form(Field), ""
End If
Next
For Each Field in Request.QueryString()
If Request.QueryString(Field).Count > 1 Then
For i = 1 to Request.QueryString(Field).Count
AssignFields Field, Request.QueryString(Field)(i), CStr(i)
Next
Else
AssignFields Field, Request.QueryString(Field), ""
End If
sCheck = sCheck or 8 ' -- da bescheissen wir ein bischen
Next
' -- hamer auch alles beieinander?
If sCheck = 15 Then
JMail.Body = JMail.Body & vbcrlf & vbcrlf & "SENDMAIL von " & Request.ServerVariables("SERVER_NAME") & ", " & Request.ServerVariables("HTTP_REFERER")
JMail.AddHeader "Orginating-IP", Request.ServerVariables("REMOTE_ADDR")
JMail.AddHeader "Forwarder", "SENDMAIL.ASP, written by Hubert Daubmeier"
JMail.AddHeader "Caller", Request.ServerVariables("HTTP_REFERER")
JMail.Encoding = "quoted-printable"
JMail.Silent = True
' -- die folgenden Felder nur, wenn der Mailserver Authentifizierung verlangt
' JMail.Message.MailServerUserName = "user"
' JMail.Message.MailServerPassWord = "pwd"
JMail.Execute
sFehler = Trim(JMail.ErrorSource)
If sFehler <> "" Then
ResponseMailServerDown sFehler
Else
If sSuccessPage <> "" Then
Response.Redirect sSuccessPage
Else
ResponseSendenOK
End if
End If
Else
If sErrPage <> "" Then
Response.Redirect sErrPage
Else
ResponseErrorInFields
End if
End if
End If
Sub ResponseErrorInFields()
response.write "<html><head><title>SendMail - Fehler in den Aufrufparametern</title></head><body>" & vbcrlf & _
"<p><font color=""#FF0000""><b>Fehler in den Aufruf Parametern</b></font></p>" & vbcrlf & _
"<blockquote>From=" & JMail.Sender & "<br><br>" & vbcrlf & _
"To=" & sTo & "<br><br>" & vbcrlf & _
"Subject=" & JMail.Subject & "<br><br>" & vbcrlf & _
"Body=" & JMail.Body & "<br><br>" & vbcrlf & _
"Priority=" & JMail.Priority & "</blockquote><br><br>" & vbcrlf & _
"</body></html>"
End Sub
Sub
ResponseMailServerDown(sErrorCode)
response.write "<html><head><title>SendMail - Mailserver nicht verf�gbar. Fehler " & sErrorCode & "</title></head><body>" & vbcrlf & _
response.write "<html><head><title>SendMail - Mailserver nicht verf�gbar. Fehler " & sErrorCode & "</title></head><body>" & vbcrlf & _
"<p><font
color=""#FF0000""><b>Der Mailserver antwortet nicht oder die Verbindung
ist unterbrochen</b></font></p>" & vbcrlf &
_
"<blockquote><p>Bitte entschuldigen Sie diese Panne und versuchen Sie es zu einem sp�teren Zeitpunkt noch einmal.<br>" & vbcrlf & _
"<a href=""javascript:history.back();"">Zur�ck</a></p></blockquote>" & vbcrlf & _
"</body></html>"
End Sub
"<blockquote><p>Bitte entschuldigen Sie diese Panne und versuchen Sie es zu einem sp�teren Zeitpunkt noch einmal.<br>" & vbcrlf & _
"<a href=""javascript:history.back();"">Zur�ck</a></p></blockquote>" & vbcrlf & _
"</body></html>"
End Sub
Sub
ResponseWrongServer()
response.write "<html><head><title>SendMail - Sicherheitscheck</title></head><body>" & vbcrlf & _
"<p><font color=""#FF0000""><b>Sicherheitscheck</b></font></p>" & vbcrlf & _
"<blockquote><p>Leider k�nnen Sie diese Seite nicht von einer anderen Domain aus benutzen.<br>Wir danken f�r Ihr Verst�ndnis.<br>" & vbcrlf & _
"<a href=""javascript:history.back();"">Zur�ck</a></p></blockquote>" & vbcrlf & _
"</body></html>"
End Sub
response.write "<html><head><title>SendMail - Sicherheitscheck</title></head><body>" & vbcrlf & _
"<p><font color=""#FF0000""><b>Sicherheitscheck</b></font></p>" & vbcrlf & _
"<blockquote><p>Leider k�nnen Sie diese Seite nicht von einer anderen Domain aus benutzen.<br>Wir danken f�r Ihr Verst�ndnis.<br>" & vbcrlf & _
"<a href=""javascript:history.back();"">Zur�ck</a></p></blockquote>" & vbcrlf & _
"</body></html>"
End Sub
Sub
ResponseSendenOK()
response.write "<html><head><title>Nachricht versandt</title></head><body>" & vbcrlf & _
"<H2>SendMail</H2>" & vbcrlf & _
"<blockquote><p>Ihre Nachricht wurde am " & date & ", " & time & " an " & sTo & " versandt.<br>" & vbcrlf & _
"<a href=""javascript:history.back();"">Zur�ck</a></p></blockquote>" & vbcrlf & _
"</body></html>"
End Sub
response.write "<html><head><title>Nachricht versandt</title></head><body>" & vbcrlf & _
"<H2>SendMail</H2>" & vbcrlf & _
"<blockquote><p>Ihre Nachricht wurde am " & date & ", " & time & " an " & sTo & " versandt.<br>" & vbcrlf & _
"<a href=""javascript:history.back();"">Zur�ck</a></p></blockquote>" & vbcrlf & _
"</body></html>"
End Sub
Sub AssignFields(sField, sValue,
sNr)
select case lcase(sField)
case "to", "an"
JMail.AddRecipient sValue
sTo = sTo & "; " & sValue ' zwischenmerken
sCheck = sCheck or 1
select case lcase(sField)
case "to", "an"
JMail.AddRecipient sValue
sTo = sTo & "; " & sValue ' zwischenmerken
sCheck = sCheck or 1
case "to2", "to3",
"to4"
JMail.AddRecipient sValue
JMail.AddRecipient sValue
case "from",
"von"
JMail.Sender = sValue
sCheck = sCheck or 2
JMail.Sender = sValue
sCheck = sCheck or 2
case "subject",
"betreff", "titel"
JMail.Subject = sValue
sCheck = sCheck or 4
JMail.Subject = sValue
sCheck = sCheck or 4
case "errorpage",
"error"
sErrPage = sValue
sErrPage = sValue
case "cc", "copy",
"kopie"
JMail.AddRecipientCC sValue
JMail.AddRecipientCC sValue
case "bcc",
"blindcopy"
JMail.AddRecipientBCC sValue
JMail.AddRecipientBCC sValue
case "attach",
"attachment", "anlage"
Dim fso, sfile
sfile = Server.Mappath(sValue)
Set fso = CreateObject("Scripting.FileSystemObject")
If fso.FileExists(sfile) Then
JMail.AddAttachment sfile
Else
JMail.Body = JMail.Body & vbcrlf & "HINWEIS: Anlage " & sValue & " nicht gefunden/nicht vorhanden" & vbcrlf & vbcrlf
End If
Set fso = nothing
Dim fso, sfile
sfile = Server.Mappath(sValue)
Set fso = CreateObject("Scripting.FileSystemObject")
If fso.FileExists(sfile) Then
JMail.AddAttachment sfile
Else
JMail.Body = JMail.Body & vbcrlf & "HINWEIS: Anlage " & sValue & " nicht gefunden/nicht vorhanden" & vbcrlf & vbcrlf
End If
Set fso = nothing
case "successpage",
"success"
sSuccessPage = sValue
sSuccessPage = sValue
case
"priority"
select case sValue
case "1", "high", "hoch"
JMail.Priority = 1
case "5", "low", "niedrig"
JMail.Priority = 5
end select
select case sValue
case "1", "high", "hoch"
JMail.Priority = 1
case "5", "low", "niedrig"
JMail.Priority = 5
end select
case
else
JMail.Body = JMail.Body & vbcrlf & sField & iff(sNr="", "", " - " & sNr) & ": " & sValue & vbcrlf
sCheck = sCheck or 8
JMail.Body = JMail.Body & vbcrlf & sField & iff(sNr="", "", " - " & sNr) & ": " & sValue & vbcrlf
sCheck = sCheck or 8
end select
End Sub
End Sub
Function Iff(iBoole, sThen,
sElse)
If iBoole Then Iff = sThen Else Iff = sElse
End Function
If iBoole Then Iff = sThen Else Iff = sElse
End Function
%>
