Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Непонятки с функцией mail()
 
 автор: flintik   (30.06.2008 в 21:32)   письмо автору
 
 

Господа, прошу Вашего совета!
Никак не могу понять в чём дело..
Суть в том, что на моём сайте есть отправка писем пользователям (допустим, после их регистрации). Ес..но осуществляется функцией mail.

Так вот: если письмо приходит на yandex или mail или rambler всё ок, НО! в Outlook'е, по непонятной
причине, отсутствует заголовок "от кого" (то, что прописывается в mail последним пунктом: $header="From: info@мой сайт.ru\r\n";)

Если, кто сталкивался с подобным чудом, расскажите плиз в чём дело.

P.S. На локальном сервере всё в ажуре))

   
 
 автор: Loneliness   (30.06.2008 в 23:33)   письмо автору
 
   для: flintik   (30.06.2008 в 21:32)
 

Попробуй в функцию mail() после заголовков явно указать адрес для ответа:
mail("komu@host.ru","тема","сообщение","$header", "-finfo@мой сайт.ru");

   
 
 автор: flintik   (01.07.2008 в 00:25)   письмо автору
 
   для: Loneliness   (30.06.2008 в 23:33)
 

Loneliness, спасибо за отклик.
Reply-To: мой адрес@мой домен.ru - я уже пробывал использовать. Похоже, это не помогает.

Кстати, забыл сказать, что хотя поле - "От Кого" в Outlook'e пустое, наверху в теле письма! присутствует надпись (From: мой адрес@мой домен.ru), тут же: Message-Id: адрес электронной почты моего хоста и дата.
Вообщем, вопрос остаётся в силе!

   
 
 автор: Loneliness   (01.07.2008 в 00:36)   письмо автору
 
   для: flintik   (01.07.2008 в 00:25)
 

Я ничего не писал про Reply-To. Я предлагал указать дополнительный, пятый параметр в функции mail, а не в почтовых заголовках. Из моего практического опыта- это несколько разные вещи.
По поводу того, что вместо поля ОТ КОГО данные пишутся в тело письма- вероятно, не мешало бы посмотреть твой код отправки. И вообще, такая ситуация только в аутлуке? The Bat, например, нормально показывает?

   
 
 автор: flintik   (01.07.2008 в 01:56)   письмо автору
 
   для: Loneliness   (01.07.2008 в 00:36)
 

Пятый параметр тоже не помог, к сожалению.

Вот код:
$address = "имя@домен.ru";
$subject = "ля-ля-ля";
$message = "текст";
$header="Content-Type: text/plain; charset=windows-1251\r\n";
$header.="From: мой адрес@домен.ru\r\n";

mail("$address","$subject","$message","$header");

   
 
 автор: Valick   (01.07.2008 в 02:30)   письмо автору
 
   для: flintik   (01.07.2008 в 01:56)
 

-

   
 
 автор: flintik   (04.07.2008 в 12:17)   письмо автору
 
   для: Valick   (01.07.2008 в 02:30)
 

Уважаемый, Valick, что это значит?

   
 
 автор: sim5   (04.07.2008 в 13:37)   письмо автору
33.9 Кб
 
   для: flintik   (04.07.2008 в 12:17)
 

Еще раз (и последний) выставляю самое основное, что необходимо знать при формировании почтового отправления. Если его верно составить, то проблем обычно не возникает. Читайте.

   
 
 автор: flintik   (10.07.2008 в 13:53)   письмо автору
 
   для: sim5   (04.07.2008 в 13:37)
 

Спасибо, sim5. Очень верно подмечено "...проблем обычно не возникает..." :))
На самом деле проблема решилась после удаления \r
Всем фенкс!

   
 
 автор: sim5   (11.07.2008 в 08:05)   письмо автору
 
   для: flintik   (10.07.2008 в 13:53)
 

Я делаю так:

<?
$CRLF 
substr(PHP_OS03) != "WIN" "\n" "\r\n";

и проблем с этим тоже не возникает.

   
 
 автор: Valick   (11.07.2008 в 09:17)   письмо автору
 
   для: flintik   (04.07.2008 в 12:17)
 

Это значит, что только так можно удалить пост.
Просто я написал, то что уже написали выше... вобщем "не к селу" поэтому удалил.

   
 
 автор: pav4   (29.08.2008 в 07:20)   письмо автору
 
   для: Valick   (11.07.2008 в 09:17)
 

А вот если SMTP сервер находится на другом сервре т.е. в php.ini приходится прописывать SMTP = myserver.ru, то почемуто письма уходить нехотят. Вопрос в следующем у когонибудь вообще mail() работает если SMTP не localhost ?

   
 
 автор: mihdan   (30.08.2008 в 02:15)   письмо автору
 
   для: pav4   (29.08.2008 в 07:20)
 

Да

   
 
 автор: pav4   (30.08.2008 в 07:11)   письмо автору
 
   для: mihdan   (30.08.2008 в 02:15)
 

а вчем могут уменя быть проблемы если, mail() возвращает true, а писмо не приходит и в логах почтового тоже ничего

   
 
 автор: sim5   (30.08.2008 в 07:22)   письмо автору
 
   для: pav4   (30.08.2008 в 07:11)
 

Читаем внимательно:

mail - отправляет почту.

bool mail (string to, string subject, string message [, string additional_headers [, string additional_parameters]])

mail() автоматически отправляет сообщение message получателю to. Можно специфицировать несколько получателей, разделив запятой адреса в to. С помощью этой функции можно высылать Email с присоединением/attachment и содержимое специальных типов. Это делается через MIME-кодировку. Могут помочь и следующие RFC-документы: RFC 1896, RFC 2045, RFC 2046, RFC 2047, RFC 2048 и RFC 2049.

mail() возвращает TRUE, если почта была успешно принята для доставки, FALSE в ином случае.

Предупреждение! Windows-реализация mail() во многом отличается от Unix-реализации. Во-первых, она не использует локальный экзешник для составления сообщений, а работает лишь по прямым сокетам, что означает, что MTA должен прослушивать сетевой сокет (который может находиться на локальной или удалённой машине). Во-вторых, специальные шапки/headers вроде From:, Cc:, Bcc: и Date: не интерпретируются MTA, а разбираются в PHP.
PHP < 4.3 поддерживал только header-элемент Cc: (и был чувствительным к регистру).
PHP >= 4.3 поддерживает все элементы шапки и нечувствителен к регистру символов.

Чувствуете разницу между "была успешно принята для доставки", с реальной доставкой письма получателю?

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

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования