Ik heb een php code die ik al langer gebruik om een pdf als attachment te versturen per mail. Dit werkt prima.
Nu probeer ik een bcc toe te voegen, en toch werkt het niet. Weet iemand wat ik hier mis?

$mail_from
$mail_to

Zijn voorzien van een e-mailadres.


$mailMessage = "<strong>Bijgaand het PDF-document</strong>";

$mailAttach = "pdf/".$kenmerk.".pdf";

// GENERATE AFSCHEIDING TUSSEN BERICHT EN ATTACHMENT
$mailBoundary = md5(time());
$mailHead = 'From: '.$email_from."\r\n";


// toegevoegd bcc check, dan $mailHead complementeren
if ($kopie=="1") {
	 $mailHead .= 'BCC: '.$email_from."\r\n";
}
// einde toevoeging en check

$mailHead .=  'X-Mailer: PHP/' . phpversion(); 

$mailHead .= implode("\r\n", [
  "MIME-Version: 1.0",
  "Content-Type: multipart/mixed; boundary=\"$mailBoundary\""
]);

// TUSSENDEEL
$mailBody = implode("\r\n", [
  "--$mailBoundary",
  "Content-type: text/html; charset=utf-8",
  "",
  $mailMessage
]);	

// DECODING ATTACHMENT
$mailBody .= implode("\r\n", [
  "",
  "--$mailBoundary",
  "Content-Type: application/octet-stream; name=\"". basename($mailAttach) . "\"",
  "Content-Transfer-Encoding: base64",
  "Content-Disposition: attachment",
  "",
  chunk_split(base64_encode(file_get_contents($mailAttach))),
  "--$mailBoundary--"
]);

// STUUR DE MAIL NU MET BIJLAGE-ATTACHMENT
echo mail($mailTo, $mailSubject, $mailBody, $mailHead);
Echo eens $mailHead, dan kan je zien wat je headers zijn.

Verder zijn er ook prachtige libraries zoals PHPmailer die precies doen wat je wilt, zonder dat je het wiel opnieuw fabriceert.
@Ariën, dit is een bestaande site, ga ik niet meer opbouwen. Maar goede tip. Niet aan gedacht. Dank.

[size=xsmall]Toevoeging op 24/08/2022 12:34:33:[/size]

@Ariën, even getest, alles komt goed in de header. Ik ga de spambak checken. Wellicht ligt daar de missing link!
E-mail is een doolhof, vanwege alle spammers van vroeger zijn er veel veiligheidsmaatregelen getroffen.
Als je daar niet het fijne van weet (zoals ik) kan je het beste een beproefde class gebruiken.
Dan hoef je als het goed is ook niet in de spambak te kijken.
maar zelfs met gebruik van een class als PHPMailer kan er nog op 100 plekken wat mis gaan.
Bijvoorbeeld als $mail_from een willekeurig mailadres is dat niets met de afzendende server te maken heeft.

Bijvoorbeeld: je script stuurt mail met from = [email protected], maar dat doet jouw willekeurige server.
Grote kans dat in zo'n geval een ontvangende mailserver zegt "server X zou geen mails horen te sturen uit naam van phphulp.nl, dus die drop ik / zet ik in spam"

En bij droppen zie je hem nergens terug.
En dat maakt het lastig debuggen: effectief zit er voor de ontvanger geen verschil tussen "mail is niet verstuurd" en "mail komt niet aan". Maar technisch is dat een heel ander verhaal.
Als PHP en jouw server de mail "op de bus doen" is het technisch klaar.
Maar als hij niet (direct) aan komt, kan dat nog aan veel dingen liggen.

Dus de vraag is vooral "komt de mail echt niet buiten, of houdt de ontvangende server hem tegen?"
Controleer dit vooral niet met @gmail adressen: Google is nogal streng.

(en check ook even of het aan BCC ligt, of dat je de mail sowieso dus niet ontvangt)
Google is streng, maar Microsoft met Live, Hotmail, Outlook etc is een drama!
@Ivo P. Ik heb ook de spambak bekeken. Niets. Alle adressen zijn géén e-mailadressen. De code hierboven gebruik ik al geruime tijd, alle mails worden keurig afgehandeld en verstuurd. Nu probeer ik, wat ik dacht, een simpele handeling was, een bcc toe te voegen. Heb bcc BCC en combinaties gebruikt. Ik weet dan “\r\n” tussen apostrophes moeten staan. Dus ik ga lekker verder speuren. Dank.
En als je phpMailer uittest?
@Ariën, dat is mijn volgende stap om alles uit te sluiten. Ik kom erop terug.

[size=xsmall]Toevoeging op 24/08/2022 16:14:04:[/size]

OPGELOST! Zoiets kleins…

Ik heb de oplossing gevonden. Was iets kleins. Hieronder de werkende code.

if ($kopie=="1") {
	 $mailHead .= "Bcc: ".$email_bcc."\r\n";
}


Het verschil is dat ik nu de code heb voorzien van ". En het werkt nu wel. Dank allen. Gelukkig hoef ik hier niet verder mee aan de slag. Iets kleins kan dus zorgen voor onvoorspelbare resultaten. Weer wat geleerd.

Dank allen
}
Dat lijkt onwaarschijnlijk.

Maar maakt het nog uit of je BCC of Bcc gebruikt?
Kort zoeken levert dat de headers niet hoofdlettergevoelig moeten zijn, maar het op sommige servers wel zijn.
@Ivo P, Is inderdaad zo, maar ik heb inmiddels van alles geprobeerd in bovenstaande code. Inmiddels alles teruggezet. Blijft werken, is bij mij niet hoofdlettergevoelig. Alleen de aanhalngstekens zijn kennelijk een hickup geweest.

Reageren