2013-08-14 2 views
0

Я использую сайт, использующий WAMP, и установил Test Mail Server Tool для работы в качестве почтового сервера (все, что он делает, сохраняет сообщения в виде файлов .eml). Я пробовал открывать сообщения с помощью Lotus Notes и gmail (веб-интерфейс), и оба они не интерпретируют HTML, например, вместо того, чтобы иметь ссылку с возможностью клика у них есть <a href='localhost'>click here</a> Я сделал ошибку с заголовками?Почему HTML не интерпретируется в этом электронном письме?

Вот код, я использую

$to = '[email protected]'; 
$from = 'From: [email protected]'; 
$subject = 'this is a test'; 
$message = '<html><head></head><body>Hello. Please follow <a href="http://localhost/proc.php?uid=45ab3">this link</a> to activate your account.' 
    ."r\n".'<a href="http://localhost/proc.php?uid=45ab3"><img src="images/ActivateButton.gif" alt="activate button" /> 
    </body></html>'; 
$headers = 'MIME-Version: 1.0' . "\r\n"; 
$headers .= 'Content-type: text/html; utf-8' . "\r\n"; 
$headers .= 'From: [email protected]' . "\r\n"; 
mail($to, $subject, $message, $from, $headers); 

Кстати, я застрял, не имея почтовый сервер с момента WAMP не приходит с одним и я красный на другой вопрос кто-то рекомендовал Test Mail Server Tool , Я открыт для использования другого, потому что он не кажется популярным.

ответ

2

Если вы ссылаетесь на the docs и примеры в документах, вы увидите, что информация From не является отдельным аргументом для mail(), но включена в дополнительную информацию.

BOOL почта (строка $ к, строка $ при условии, строка $ сообщение [, строка $ additional_headers [, строка $ additional_parameters]])

Снимайте $ от аргумента из вызова mail() ,

mail($to, $subject, $message, $headers); 
+1

Я использую Test Mail Tool Server, и я думаю, что это здорово: очень проста в использовании. –

+0

Интересно, как проявляется ошибка. Одна из основных проблем, с которыми я сталкиваюсь с PHP, - это когда что-то идет не так, вы не совсем уверены, где в коде проблема. – Celeritas

+0

'error_reporting (E_ALL); ini_set ('display_errors', '1'); 'Добавление этих двух строк вверху вашего php (во время разработки) выведет все ошибки. Вам также нужно часто повторять или печатать свои переменные, чтобы увидеть, что с ними происходит. Удачи ;) –

0

Посмотрите на этот пример, это работает для меня:

<? 
//change this to your email. 
$to = "[email protected]"; 
$from = "[email protected]"; 
$subject = "Hello! This is HTML email"; 

//begin of HTML message 
$message = "<html> 
    <body bgcolor=\"#DCEEFC\"> 
<center> 
    <b>Looool!!! I am reciving HTML email......</b> <br> 
    <font color=\"red\">Thanks dud!</font> <br> 
    <a href=\"http://www.test.com/\">* test.com</a> 
</center> 
    <br><br>*** Now you Can send HTML Email <br> Regards<br>MOhammed Ahmed - Palestine 
    </body> 
    </html>"; 
//end of message 

// To send the HTML mail we need to set the Content-type header. 
$headers = "MIME-Version: 1.0rn"; 
$headers .= "Content-type: text/html; charset=iso-8859-1rn"; 
$headers .= "From: $from\r\n"; 
//options to send to cc+bcc 
//$headers .= "Cc: [email][email protected][/email]"; 
//$headers .= "Bcc: [email][email protected][/email]"; 

// now lets send the email. 
mail($to, $subject, $message, $headers); 

echo "Message has been sent....!"; 
?> 
Смежные вопросы