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

Форум PHP

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

 

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

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

тема: Отправка почты функцией mail(). Куда писать имя в поле "to" ?
 
 автор: tAleks   (06.08.2009 в 19:48)   письмо автору
 
 

Такой скрипт:


<?php

$email 
'vasia@mail.ru';
$name 'Вася';

$to '=?windows-1251?B?'.base64_encode($name).'?= <'.$email.'>';

$res mail($to'Тема''Сообщение');

echo (
$res) ? 'OK' 'Error';

?>


Выдает "Error".

Если не кодировать поле TO, а просто писать голый маил, то все нормально.

Подскажите в чем ошибка.

PS: На локальной машине, на Денвере все работает. Загрузил на сервер - неработает. :(

  Ответить  
 
 автор: exp   (06.08.2009 в 21:56)   письмо автору
 
   для: tAleks   (06.08.2009 в 19:48)
 

Example #2 Sending mail with extra headers.

The addition of basic headers, telling the MUA the From and Reply-To addresses:

<?php
$to      
'nobody@example.com';
$subject 'the subject';
$message 'hello';
$headers 'From: webmaster@example.com' "\r\n" .
    
'Reply-To: webmaster@example.com' "\r\n" .
    
'X-Mailer: PHP/' phpversion();

mail($to$subject$message$headers);



// невнимательно читал вопрос ;)

As such, the to parameter should not be an address in the form of "Something <someone@example.com>".

  Ответить  
 
 автор: tAleks   (06.08.2009 в 23:30)   письмо автору
 
   для: exp   (06.08.2009 в 21:56)
 

Это не подходит.
Переменная $to, в данном случае содержит простой email.

  Ответить  
 
 автор: exp   (07.08.2009 в 00:04)   письмо автору
 
   для: tAleks   (06.08.2009 в 23:30)
 

извиняюсь, ещё невнимательно скопипастил.

Notes
Note: The Windows implementation of mail() differs in many ways from the Unix implementation. First, it doesn't use a local binary for composing messages but only operates on direct sockets which means a MTA is needed listening on a network socket (which can either on the localhost or a remote machine).
Second, the custom headers like From:, Cc:, Bcc: and Date: are not interpreted by the MTA in the first place, but are parsed by PHP.
As such, the to parameter should not be an address in the form of "Something <someone@example.com>". The mail command may not parse this properly while talking with the MTA.

С английским не очень , но пишут что в Виндовс вообще всё это криво построено , что-то даже пришлось с помощью php парсить , и не канает в частности добавлять имя к адресу
не то потомучто недопарсили с помощью php, не то виндовс вообще не транспортабельная

  Ответить  
 
 автор: Trianon   (07.08.2009 в 00:27)   письмо автору
 
   для: exp   (07.08.2009 в 00:04)
 

>Note: The Windows implementation of mail() differs in many ways from the Unix implementation. First, it doesn't use a local binary for composing messages but only operates on direct sockets which means a MTA is needed listening on a network socket (which can either on the localhost or a remote machine).
>Second, the custom headers like From:, Cc:, Bcc: and Date: are not interpreted by the MTA in the first place, but are parsed by PHP.
>As such, the to parameter should not be an address in the form of "Something <someone@example.com>". The mail command may not parse this properly while talking with the MTA.

>С английским не очень ..

Внимание: У реализации функции mail() в Windows существует несколько отличий от unix-релизации.
Во-первых, она не использует утилит
[имеется в виду sendmail] для формирования сообщений, а вместо этого работает напрямую через сокеты, что означает что MTA (агенту передачи почты) следует прослушивать сетевой сокет (который может быть поднят либо на локальном либо на удаленном хосте).
Во-вторых, клиентские заголовки вроде From:, Cc:, Bcc: и Date: не интерпретируются MTA, хотя и анализируются PHP.

  Ответить  
 
 автор: tAleks   (07.08.2009 в 09:28)   письмо автору
 
   для: Trianon   (07.08.2009 в 00:27)
 

Честно говоря, нифига не понял.
А делать-то что? Как решить задачу, чтобы в поле "TO" было указано "Фамилия Имя Очтество <email@mail.ru>"?

  Ответить  
 
 автор: Trianon   (07.08.2009 в 10:37)   письмо автору
 
   для: tAleks   (07.08.2009 в 09:28)
 

Наверное попробовать добавить соответствующее поле в список полей заголовка (4-й параметр)

  Ответить  
 
 автор: tAleks   (07.08.2009 в 10:45)   письмо автору
 
   для: Trianon   (07.08.2009 в 10:37)
 

Попробовал так:


<?php 

$email 
'vasia@mail.ru'
$name 'Вася'

$to '=?windows-1251?B?'.base64_encode($name).'?= <'.$email.'>'

$res mail($email'Тема''Сообщение'"To: $to"); 

echo (
$res) ? 'OK' 'Error'

?> 


Тоже выдает "Error"

  Ответить  
 
 автор: Trianon   (07.08.2009 в 11:12)   письмо автору
 
   для: tAleks   (07.08.2009 в 10:45)
 

что-то я не понял. А где Date, Mime-version, Content-Type, Content-Transfer-Encoding, From наконец?

  Ответить  
 
 автор: tAleks   (07.08.2009 в 11:17)   письмо автору
 
   для: Trianon   (07.08.2009 в 11:12)
 

>что-то я не понял. А где Date, Mime-version, Content-Type, Content-Transfer-Encoding, From наконец?

На сколько мне известно, эти заголовки не являются обязательными для того чтобы сообщение было отправлено. Другой вопрос, будет ли оно доставлено. Но этот вопрос меня сейчас не волнует. Не работает именно отправка.

Если в вышеуказаном примере убираем 4 апраметр функции mail() то отправка проходит.

Начальный вопрос заключается в следующем: Как отправить письмо чтобы в поле TO был не просто голый емаил, а "ФИО <email@mail.ru>";

  Ответить  
 
 автор: Trianon   (07.08.2009 в 11:30)   письмо автору
 
   для: tAleks   (07.08.2009 в 11:17)
 

Для того чтобы письмо было принято к доставке, уважающие себя почтовые ретрансляторы обычно требуют, чтобы
а) либо письмо отправлялось сервером с доменным почтовым адресом, на который можно прислать ответ (в этом случае помимо вышеупомянутых полей заголовка, должен присутствовать Received ),
б) либо клиент был аутентифицирован сервером доставки, как в случае с mail.ru (и в этом случае требуется прямая сокетная коммуникация по ESMTP)

Но тот сервер (или MTA), который пытаетесь мучать Вы, может иметь собственные представления о том, какие должны быть письма. Возможно, ему и вправду всё это по барабану.

Почему бы не отвергнуть отправку письма, для которого даже первый шаг доставки тоже не проходит?

Ну и наконец, настройки этой самой mail() в php.ini сервера тоже могут желать лучшего...

  Ответить  
 
 автор: tAleks   (07.08.2009 в 11:52)   письмо автору
 
   для: Trianon   (07.08.2009 в 11:30)
 

Ну так делать-то в конечном итоге что? Я прошу идею подкинуть, как все-таки решить задачу.

  Ответить  
 
 автор: Trianon   (07.08.2009 в 12:08)   письмо автору
 
   для: tAleks   (07.08.2009 в 11:52)
 

Я уже подкинул.
Формируйте корректное письмо. (пример http://softtime.ru/scripts/mailattach.php )
Если оно не будет приниматься к отправке на сервере хостинга - жалуйтесь хостеру.

  Ответить  
 
 автор: tAleks   (07.08.2009 в 14:08)   письмо автору
 
   для: Trianon   (07.08.2009 в 12:08)
 

Письма отправляются, и даже доходят до поучателя.
Но проблема в том, что при добалении ИМЕНИ В ПОЛЕ КОМУ, письма не отправляются.
Поэтому корректность письма, тут по-моему не причем.

А этот пример http://softtime.ru/scripts/mailattach.php тоже с голым мылом в поле Кому.

  Ответить  
 
 автор: Trianon   (07.08.2009 в 14:25)   письмо автору
 
   для: tAleks   (07.08.2009 в 14:08)
 

Тады значит никак.

  Ответить  
 
 автор: tAleks   (07.08.2009 в 11:52)   письмо автору
 
   для: Trianon   (07.08.2009 в 11:30)
 

Ну так делать-то в конечном итоге что? Я прошу идею подкинуть, как все-таки решить задачу.

  Ответить  
 
 автор: Sergeich   (07.08.2009 в 14:52)   письмо автору
 
   для: tAleks   (07.08.2009 в 11:52)
 

Беседовать с хостинг провайдером. Должно отправляться. Специально попробовал сам - работает.

  Ответить  
Rambler's Top100
вверх

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