Всем доброго времени суток! Сделал простой скрипт для отправки почты на заданные адреса. Но в приходящем сообщении хост вместо "от васи пупкина" подставляет свое значение. Как сделать чтобы from приходило корректно? если посмотреть в заголовок что видно, что указанное мной значение там присутсвует, но в конце добавлен адрес сервака
заголовок:
CODE ( htmlphp):
скопировать код в буфер обмена
Received: from mxfront13.mail.yandex.net ([127.0.0.1]) by mxfront13.mail.yandex.net with LMTP id BhA0c9Q1 for <mail@yandex.ru>; Tue, 27 Sep 2011 15:11:43 +0400 Received: from mail.dizinc.com (mail.dizinc.com [66.7.213.112]) by mxfront13.mail.yandex.net (nwsmtp/Yandex) with ESMTP id BgiWkjqF-BgieBdKg; Tue, 27 Sep 2011 15:11:42 +0400 X-Yandex-Front: mxfront13.mail.yandex.net X-Yandex-TimeMark: 1317121902 X-Yandex-Spam: 1 Received: from mail by mail.dizinc.com with local (Exim 4.69) (envelope-from <mail@pass79.dizinc.com>) id 1R8VZc-0006Qv-KW for mail@yandex.ru; Tue, 27 Sep 2011 07:11:40 -0400 To: mail@yandex.ru Subject: =?utf-8?B?0YLQtdGB0YI=?= X-PHP-Script: xn--69-dlci2ar.xn--p1ai/contacts.php for 78.106.68.75 Content-type: text/html; charset=UTF-8\r\n From: =?utf-8?B?0YLQtdGB0YI8c2xhdmVuaW45OTlAeWFuZGV4LnJ1Pg==?=Content-type: text/html; charset=UTF-8\r\n Message-Id: <E1R8VZc-0006Qv-KW@mail.dizinc.com>From: mail@pass79.dizinc.com Date: Tue, 27 Sep 2011 07:11:40 -0400 X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - mail.dizinc.com X-AntiAbuse: Original Domain - yandex.ru X-AntiAbuse: Originator/Caller UID/GID - [2766 501] / [47 12] X-AntiAbuse: Sender Address Domain - pass79.dizinc.com X-Source: /usr/bin/php X-Source-Args: /usr/bin/php /home/wm2178/public_html/contacts.php X-Source-Dir: xn--69-dlci2ar.xn--p1ai:/public_html Return-Path: mail@pass79.dizinc.com X-Yandex-Forward: 1fc00a3cb328b5903e1b245d40fa3342 тест
ну и сам скрипт
PHP:
скопировать код в буфер обмена
<?PHP header('Content-Type: text/html; charset=utf-8'); if(isset($_POST['submit'])) { if(isset($_POST['name']) && isset($_POST['mail']) && isset($_POST['subj']) && isset($_POST['message'])) { if(!empty($_POST['name']) && !empty($_POST['mail']) && !empty($_POST['subj']) && !empty($_POST['message'])) { $i = 0; $handle = fopen('mail.txt', 'r'); { $headers = ' Content-type: text/html; charset=UTF-8\r\n'; //$headers .= 'Reply-To: ' .$_POST['name'] .'<' .$_POST['mail'] .'>'; $headers .= ' From: =?utf-8?B?'.base64_encode(($_POST['name'] .'<' .$_POST['mail'] .'>')).'?='; // $headers .= ' Subject:'.$subject; $headers .= ' Content-type: text/html; charset=UTF-8\r\n'; $result = mail($to, $subject, $message, $headers); if(!$result) { echo "Произошла ошибка отправления письма. Е-маил: " .$to ."<br/>"; } else { $i++; } } header("Location: success.php"); } } } ?>
CODE ( html):
скопировать код в буфер обмена
<div id="content"> <div class="wrap"> <form name="content" action="contacts.php" method="POST"> <table class="postForm" align="center"> <tr> <td>Ваше имя:</td> <td><input required name="name" type="text" size="35"/></td> </tr> <tr> <td>Ваш e-mail:</td> <td><input required name="mail" type="email" size="35"/></td> </tr> <tr> <td>Тема сообщения:</td> <td><input required name="subj" type="text" size="35"/></td> </tr> <tr> <td>Текст сообщения:</td> <td><textarea required name="message" cols="30" rows="15"></textarea></td> </tr> <tr> <td colspan="2" style="text-align: center"><input name="submit" type="submit" value="Отправить сообщение"/></td> </tr> <tr > <td colspan="2" style="text-align: center" > <b>тел.xxx</b> </td> </tr> </table> </form> </div> </div> <script type="text/javascript"> window.setTimeout('crMenuDiv.call(this, \'el_5\', \'stat\')', 2000); </script>
(Добавление)
где мой бубен?!! ну вот при чем здесь одинарные кавычки??? почему заменил их на двойные и все заработало??? какая собственно разница функции как ей приходит строка? О_О(Отредактировано автором: 27 Сентября, 2011 - 15:08:59)
|