Ja, det tror pokker =)
Hvis du skriver:
$to = '$email';
- forsdøger du at sende til en adresse, der hedder
$email. I stedet skal du skrive:
$to = $email;
// eller til nød:
$to = "$email";
En variabel parses, hvis den står skrevet mellem dobbelte gåseøjne - men ikke mellem enkelte. Da du ikke har noget at bruge gåseøjne til på det pågældende sted, bør du udelade dem.
Men derudover er det overordentligt vanskeligt at finde 'en ganske standard PHP Mail formular' på nettet. Skræmmende meget er desværre noget værdiløst skidt. Således er der også ting i den kode, du har fundet, som ikke hænger sammen.
Det giver ingen mening at skrive et
utf-8 kodet dokument og sende det som en
iso-8859-1 kodet e-mail. I det hele taget er det ikke så ligetil endda at sende en
utf-8 kodet e-mail.
Du kan evt. bruge en funktion, jeg selv har skrevet - og som faktisk virker:
function escapeAddr($addr) {
$check = preg_match('/(.*)<(.*)>/', $addr, $a);
if ($check) $addr = '=?UTF-8?B?'.base64_encode($a[1]).'?= <'.$a[2].'>';
return $addr;
}
function mail_utf8($to, $subject='Intet emne', $message='', $from='', $cc='', $bcc='', $type='plain') {
$from = escapeAddr($from);
$header = 'From: '.$from.PHP_EOL
. 'Return-Path: '.$from.PHP_EOL
. 'Reply-To: '.$from.PHP_EOL
. 'MIME-Version: 1.0'.PHP_EOL
. 'Content-type: text/'.$type.'; charset=UTF-8'.PHP_EOL
. 'X-Mailer: PHP/'.phpversion().PHP_EOL
. 'Content-Transfer-Encoding: 8bit'.PHP_EOL;
if ($cc!='') $header .= 'Cc: '.escapeAddr($cc).PHP_EOL;
if ($bcc!='') $header .= 'Bcc: '.escapeAddr($bcc).PHP_EOL;
$header .= PHP_EOL;
return mail($to, '=?UTF-8?B?'.base64_encode($subject).'?=', $message, $header);
}
// Eksempel på brug:
mail_utf8('modtager@gmail.com', 'Et eller andet emne', 'Indhold af mail', 'fra@domain.dk');
Navnene på funktionens parametre - sammen med eksemplet i bunden - burde forklare virkemåden