Just nu i M3-nätverket
Gå till innehåll

script som automatiskt skickar e-mail när man klickar på insert


mhnr9

Rekommendera Poster

jag har ett formulär med lite information som skickas till en databas. jag vill att när någon klickar på insert så skickas det automatiskt(!) ett e-mail innehållande subject och en rad text (body) till ett antal mottagare. jag behöver alltså ett script som man sedan kan oberopa med onclick eller något liknande....

tack på förhand...

 

Länk till kommentar
Dela på andra webbplatser

m a r c u s

Med javascript blir det knivigt (läs omöjligt). Med ett skript på serversidan lite lättare. Har du tillgång till ASP, PHP, JSP eller liknande?

 

Länk till kommentar
Dela på andra webbplatser

Hej!

 

Här har du en subrutin i ASP för att skicka mail.

<%

Sub sendMail(sFrom, sBcc, sTo, sSubject, sBody)

Const cdoSendUsingMethod = "http://schemas.microsoft.com/cdo/configuration/sendusing"

Const cdoSendUsingPort = 2

Const cdoSMTPServer = "http://schemas.microsoft.com/cdo/configuration/smtpserver"

Const cdoSMTPServerPort = "http://schemas.microsoft.com/cdo/configuration/smtpserverport"

Const cdoSMTPConnectionTimeout = "http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout"

 

Dim objMail, Attached, objConfig, Fields

ON ERROR RESUME NEXT

Set objMail = CreateObject("CDO.Message")

Set objConfig = Server.CreateObject("CDO.Configuration")

Set Fields = objConfig.Fields

' Set config fields we care about

With Fields

.Item(cdoSendUsingMethod) = cdoSendUsingPort

.Item(cdoSMTPServer) = "YOURMAILSERVER" 'YOUR MAILSERVER ADDRESS HERE

.Item(cdoSMTPServerPort) = 25

.Item(cdoSMTPConnectionTimeout) = 30

.Update

End With

 

With objMail

Set .Configuration = objConfig

.From = sFrom

.To = sTo

.BCC = sBcc

.Subject = sSubject

.HTMLBody = sBody

.Send

End With

If Err <> 0 Then

Response.write "<p><font color=""red""><b>The mailserver reported an error: " & Err.Description & ".</b></font></p>"

Err.Clear

End If

Set objConfig = Nothing

Set objMail = Nothing

End Sub

%>

 

/PJ

 

Länk till kommentar
Dela på andra webbplatser

tjo.. har testat en massa olika varianter nu, men jag får inte riktigt rätt på det, så de är lika bra att fråga...

 

var på sidan skall det ligga?

var skriver jag in vilka adresser (subject, boby osv.) det skall skickas till?

hur anropar jag den när insert klickas på, med onclick="sendMail();" eller något liknande?????

tackar...

 

Länk till kommentar
Dela på andra webbplatser

Anjuna Moon

Den kod du fick av PJP ska du köra efter att du postat ditt formulär. Du kan inte anropa asp-kod från JS. Du får skriva ett html-formulär med subject, body osv. Detta postar du till sidan med PJPs script och hämtar där dina formulärvärden och lägger in de i rätt variabler.

 

Länk till kommentar
Dela på andra webbplatser

tjo.. så här ser en del av koden ut. om jag vill skicka namn (author) som subject och anställningsnummret (anst) i bodyn hur skall jag då använda pjs script?

 

 

<table  >
<form id="edit_incident" name="edit_incident" action="Insert.asp" method="post">
<input type=hidden name="incidentID" value="<% =incidentID %>">	
<tr>
<td class='labelTD'>Namn:</td>
<td class='dataTD' >
<input type=text  name="Author" size="40" maxlength="50" value="<% =Author%>">
</td>
</tr>
<tr>
<td class='labelTD'>Anställningsnr.:</td>
<td class='dataTD' >
<input type=text  name="anst" size="5" maxlength="5" value="<% =anst%>">
</td>
</tr>
<tr>
<td class=dataTD>
<% if incidentID = "" then %><input type=submit name=insert_button value='INSERT'  <% end if %>
</td>

 

Länk till kommentar
Dela på andra webbplatser

Anjuna Moon

Ändra adresserna nedan till dina egna adresser

' LÄGG TILL DETTA
sFrom="automail@dindomän.se"
sTo="dinmail@dinmailserver.se"
sSubject=Request.Form("Author")
sBody=Request.Form("anst")
' --- SLUT TILLÄGG -----

With objMail
Set .Configuration = objConfig
.From = sFrom
.To = sTo
.BCC = sBcc
.Subject = sSubject
.HTMLBody = sBody
.Send

 

Länk till kommentar
Dela på andra webbplatser

Hej!

 

Jag skickar ett exempel baserat på din kod...

 

 

<%
Sub sendMail(sFrom, sBcc, sTo, sSubject, sBody)
Const cdoSendUsingMethod = "http://schemas.microsoft.com/cdo/configuration/sendusing"
Const cdoSendUsingPort = 2
Const cdoSMTPServer = "http://schemas.microsoft.com/cdo/configuration/smtpserver"
Const cdoSMTPServerPort = "http://schemas.microsoft.com/cdo/configuration/smtpserverpo
rt"
Const cdoSMTPConnectionTimeout = "http://schemas.microsoft.com/cdo/configuration/smtpconnecti
ontimeout"

Dim objMail, Attached, objConfig, Fields
ON ERROR RESUME NEXT
Set objMail = CreateObject("CDO.Message")
Set objConfig = Server.CreateObject("CDO.Configuration")
Set Fields = objConfig.Fields
' Set config fields we care about
With Fields
.Item(cdoSendUsingMethod) = cdoSendUsingPort
.Item(cdoSMTPServer) = "YOURMAILSERVER" 'YOUR MAILSERVER ADDRESS HERE
.Item(cdoSMTPServerPort) = 25
.Item(cdoSMTPConnectionTimeout) = 30
.Update
End With

With objMail
Set .Configuration = objConfig
.From = sFrom
.To = sTo
.BCC = sBcc
.Subject = sSubject
.HTMLBody = sBody
.Send
End With 
If Err <> 0 Then 
Response.write "<p><font color=""red""><b>The mailserver reported an error: " & Err.Description & ".</b></font></p>"
Err.Clear
End If
Set objConfig = Nothing
Set objMail = Nothing
End Sub
If Request.Form("insert_button") <> "" Then
From = "automail@dindomän.se"
To = "dinmail@dinmailserver.se"
Subject = Request.Form("Author")
Body = Request.Form("anst") & "<p>" & Request.Form("incidentID") & "</p>"
call sendMail(From, Bcc, To, Subject, Body)
End If
%>

<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>insert.asp</title>
</head>

<body>

<form id="edit_incident" name="edit_incident" action="?" method="post">
<input type=hidden name="incidentID" value="<% =incidentID %>"> 
<table>
<tr>
<td class='labelTD'>Namn:</td>
<td class='dataTD' >
<input type=text name="Author" size="40" maxlength="50" value="<% =Author%>">
</td>
</tr>
<tr>
<td class='labelTD'>Anställningsnr.:</td>
<td class='dataTD' >
<input type=text name="anst" size="5" maxlength="5" value="<% =anst%>">
</td>
</tr>
<tr>
<td class=dataTD>
<% if incidentID = "" then %>
<input type="submit" name="insert_button" value="INSERT">
<% end if %>
</td>
</tr>
</table>
</form>
</body>

</html>

 

/PJ

 

[inlägget ändrat 2005-04-23 22:22:34 av PJP]

Länk till kommentar
Dela på andra webbplatser

  • 2 veckor senare...

jag har nu testat med denna kod men jag får bara samma fel och jag kan inte hitta vad det är jag skall ändra.. den klagar inte på något annat och de andra ser "lika dant ut"

 

 

Microsoft VBScript compilation error '800a0400'

 

Expected statement

 

/martinkopia/admin_incident_forslag_mail.asp, line 47

 

To = "mini9@mail.com"

^

 

 

Länk till kommentar
Dela på andra webbplatser

Hej igen!

Jag var nog lite för snabb när du fick mitt förra förslag. To är nämligen ett reserverat ord i VB. Du har en ny variant här...

 

If Request.Form("insert_button") <> "" Then

strFrom = "automail@dindomän.se"

strTo = "dinmail@dinmailserver.se"

strBcc = ""

strSubject = Request.Form("Author")

strBody = Request.Form("anst") & "<p>" & Request.Form("incidentID") & "</p>"

call sendMail(strFrom, strBcc, strTo, strSubject, strBody)

End If

 

/PJ

 

 

Länk till kommentar
Dela på andra webbplatser

ok.. fint. nu fungerar det så långt. och infon läggs in i databasen. men inget mail går iväg. jag får upp de felmeddelande som står i scriptet.

 

The mailserver reported an error: Object required.

 

vad kan detta bero på?

 

Länk till kommentar
Dela på andra webbplatser

Har du angett din mailserveradress (eller ip)?

 

.Item(cdoSMTPServer) = "YOURMAILSERVER"

 

Länk till kommentar
Dela på andra webbplatser

japp... enligt den uppgift jag fått skall den stämma.. skall den se ut på något speciellt sett?

 

Länk till kommentar
Dela på andra webbplatser

tjenare.. jag har testat lite olika varianter men det verkar inte vara det som är felet.

 

 

Länk till kommentar
Dela på andra webbplatser

Hej igen!

 

Ta bort ON ERROR RESUME NEXT och

 

If Err <> 0 Then

Response.write "<p><font color=""red""><b>The mailserver reported an error: " & Err.Description & ".</b></font></p>"

Err.Clear

End If

 

Kolla vad du får för felmeddelande och på vilken rad som felet uppstår.

 

/PJ

 

Länk till kommentar
Dela på andra webbplatser

tjo.. då får jag detta felmeddelnade..

 

Microsoft VBScript runtime error '800a01ad'

 

ActiveX component can't create object: 'CDO.Message'

 

/martinkopia/admin_incident_forslag.asp, line 974

 

 

Länk till kommentar
Dela på andra webbplatser

Ok!

 

Då ska du få en annan variant på subrutin

 

Sub sendMail(sFrom, sBcc, sTo, sSubject, sBody)

Set MyCDONTSMail = CreateObject("CDONTS.NewMail")

MyCDONTSMail.From = sFrom

MyCDONTSMail.To = sTo

MyCDONTSMail.Subject = sSubject

MyCDONTSMail.Body= sBody

MyCDONTSMail.Send

set MyCDONTSMail=nothing

End Sub

 

/PJ

 

* Kom på att det fungerar nog inte med CDONTS på Win 2000. I den versionen så utgick CDONTS för att ersättas med CDO *

 

[inlägget ändrat 2005-05-03 14:26:22 av PJP]

Länk till kommentar
Dela på andra webbplatser

Hej igen!

 

Ta bort hela subrutinen SendMail och ersätt den med ovanstående kod. Däremot, som jag sa i mitt senaste inlägg, så är det inte säkert att den nya varianten fungerar då jag har för mig att CDONTS ersattes med CDO fr.o.m. win 2000.

 

/PJ

 

Länk till kommentar
Dela på andra webbplatser

hallo... jag får inga felmeddelande i alla fall.. men det går ju tyvärr inte iväg något mail så nu lägger jag med all kod, så får du se vad som skall vara med bara för att vara på den säkra sidan. fungerar det inte så fungerar det inte............ tack för hjälpen.

 

<%

Sub sendMail(sFrom, sBcc, sTo, sSubject, sBody)

Set MyCDONTSMail = CreateObject("CDONTS.NewMail")

MyCDONTSMail.From = sFrom

MyCDONTSMail.To = sTo

MyCDONTSMail.Subject = sSubject

MyCDONTSMail.Body= sBody

MyCDONTSMail.Send

set MyCDONTSMail=nothing

End Sub

 

' Sub sendMail(sFrom, sTo, sBcc, sSubject, sBody)

' Const cdoSendUsingMethod = "http://schemas.microsoft.com/cdo/configuration/sendusing"

' Const cdoSendUsingPort = 2

' Const cdoSMTPServer = "http://schemas.microsoft.com/cdo/configuration/smtpserver"

' Const cdoSMTPServerPort = "http://schemas.microsoft.com/cdo/configuration/smtpserverport"

' Const cdoSMTPConnectionTimeout = "http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout"

 

' Dim objMail, Attached, objConfig, Fields

' ON ERROR RESUME NEXT

' Set objMail = CreateObject("CDO.Message")

' Set objConfig = Server.CreateObject("CDO.Configuration")

' Set Fields = objConfig.Fields

' Set config fields we care about

' With Fields

' .Item(cdoSendUsingMethod) = cdoSendUsingPort

' .Item(cdoSMTPServer) = "eukltxmbx1.eu" 'YOUR MAILSERVER ADDRESS HERE

' .Item(cdoSMTPServerPort) = 25

' .Item(cdoSMTPConnectionTimeout) = 30

' .Update

' End With

 

' With objMail

' Set .Configuration = objConfig

' .From = sFrom

' .To = sTo

' .Bcc = sBcc

' .Subject = sSubject

' .HTMLBody = sBody

' .Send

' End With

' If Err <> 0 Then

' Response.write "<p><font color=""red""><b>The mailserver reported an error: " & Err.Description & ".</b></font></p>"

' Err.Clear

' End If

' Set objConfig = Nothing

' Set objMail = Nothing

' End Sub

 

If Request.Form("insert_button") <> "" Then

strFrom = ""

strTo = "martin.hansson@celanese.de"

strBcc = ""

strSubject = Request.Form("Author")

strBody = Request.Form("anst") & "<p>" & Request.Form("incidentID") & "</p>"

call sendMail(strFrom, strTo, strBcc, strSubject, strBody)

End If

%>

 

Länk till kommentar
Dela på andra webbplatser

Hej igen!

 

Hittar inget som ser fel ut. Om du ligger på ett webbhotell, så får du ta kontakt med supporten där och fråga vilka möjligheter det finns att skicka mail.

 

/PJ

 

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...