Я пытаюсь отправить электронное письмо с помощью функции mail()
PHP
. Я работал, пока не попытался дать ему тему «Регистрация пользователя», после чего письмо не отправлено!
Вот код (упростил его)
$to = $this->post_data['register-email']; $message = 'Hello etc'; $headers = 'From: noreply@example.com' . "\r\n" ; $headers .= 'Content-type: text/html; chareset=iso-8859-1\r\n'; $headers .= 'From: Website <admin@example.com>'; mail($to, 'User Registration', $message, $headers);
Я также попытался использовать переменную, содержащую строку текста, но это не сработало.
Почему он не отправляет почту, когда я добавляю тему исключения?
благодаря
EDIT: обновленный код, который все еще не работает
$to = $this->post_data['register-email']; $message = 'Hello etc'; $headers = 'MIME-Version: 1.0' . "\r\n"; $headers .= "Content-type: text/html; charset=iso-8859-1\r\n"; $headers .= 'From: Website <admin@example.com>'; mail($to, 'User Registration', $message, $headers);
На вашей четвертой строке вы используете '
который обрабатывает все внутри него как строку, поэтому меняйте
$headers .= 'Content-type: text/html; chareset=iso-8859-1\r\n';
Для того, чтобы:
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
и как упоминалось в комментариях, измените chareset
на charset
Редактировать:
если вы отправляете сообщение txt / html, которое у вас есть в соответствии с документацией, чтобы установить mime в заголовках, попробуйте это
$to = $this->post_data['register-email']; $message = 'Hello etc'; $headers = 'MIME-Version: 1.0' . "\r\n"; $headers .= "Content-type: text/html; charset=iso-8859-1\r\n"; $headers .= 'From: Website <admin@example.com>' . "\r\n"; mail($to, 'User Registration', $message, $headers);
Если он все еще не работает, вы можете попробовать отладить свой код, просто добавьте
error_reporting(E_ALL); ini_set('display_errors', '1');
в верхней части страницы, и оттуда оттуда, и если вы все еще не можете решить это самостоятельно, разместите его здесь, и я сделаю все возможное, чтобы помочь вам.
Я использую этот код для большинства своих проектов
$subject = 'subject'; $message = 'message'; $to = 'user@gmail.com'; $type = 'plain'; // or HTML $charset = 'utf-8'; $mail = 'no-reply@'.str_replace('www.', '', $_SERVER['SERVER_NAME']); $uniqid = md5(uniqid(time())); $headers = 'From: '.$mail."\n"; $headers .= 'Reply-to: '.$mail."\n"; $headers .= 'Return-Path: '.$mail."\n"; $headers .= 'Message-ID: <'.$uniqid.'@'.$_SERVER['SERVER_NAME'].">\n"; $headers .= 'MIME-Version: 1.0'."\n"; $headers .= 'Date: '.gmdate('D, d MYH:i:s', time())."\n"; $headers .= 'X-Priority: 3'."\n"; $headers .= 'X-MSMail-Priority: Normal'."\n"; $headers .= 'Content-Type: multipart/mixed;boundary="----------'.$uniqid.'"'."\n\n"; $headers .= '------------'.$uniqid."\n"; $headers .= 'Content-type: text/'.$type.';charset='.$charset.''."\n"; $headers .= 'Content-transfer-encoding: 7bit'; mail($to, $subject, $message, $headers);
Я бы предложил использовать PHP_EOL вместо \ r \ n или \ n, так как разрыв строки будет определяться вашей средой …
$headers = 'MIME-Version: 1.0' . PHP_EOL;
и т. д., надеясь, что это, наконец, может решить вашу проблему!