2013-07-02 3 views
0

Я хочу отправить электронное сообщение с помощью функции mail().PHP плохие почтовые заголовки

mail($to,$subject,$message) работает нормально.

Но с использованием mail($to,$subject,$message,$header) не работает. Заголовок является:

Date: Tue, 2 Jul 2013 15:01:49 +0200 +0200 
Return-Path: [email protected] 
From: "[email protected]" 
Message-ID: 
X-Priority: 3 
X-Mailer: PHPMailer 5.2.4 (http://code.google.com/a/apache-extras.org/p/phpmailer/) 
MIME-Version: 1.0 
Content-Transfer-Encoding: 8bit 
Content-Type: text/html; charset=UTF-8 

Что не так с моими заголовками? FYI, заголовки генерируются PHPMailer. код я использую, чтобы отправить это:

$mail = new PHPMailer(); 
$mail->IsMail(); 
$mail->From = $from; 
$mail->FromName = $from; 
$mail->AddAddress($to); 
$mail->IsHTML(true); 
$mail->CharSet = 'UTF-8'; 
$mail->Subject = $subject; 
$mail->Body = $message; 
$mail->Send(); 
+0

Почему это не работает? Сообщение об ошибке? Ничего не отправлено? Помогите нам помочь вам. – karmafunk

+0

Все, кажется, работает нормально, за исключением того, что я не получаю электронное письмо. Это странно. – HansElsen

+0

У вас есть доступ к почтовому серверу и журналам? 'Посмотрите в журналах, если почта вообще была обнаружена – Preexo

ответ

0

Вам нужен почтовый сервер, что вы не можете иметь в своей среде Dev.
mail() и PHPMailer просто передайте свой адрес электронной почты почтовому серверу, который затем отправит его в пункт назначения.

Если у вас нет почтового сервера, независимо от того, насколько хорош ваш код, он просто ничего не сделает. Проверьте, нет ли каких-либо кодов возврата или исключений, которые могут отсутствовать (я не уверен, как PHPMailer указывает, что что-то пошло не так, mail() делает это с помощью кода возврата),

Я никогда не использовал PHPMailer, но мне кажется, что вы не устанавливаете внешний сервер для передачи сообщения, что означает, что PHPMailer будет по умолчанию для локальной машины.

Почтовый сервер - это не то, что вы только что установили и настроили за пару минут, что, на мой взгляд, у вашей локальной машины нет.

Итак, вот что я думаю:
1) Вы не установили внешний сервер, PHPMailer по умолчанию на локальный сервер.
2) У вас нет локального почтового сервера, что приводит к сбою PHPMailer.
3) Вы потеряли/проигнорировали $ mail-> Отправить() код возврата/исключение, которое должно было сказать вам, что что-то пошло не так.

+0

Привет, как я сказал в описании, просто' mail() 'без заголовков работает нормально, потому что у меня есть локальный почтовый сервер. И для кода возврата функции Send(): он не показывает ошибку. – HansElsen

0

Вы пытались использовать другой заголовок? Я использую

$header = "From: [email protected] \n"; 
$header .= "MIME-Version: 1.0 \n"; 
$header .= "Content-Type: text/html; charset=iso-8859-1; type=\"text/html\" \n"; 
mail($email,$betreff,$mailbody,$header) 

и она отлично работает.

Смежные вопросы