11. marts 2004 - 20:45Der er
76 kommentarer og 1 løsning
Send mail ved tryk på knap
Er ved at lave en side for et firma, men jeg har lidt problemer med at få sendt en mail ved tryk på en tilmeld-knap. Når kunden skal tilmelde sig firmaets nyhedsbrev, indtaster man navn og e-mail og trykker derefter på "tilmeld". Ved tryk på denne knap, skal min side sende en mail afsted til ejeren af firmaet, som så selv sørger for at få sendt nyhedsbrevet til kunden.
Det ene tekstfelt hedder "navn", det andet hedder "email", og knappen har en action="sendmail.php". Indholdet af sendmail.php ser således ud:
mail("kingcheops@hotmail.com", "En kunde ønsker Haunagolfs nyhedsbrev tilsendt", "$navn har tilmeldt $email til Haunagolfs nyhedsbrev");
echo "Vi har registreret din mailadresse, og du vil fremover modtage Haunagolfs spændende nyhedsbrev."; ?>
Men istedet for at få en mail, får jeg følgende fejl:
Notice: Undefined index: navn in D:\www\haunagolf.dk\test\sendmail.php on line 2
Notice: Undefined index: email in D:\www\haunagolf.dk\test\sendmail.php on line 3
Warning: mail() [function.mail]: Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in D:\www\haunagolf.dk\test\sendmail.php on line 5 Vi har registreret din mailadresse, og du vil fremover modtage Haunagolfs spændende nyhedsbrev.
Har I nogle ideer til hvordan jeg kan få løst problemet? Desuden vil jeg meget gerne have "Vi har registreret din mailadresse, og du vil fremover modtage Haunagolfs spændende nyhedsbrev." kaldt i en iframe på min forside og ikke på en ny side. Kan det lade sig gøre?
Ja, det fandt jeg ud af - bortset fra at min Dreamweaver opfører sig lidt mærkeligt, og fjerner stort set hele min side i Design View. Når jeg uploader det, ser det dog stadig ok ud...
Nu får jeg dog "kun": Warning: mail() [function.mail]: Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in D:\www\haunagolf.dk\test\sendmail.php on line 5 Vi har registreret din mailadresse, og du vil fremover modtage Haunagolfs spændende nyhedsbrev.
Jeg vil foreslå at du samtidig ændrer 'sendmail.php' til:
<? if (isset($_POST['tilmeld'])) { $navn = $_POST["navn"]; $email = $_POST["email"];
mail("detox@buksevand.dk", "En kunde ønsker Haunagolfs nyhedsbrev tilsendt", "$navn har tilmeldt\n$email til Haunagolfs nyhedsbrev"); echo "Vi har registreret din mailadresse, og du vil fremover modtage Haunagolfs spændende nyhedsbrev."; } ?>
OK, det havde jeg ikke gjort... Har nu kørt først phpdev_stop.bat og derefter phpdev_start.bat - er det rigtigt? For det ser stadig ikke ud til at virke... Har uploadet det, og prøver at køre det fra www.haunagolf.dk/test/, men stadig uden held!
Warning: mail() [function.mail]: Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in D:\www\haunagolf.dk\test\sendmail.php on line 6 Vi har registreret din mailadresse, og du vil fremover modtage Haunagolfs spændende nyhedsbrev.
Æv, troede lige den var der - den var lidt længere op at komme med fejlmeddelelsen, som nu ser således ud:
Warning: mail() [function.mail]: SMTP server response: 554 : Relay access denied in D:\www\haunagolf.dk\test\sendmail.php on line 9 Vi har registreret din mailadresse, og du vil fremover modtage Haunagolfs spændende nyhedsbrev.smtp.mail.dk kso@tdcadsl.dk
Så har du i det mindste forbindelse til mail serveren, men den nægter at videresende. Så ved jeg snart ikke, hvad du skal gøre. Har du genstartet serveren igen?
mail("kingcheops@hotmail.com", "En kunde ønsker Haunagolfs nyhedsbrev tilsendt", "$navn har tilmeldt\n$email til Haunagolfs nyhedsbrev"); echo "Vi har registreret din mailadresse, og du vil fremover modtage Haunagolfs spændende nyhedsbrev."; } ?>
Nu indeholder min sendmail.php præcis det du lige skrev, og jeg får følgende:
Warning: mail() [function.mail]: SMTP server response: 554 : Relay access denied in D:\www\haunagolf.dk\test\sendmail.php on line 8 Vi har registreret din mailadresse, og du vil fremover modtage Haunagolfs spændende nyhedsbrev.
Men hvis jeg ikke har fået genstartet serveren, hvordan gør jeg det så?
Nej, serveren står ikke hos mig privat - uploader til den server der hoster haunagolf.dk, som vist nok er fra firmaet Combo - deraf kw@combo.dk.
Bortset fra det har jeg nu modtaget 2 mails fra root@1go.dk indeholdende teksten " har tilmeldt til Haunagolfs nyhedsbrev" - altså UDEN at have hentet navn og email variablerne!
Men så burde den jo være sat op til afsendelse af mails. Så burde dette virke:
<? if (isset($_POST['tilmeld'])) { $navn = $_POST["navn"]; $email = $_POST["email"]; mail("kingcheops@hotmail.com", "En kunde ønsker Haunagolfs nyhedsbrev tilsendt", "$navn har tilmeldt\n$email til Haunagolfs nyhedsbrev"); echo "Vi har registreret din mailadresse, og du vil fremover modtage Haunagolfs spændende nyhedsbrev."; } ?>
Men har jo fået fejlmeddelser hver gang?! Et eller andet virker - og et eller andet virker ikke! Måske er det kun de gange vi selv fortalte den smtp og afsender, at det virker? Burde måske sætte det ind for en sikkerheds skyld...
Men det er da også mærkeligt at den ikke indsætter variablerne?!
Prøv lige med og skriv hvad der kommer til at stå:
<? if (isset($_POST['tilmeld'])) { $navn = $_POST["navn"]; $email = $_POST["email"]; mail("kingcheops@hotmail.com", "En kunde ønsker Haunagolfs nyhedsbrev tilsendt", "$navn har tilmeldt\n$email til Haunagolfs nyhedsbrev"); echo "Vi har registreret din mailadresse, og du vil fremover modtage Haunagolfs spændende nyhedsbrev."; echo $navn; echo $email; } ?>
Warning: mail() [function.mail]: Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in D:\www\haunagolf.dk\test\sendmail.php on line 5 Vi har registreret din mailadresse, og du vil fremover modtage Haunagolfs spændende nyhedsbrev. Karsten Schou Olsen kso@tdcadsl.dk
mail("kingcheops@hotmail.com", "En kunde ønsker Haunagolfs nyhedsbrev tilsendt", "$navn har tilmeldt\n$email til Haunagolfs nyhedsbrev"); echo "Vi har registreret din mailadresse, og du vil fremover modtage Haunagolfs spændende nyhedsbrev."; echo $navn; echo $email;
Warning: mail() [function.mail]: SMTP server response: 550 5.7.1 Unable to relay for kingcheops@hotmail.com in D:\www\haunagolf.dk\test\sendmail.php on line 8 Vi har registreret din mailadresse, og du vil fremover modtage Haunagolfs spændende nyhedsbrev. Karsten Schou Olsen kso@tdcadsl.dk
mail("kingcheops@hotmail.com", "En kunde ønsker Haunagolfs nyhedsbrev tilsendt", "$navn har tilmeldt\n$email til Haunagolfs nyhedsbrev"); echo "Vi har registreret din mailadresse, og du vil fremover modtage Haunagolfs spændende nyhedsbrev."; echo $navn; echo $email;
Har ikke mulighed for at tjekke en haunagolf.dk-adresse, så har stadig prøvet at sende til min hotmail, og får følgende:
Warning: mail() [function.mail]: SMTP server response: 553 sorry, that domain isn't in my list of allowed rcpthosts (#5.7.1) in D:\www\haunagolf.dk\test\sendmail.php on line 8 Vi har registreret din mailadresse, og du vil fremover modtage Haunagolfs spændende nyhedsbrev. Karsten Schou Olsen kso@tdcadsl.dk
Okay, det betyder at du ikke må sende til den adresse du prøver på, den tillader sikkert kun at der sendes til @haunagolf.dk eller andre domæner der ligger på samme server.
For at bruge SMTP til domænenavnet, skal du bruge et brugernavn og et password! Ellers er det en rigtig fuck mailserver! Hvis du vil sende fra serveren, du tester på, skal mail være sat rigtigt i php.ini Sidder selv på en TDC, og min mail er sat til mail.tele.dk
detox: Du smider det kode du skrev før ind i én fil, som du kører på din 1go server, og så virker det? eller er php-delen af det i en sendmail.php og resten i en html-fil?
Ja, det er primært den jeg har skrevet... har også prøvet med kingcheops@hotmail.com
Har lige prøvet at lave en tilsvarende sendmail.php som du lavede før, og lagde den op på min 1go server - og her fungerer det også fint! Afsenderadressen er godt nok lig med den man skriver i e-mail boxen, men ellers virker det fint - på 1go serveren
Tja, det er jo i princippet ligegyldigt... Bare mailen indeholder navn og e-mail på den der skal tilmeldes nyhedsbrevet er det jo fint! Det er nok fint nok at det bare er den der bliver indtastet...
Men nu virker det altså i én seperat fil på en 1go server... skulle jo gerne have det til at virke på mit site også!
mail("kingcheops@hotmail.com", "En kunde ønsker Haunagolfs nyhedsbrev tilsendt", "$navn har tilmeldt\n$email til Haunagolfs nyhedsbrev", $header); echo "Vi har registreret din mailadresse, og du vil fremover modtage Haunagolfs spændende nyhedsbrev."; } ?>
Hold kæft, hvor er jeg træt af det efterhånden... Har indsat præcis den kode du har skrevet ovenfor i de to filer, men får nu:
Warning: mail() [function.mail]: Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in D:\www\haunagolf.dk\test\sendmail.php on line 7 Vi har registreret din mailadresse, og du vil fremover modtage Haunagolfs spændende nyhedsbrev.
Den sidste fejl du kommer med betyder simpelt at der ikke er en SMTP på localhost, den svarer i hvert til fald ikke. Kunne tyde på en fejl opsætning hos webhotellet, derfor virker det sikkert for detox, da han har et sted der er sat op korrekt, koden virker nemlig også hos mig.
Jeg ville måske tage fat i Webhotellet og høre hvorfor mail() ikke virker !!!!
Ellers ville jeg prøve at tage: <? if (isset($_POST['tilmeld'])) { ini_set('SMTP', 'mail.haunagolf.dk'); $navn = $_POST["navn"]; $email = $_POST["email"]; $header = "From: $email\n";
mail("info@haunagolf.dk", "En kunde ønsker Haunagolfs nyhedsbrev tilsendt", "$navn har tilmeldt\n$email til Haunagolfs nyhedsbrev", $header); echo "Vi har registreret din mailadresse, og du vil fremover modtage Haunagolfs spændende nyhedsbrev.";
} ?>
Og se om dette ikke skulle virke, eller en anden haunagolf.dk adresse som du kan få mulighed for at tjecke.
Så blev der tid til at kigge på det igen... Har nu prøvet at uploade mit site - UDEN ændringer - til en anden server, og her fungerer det upåklageligt! Ergo er det Combo's server den er gal med, hvilket jeg har bragt videre til Haunagolf, så nu skal vi enten have en snak med Combo, eller også skal vi finde en anden server... For nu virker det i hvert fald - tak for hjælpen, gutter!
Men det leder mig nu til næste del af mit spørgsmål: Er det ikke muligt at kalde "Vi har registreret din mailadresse, og du vil fremover modtage Haunagolfs spændende nyhedsbrev." i en iframe på min forside (hvorfor tilmeldingen sker), i stedet for at den springer til en ny side, og man så skal gå tilbage til forsiden?
Nyhedsbrevstilmeldingen er ikke i en iframe (står bare i en almindelig tabel), men det er iframen på hovedsiden (det store tekstfelt midt på siden), jeg godt vil have beskeden til at fremkomme i. Så det skal være fra tabellen i højre til iframen i midten... Kører iøvrigt midlertidigt sitet på www.koktail.dk/karsten/hauna/ indtil der er kommet på en løsning på combo-problemet...
Altså det du mener er at dit nuværende indhold i iframen skal forsvinde og så skal beskeden: "Vi har registreret din mailadresse, og du vil fremover modtage Haunagolfs spændende nyhedsbrev." poppe op der istedet, når man trykker på: "Tilmeld"?
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Haunagolf - Altid god kvalitet!</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <link href="haunagolf.css" rel="stylesheet" type="text/css"> </head>
mail("kingcheops@hotmail.com", "En kunde ønsker Haunagolfs nyhedsbrev tilsendt", "$navn har tilmeldt\n$email til Haunagolfs nyhedsbrev", $header); echo "<div style='text-align: center;'>Vi har registreret din mailadresse, og du vil fremover modtage Haunagolfs spændende nyhedsbrev.</div>"; } else { ?> <font color="4d9c01" size="2" face="Verdana, Arial, Helvetica, sans-serif"><strong>Velkommen til HaunaGOLF!</strong></font><br><br> <font size="1" face="Verdana, Arial, Helvetica, sans-serif">
Vi fortsætter selvfølgelig med at levere de kendte kvalitetsprodukter fra leverandører som Range Servant, Par Aide og Standard Golf samt vore Hauna bagskabe. <br><br> Her findes flere nyheder indenfor: <br><br> • Flotte, eksklusive, men prisvenlige tee-skilte fra England<br> • Stilige indendørs skabe med trædør (velegnet til f.eks. omklædningsrum)<br> • Bagskabe i mere økonomisk udgave<br>
• Gedigen club washer konstrueret af kvalitetskomponenter<br> <br> Ring endelig for yderligere information på +45 70 27 05 09<br> Vi møder også gerne op til uforpligtende kosulentbesøg. <br><br> På forhånd tak, <br><br> Morten Carlsen<br>
HaunaGOLF </font> <br><br> <font color="4d9c01" size="2" face="Verdana, Arial, Helvetica, sans-serif"><strong>Velkommen til HaunaGOLF!</strong></font><br><br> <font size="1" face="Verdana, Arial, Helvetica, sans-serif"> Vi fortsætter selvfølgelig med at levere de kendte kvalitetsprodukter fra leverandører som Range Servant, Par Aide og Standard Golf samt vore Hauna bagskabe. <br><br> Her findes flere nyheder indenfor: <br><br> • Flotte, eksklusive, men prisvenlige tee-skilte fra England.<br>
• Stilige indendørs skabe med trædør - velegnet til f.eks. omklædningsrum.<br> • Bagskabe i mere økonomisk udgave.<br> • Gedigen club washer konstrueret af kvalitetskomponenter. <br><br> Ring endelig for yderligere information på +45 70 27 05 09<br> Vi møder også gerne op til uforpligtende kosulentbesøg. <br><br>
På forhånd tak, <br> <br> Morten Carlsen<br> HaunaGOLF </font> <? }?> </td> </tr> </table> </body> </html>
Det er simpelthen bare super... Det ser ud til at virke ganske fortrinligt! Skal bare lige have stylet teksten, men det er jo det mindste af det... Burde css'en iøvrigt ikke også virke på det dokument, selvom det er php - det har vel ikke noget at skulle have sagt?!
Så mangler jeg bare et svar, så jeg kan tildele nogle point:-)
Ja, det ville jeg også mene - nå, det kan jeg altid kigge på! Takker mange gange for hjælpen - vender sikkert tilbage med flere spørgsmål/point på et tidspunkt;-)
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.