PHP mail headers

Alles over programmeren en development binnen de IT-wereld
Plaats reactie
ubremoved_539
Deel van't meubilair
Deel van't meubilair
Berichten: 29849
Lid geworden op: 28 okt 2003, 09:17
Uitgedeelde bedankjes: 434 keer
Bedankt: 1972 keer

Volgend stukje PHP code stuurt een mailtje naar twee personen, echter ik wil enkel de eerste zichtbaar (of de tweede dus in BCC). Het probleem is echter dat PHP blijkbaar zelf reeds de "To:" header aanmaakt op basis van de eerste parameter in de mail functie (met als gevolg dat user2 zichtbaar is).

Code: Selecteer alles

$to = '[email protected], [email protected]';  
$subject = 'Just a test';
$headers = 'From: [email protected]'. "\r\n" .
           'To: [email protected]';
$message = "Blablah\r\n";
mail($to, $subject, $message, $headers);
Iemand een idee hoe ik ervoor zorg dat PHP zelf geen headers aanmaakt (althans geen "To:" headers) ?
Gebruikersavatar
gr4vity
Erelid
Erelid
Berichten: 2572
Lid geworden op: 27 feb 2006, 20:54
Bedankt: 2 keer

Code: Selecteer alles

<?php
$to = '[email protected]';
$subject = 'Just a test';
$headers = 'From: [email protected]'. "\r\n" .
           'To: [email protected]'. "\r\n" .
           'Bcc: [email protected]';
$message = "Blablah\r\n";
mail($to, $subject, $message, $headers);
Zou perfect moeten werken :)
Afbeelding Afbeelding Afbeelding
Astralon
Elite Poster
Elite Poster
Berichten: 3310
Lid geworden op: 26 jul 2005, 12:17
Locatie: Lochristi
Uitgedeelde bedankjes: 196 keer
Bedankt: 125 keer

Code: Selecteer alles

$headers .= 'Cc: [email protected]' . "\r\n";
Dit toevoegen werkt dus niet?
Gebruikersavatar
gr4vity
Erelid
Erelid
Berichten: 2572
Lid geworden op: 27 feb 2006, 20:54
Bedankt: 2 keer

Dat werkt ook, maar dat is CC en niet BCC.
Afbeelding Afbeelding Afbeelding
ubremoved_539
Deel van't meubilair
Deel van't meubilair
Berichten: 29849
Lid geworden op: 28 okt 2003, 09:17
Uitgedeelde bedankjes: 434 keer
Bedankt: 1972 keer

Code: Selecteer alles

<?php
$to = '[email protected]';
$subject = 'Just a test';
$headers = 'From: [email protected]'. "\r\n" .
           'Bcc: [email protected]';
$message = "Blablah\r\n";
mail($to, $subject, $message, $headers);
Dit blijkt dus de oplossing te zijn... eerst en vooral mag je dus zelf geen "To:" meer specifieren in je headers (want dan heb je hem dubbel, PHP maakt zelf "To:" headers aan), en verder zet je in je header een "Bcc:" van het andere adres (en dus niet meer in $to, want anders maakt hij er terug een "To:" van).

Als je deze werkwije gebruikt op de meeste mail systemen dan zie je bij de bestemmeling de '"Bcc:" header ook zitten (niet echt de bedoeling dus), echter de PHP mail functie blijkt deze er - gelukkig - terug uit te strippen. Niet echt een gangbare manier van werken, maar het werkt.
Gebruikersavatar
meon
Administrator
Administrator
Berichten: 16757
Lid geworden op: 18 feb 2003, 22:02
Twitter: meon
Locatie: Bree
Uitgedeelde bedankjes: 582 keer
Bedankt: 780 keer
Provider

PHP volgt volgens mij gewoon de smtp-RFC, daar bevindt zich de CC en BCC ook in het data-gedeelte en niet in het RCPT TO statement.
ubremoved_539
Deel van't meubilair
Deel van't meubilair
Berichten: 29849
Lid geworden op: 28 okt 2003, 09:17
Uitgedeelde bedankjes: 434 keer
Bedankt: 1972 keer

meon schreef:PHP volgt volgens mij gewoon de smtp-RFC, daar bevindt zich de CC en BCC ook in het data-gedeelte en niet in het RCPT TO statement.
Nee, dat is het hem juist... een BCC header is gewoon iets dat niet bestaat (zou absurd zijn want dan kan de andere partij zien wie BBB'ed is).

In het SMTP procotol worden de bestemmelingen (ongeacht of dit nu To, CC of BCC is) gewoon aangegeven via "rcp to:"... wat je later te zien krijgt in je mail client zijn de effectieve headers die in de mail zelf zit (wat je dus na "data" geeft in het SMTP protocol). Je kan dus perfect een mail sturen zonder dat er een To, CC of (onbestaande) BCC header is.
Plaats reactie

Terug naar “Development”