Функция PHP mail () не отправляет электронную почту

Я пытаюсь отправить электронное письмо с помощью функции 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; 

и т. д., надеясь, что это, наконец, может решить вашу проблему!