PHP script dat twee mails verstuurt

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

PHP Developers gezocht die van complexe online vra

Vacature Omschrijving Een grote klant is opzoek naar enthousiaste PHP developers (junior/medior/senior). De organisatie waar jij komt te werken ontwikkelt en bouwt succesvolle oplossingen voor complexe online vraagstukken zoals performance, usability en conversion. Daarnaast zorgen zij voor externe systemen ingericht voor productbeheer, point-of-sales en voorraadbeheer koppelt de organisatie probleemloos aan op eigen Magento gebaseerde webshops. Het is een informele organisatie waar de communicatielijnen kort zijn. Functieomschrijving Met drupal 8 of ShopWare realiseert de organisatie prachtige frond-ends op dynamische data uit allerlei systemen. Je houdt je in deze organisatie bezig met het ontwerpen, ontwikkelen en beheren van functionaliteiten van de applicaties

Bekijk vacature »

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 = "admin@mijnwebsite.nl";
$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: nieuwsbrief@mijnwebsite.nl\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

16/10/2019 19:59:11
 
- 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 admin@mijnwebsite.nl) 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 ...@mijndomein.nl 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 --> noreply@mijndomein.nl.

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: info@mijndomein.nl
 
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 admin@mijnwebsite.nl) 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 admin@mywebsite.nl) een notificatiemail krijgt van hetzelfde domein? Dat is prima, na noreply@mijnwebsite.nl zijn of admin@mijnwebsite.nl. 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 = "admin@mijnwebsite.nl"; staan?

De subscriber moet een mail krijgen op zijn ingevulde mailadres op het formulier en dit moet ook afkomstig zijn van noreply@mijnwebsite.nl. 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
= 'noreply@mijnwebsite.nl';
$website_naam = 'mijnwebsite';
$admin = 'admin@mijnwebsite.nl';
$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
= 'noreply@mijnwebsite.nl';
$website_naam = 'mijnwebsite';
$admin = 'admin@mijnwebsite.nl';
$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.