PHP script dat twee mails verstuurt

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Wiitigoo orgham

wiitigoo orgham

08/10/2015 23:46:04
Quote Anchor link
Goedenavond allemaal,

Ik ben sinds kort me meer aan het verdiepen in PHP. Ik weet dat ik nooit een programmeerkoning zal worden, maar ik vind het wel interessant en als designer kom ik er regelmatig mee in aanraking. Voor een vriendin ben ik bezig om een eenvoudige pagina te maken met daarop een "houd me op de hoogte" veld.

Dit formulier met dus maar 1 inputveld moet 2 dingen doen:

1. een mailtje versturen naar de persoon die zich inschrijft (dit heb ik werkend!)
2. een mailtje sturen naar de admin zodat die weet wie zich heeft ingeschreven. Dit laatste krijg ik niet aan de praat.

Hierbij het script:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?PHP

$email
= $_POST["email"];
$to = "[email protected]";
$subject = "Nieuwe registratie voor de  nieuwsbrief";
$headers = "From: $email\n";
$message = "De volgende persoon heeft zich ingeschreven voor de nieuwsbrief:\n

E-mail Adres: $email"
;
$user = "$email";
$usersubject = "inschrijving nieuwsbrief";
$userheaders = "From: [email protected]\n";
$usermessage = "Dank voor je inschrijving op de nieuwsbrief. We houden je op de hoogte.";
mail($to,$subject,$message,$headers);
mail($user,$usersubject,$usermessage,$userheaders);
?>


Kan iemand mij vertellen wat ik verkeerd doe? MIjn dank is groot!
Gewijzigd op 09/10/2015 00:32:01 door Wiitigoo orgham
 
PHP hulp

PHP hulp

24/04/2024 04:06:05
 
- Ariën  -
Beheerder

- Ariën -

09/10/2015 00:16:30
Quote Anchor link
Waarom de mail niet CC sturen, zoals example #4?
http://php.net/manual/en/function.mail.php

Verder raad ik aan om je mailadres uit je code te halen, om eventuele spam-harvesting te voorkomen.
Gewijzigd op 09/10/2015 00:17:24 door - Ariën -
 
Wiitigoo orgham

wiitigoo orgham

09/10/2015 00:32:59
Quote Anchor link
Maar dan krijgen beiden dezelfde boodschap. Ik wil dat de inschrijver een bedankje krijgt en de admin een notificatie van de inschrijving.

(dank voor de tip mbt. de spam)
 
Ozzie PHP

Ozzie PHP

09/10/2015 00:33:59
Quote Anchor link
Komt de mail ook niet in je spam folder terecht toevallig?
 
Wiitigoo orgham

wiitigoo orgham

09/10/2015 00:42:14
Quote Anchor link
Nee. Het enige dat niet wil is de confirmation mail naar de admin ( dus naar [email protected]) de mail naar de subscriber komt netjes aan.
 
Frank Nietbelangrijk

Frank Nietbelangrijk

09/10/2015 00:45:31
Quote Anchor link
Je stuurt nu twee emails naar het adres dat ingevuld is in het formulier. Daarbij zeg je bij de eerste email ook nog eens dat de afzender hetzelfde is als de ontvanger ...

Ik weet dat het voor veel mensen verwarrend is dus daarom hieronder nog even wat uitleg:

1) Wie verstuurt daadwerkelijk het emailtje? Het enigste juiste antwoord is: de webserver. Nou staat iedere webserver van een beetje waarde gekoppeld aan een domeinnaam. (bijv. mijndomein.nl) Je zou dus de From: moeten veranderen in [email protected] waarbij je mijndomein.nl dus vervangt voor jouw eigen domeinnaam. voor het @ mag je invullen wat je wilt maar vaak wordt daar noreply voor gebruikt --> [email protected].

2) De ontvanger (To:) is natuurlijk wie je maar wilt. Dit kan het mailadres van de admin zijn of van een gebruiker.

3) Aan wie kan de ontvanger op zijn beurt weer antwoorden? Sinds de webserver dus het eerste mailtje verstuurde en een webserver maar een machine is, is het handiger als de ontvanger zijn antwoord stuurt naar een ander adres. Dit kan met de Reply-To: (zie http://phpwiki.santhe.nl/index.php?title=De_juiste_mailheaders ) (Bedankt SanThe) bijv: Reply-To: [email protected]
 
Ozzie PHP

Ozzie PHP

09/10/2015 00:49:34
Quote Anchor link
>> Nee. Het enige dat niet wil is de confirmation mail naar de admin ( dus naar [email protected]) de mail naar de subscriber komt netjes aan.

Dat was me duidelijk. Mijn vraag is of de mail aan jou niet in jouw spamfolder van Gmail terechtkomt. Heb je dat gecontroleerd?

@Frank

Volgens mij klopt de code wel. Zit alleen wat onduidelijk in elkaar.

De 1e mail-regel stuurt de bevestiging naar de TS. De 2e regel stuurt naar de ingeschreven persoon.
 
Wiitigoo orgham

wiitigoo orgham

09/10/2015 00:54:59
Quote Anchor link
Ok, maar het is toch logisch dat de admin (in dit geval [email protected]) een notificatiemail krijgt van hetzelfde domein? Dat is prima, na [email protected] zijn of [email protected]. Dat maakt me niet zoveel uit. Punt is dat ie niet aankomt. Jij geeft aan dat ie naar de subscriber gaat, maar ik heb er toch $to = "[email protected]"; staan?

De subscriber moet een mail krijgen op zijn ingevulde mailadres op het formulier en dit moet ook afkomstig zijn van [email protected]. Dit werkt al en gaat dus goed.

Sorry voor mijn noobness, maar ik baal dat ik die notification voor de admin niet aan de praat krijg en de tweede mail wel.
 
Frank Nietbelangrijk

Frank Nietbelangrijk

09/10/2015 00:55:36
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
$website_from
= '[email protected]';
$website_naam = 'mijnwebsite';
$admin = '[email protected]';
$email = $_POST['email'];

$subject = "Nieuwe registratie voor de  nieuwsbrief";
$message = "De volgende persoon heeft zich ingeschreven voor de nieuwsbrief:\n\nE-mail Adres: $email";
$headers = 'From: ' . $website_naam . ' <' . $website_from . '>' . "\r\n";
mail($admin, $subject, $message, $headers);


$subject = "inschrijving nieuwsbrief";
$message = "Dank voor je inschrijving op de nieuwsbrief. We houden je op de hoogte.";
$headers = 'From: ' . $website_naam . ' <' . $website_from . '>' . "\r\n";
$headers .= 'Reply-To: administrator <' . $admin . '>' . "\r\n";
mail($email,$subject,$message,$headers);
?>


Just try this :-)
Gewijzigd op 09/10/2015 00:59:41 door Frank Nietbelangrijk
 
Wiitigoo orgham

wiitigoo orgham

09/10/2015 01:03:40
Quote Anchor link
Koning! Die werkt exact zoals ik wil! Super bedankt Frank Nietbelangrijk. Ik ga deze even rustig bekijken en morgen iemand blij maken!
 
Frank Nietbelangrijk

Frank Nietbelangrijk

09/10/2015 01:05:52
Quote Anchor link
Graag gedaan. Merk op dat ik regel 16 er later nog even gauw tussen heb gezet, (de reply-to).
 
Wiitigoo orgham

wiitigoo orgham

09/10/2015 01:07:27
Quote Anchor link
Ja, helemaal netjes dit! Top man. Nogmaals bedankt.
 
Ozzie PHP

Ozzie PHP

09/10/2015 01:08:53
Quote Anchor link
@Frank:

Waar zit nou het wezenlijke verschil met de 1e versie (afgezien dat die wat onduidelijk in elkaar zit)? TS gaf aan dat de ene mail wel aankomt en de andere niet, terwijl ze code-technisch (zo op het 1e gezicht) precies hetzelfde in elkaar zitten.
 
Johan de wit

johan de wit

09/10/2015 03:47:29
Quote Anchor link
Letter R en de punt voor = staan erbij.
" = ' geworden.
Gewijzigd op 09/10/2015 03:49:52 door johan de wit
 
Joni Fleischer
Moderator

Joni Fleischer

09/10/2015 08:54:15
Quote Anchor link
Je zou ook nog dit kunnen doen:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
$website_from
= '[email protected]';
$website_naam = 'mijnwebsite';
$admin = '[email protected]';
$email = $_POST['email'];

$subject = "inschrijving nieuwsbrief";
$message = "Dank voor je inschrijving op de nieuwsbrief. We houden je op de hoogte.";
$headers = 'From: ' . $website_naam . ' <' . $website_from . '>' . "\r\n";
$headers .= 'Reply-To: administrator <' . $admin . '>' . "\r\n";
if(@mail($email,$subject,$message,$headers))
{

  $subject = "Nieuwe registratie voor de  nieuwsbrief";
  $message = "De volgende persoon heeft zich ingeschreven voor de nieuwsbrief:\n\nE-mail Adres: $email";
  $headers = 'From: ' . $website_naam . ' <' . $website_from . '>' . "\r\n";
  mail($admin, $subject, $message, $headers);
  echo 'Bedankt voor je bericht';
}

else
{
 echo 'E-mail verzenden is niet gelukt.';
}

?>


Wordt de notificatie e-mail naar de admin alleen verzonden als de inschrijving gelukt is.
Gewijzigd op 09/10/2015 08:55:18 door Joni Fleischer
 
Frank Nietbelangrijk

Frank Nietbelangrijk

09/10/2015 09:11:48
Quote Anchor link
@ Ozzie:
Na een nachtje slapen en twee bakkies koffie denk ik dat voornamelijk de mailheaders niet juist waren? Maar zoals je zelf al schreef was de code niet logisch opgebouwd. En dat laatste geeft natuurlijk een prachtige kweekvijver voor raadselachtige fouten. En zoals al bleek is het herstructureren van de code dan tevens de oplossing ongeacht de achterliggende oorzaak.

Toevoeging op 09/10/2015 09:13:56:

@Joni: Waarom die @ voor de mail functie? Ik krijg echt vlekken in mijn nek als ik dat zie :/

Wil je niet weten WAT er fout gaat als er iets fout gaat?
 
Joni Fleischer
Moderator

Joni Fleischer

09/10/2015 09:31:00
Quote Anchor link
@Frank

Je hebt gelijk :) Ik heb dat nog geautomatiseerd in mijn systeem staan van vroeger haha :P
 

09/10/2015 10:42:20
Quote Anchor link
@wiitigoo, gebruik voro het gemak PHPmailer.
Hiermee kan je gemakkelijk berichten versturen zonder over de headers e.d na te denken.
Ook is het zeer gemakkelijk om meerdere berichten te versturen e.d
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.