|
|
|
| Помогите пожалуйста! Функция mail() не работает (во время отправки сообщения возвращает false). Если сможете расскажите поподробнее как с ней работать. | |
|
|
|
|
|
|
|
для: SoftPower
(10.08.2004 в 22:38)
| | Я сейчас чего-нибудь выложу про эту функцию, но вы бы поподробнее написали, что и где не работает... | |
|
|
|
|
|
|
|
для: SoftPower
(10.08.2004 в 22:38)
| | А на какой системе происходит отправка почты? Дело в том, что для нормальной работы функции mail() требуется почтовый агент. На хостингах, где по большей части установлен UNIX используется sendmail. Под windows sendmail не портирован и следует использовать либо альтернативный почтовый агент, либо общаться с почтовым ретранслятором через сокеты, вручную отправляя ему все низкоуровневые команды.
http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=182&page=1 | |
|
|
|
|
|
|
|
для: cheops
(10.08.2004 в 23:56)
| | Отправка почты происходит на локальной машине с операционной системой Windows. Но недавно на вашем форуме я нашел, как общаться с почтовым ретранслятором через сокеты, вручную отправляя ему все низкоуровневые команды. Ваш пример: function send_mail($server, $to, $from, $subject="", $headers=""). Но для отправки письма используется ретранслятор 'mx9.yandex.ru' и письма получается отправлять только на адрес: ttt@yandex.ru. Подскажите пожалуйста, как отправлять письма на email такого типа, как ttt@umc.com.ua или ttt@rambler.ru. | |
|
|
|
|
|
|
|
для: SoftPower
(11.08.2004 в 08:40)
| | >Но для отправки письма используется
>ретранслятор 'mx9.yandex.ru' и письма получается отправлять
>только на адрес: ttt@yandex.ru.
Не факт. У меня получалось отправлять через их ретранслятор (правда через mx2, а не mx9, но это вряд ли имеет значение) сообщения адресату, совсем с яндексом не связанному. Вряд ли за последние две недели изменилось... Точно также обстояло дело с другими изветными мне ретрансляторами.
Но если вы хотите точно использовать тот ретранслятор, на который хотите писать, тогда вот:
Для umc.com.ua ретрансляторы:
n7.umc.com.ua
n8.umc.com.ua
(с одинаковым приоритетом)
Для rambler:
imx1.rambler.ru
В скрипте, который приведен на форуме просто поменяйте яндексовский ретранслятор на тот, который Вам нужен. | |
|
|
|
|
|
|
|
для: Кузнецов М.В.
(11.08.2004 в 10:36)
| | Подскажите пожалуйста, где Вы берете адреса ретрансляторов на различные сайты. С уважением, Икрянов Владимир. | |
|
|
|
|
|
|
|
для: SoftPower
(12.08.2004 в 21:53)
| | >Подскажите пожалуйста, где Вы берете адреса ретрансляторов
>на различные сайты.
Узнаю при помощи вот такого несложного скрипта, который возвращает MX-записи:
<?php
$email="ttt@yandex.ru";
$email_arr = explode("@" , $email);
$host = $email_arr[1];
getmxrr($host, $mxhostsarr, $weight);
echo "На $email письма могут отправляться через следующие хосты:<br>";
for ($i=0; $i < count($mxhostsarr); $i++)
{
echo ("$mxhostsarr[$i] = $weight[$i]<br>");
}
?>
|
Здесь используется функция getmxrr, принимающая в качестве аргумента имя хоста hostname в данном домене и заполняет массив mxhost списком почтовых ретрансляторов этого домена.
Подробнее про эту функцию смотрите по урлу.
http://www.softtime.ru/info/articlephp.php?id_article=4 | |
|
|
|
|
|
|
|
для: Кузнецов М.В.
(12.08.2004 в 22:42)
| | А как эту функцию (getmaxrr) включить?
Насколько я понял, её действие зависит от значение следующего параметра в php.ini
Установил в такое (default off), но не помогает...
define_syslog_variables = PHP_INI_ALL | |
|
|
|
|
|
|
|
для: Kirill
(13.08.2004 в 10:55)
| | Дело в том, что как и большинство других сетевых функций, эта функция не поддерживается для Windows-платформы, вам потребуется UNIX-система(хостинг) для её использования. | |
|
|
|
|
автор: [b]elenaki[/b] (08.10.2004 в 11:01) |
|
|
для: cheops
(13.08.2004 в 11:14)
| | под Линуксом тоже не работает :( | |
|
|
|
|
|
|
|
для: [b]elenaki[/b]
(08.10.2004 в 11:01)
| | От коварных греков этого следовало ожидать :))) | |
|
|
|
|
|
|
|
для: [b]elenaki[/b]
(08.10.2004 в 11:01)
| | Хм... У нас на хостинге (под Linux) и на нескольких других хостингов тоже под Lin все работает отменно. | |
|
|
|
|
|
|
|
для: cheops
(13.08.2004 в 11:14)
| | У меня хост юниксовый и эта функция работает. Но вот Я толком не разобрался в вашем Sendmail-е . Тут не разобратся что где :
<?php
include("mail_class.php");
$mail = new Mail();
$mail -> to = "web-admin@mail.ru";
//сюда подставляется реальный адрес
$mail -> subject = "test";
$mail -> msg = "testing...";
$mail -> msg = "testing...";
$mail -> rigorous_email_check = 0;
if($mail->send()){
echo("Success");
}else{
echo("error");
}
echo("<br>");
echo($mail -> msg);
?>
|
Тут написано дважды $mail -> msg = "testing..."; зачем это или это ошибка ?
Где тут имя отправителья или его е-майл.
Я протестировал этот скрипт и мне пришел письмо с е-майлом хост сервера а у меня другой домен ( Как можно изменить это. И еще мне дали с хостом SMTP доступ можно использовать его ? | |
|
|
|
|
|
|
|
для: broker
(09.10.2004 в 22:37)
| | Здесь лучше воспользоваться функцией mail() на прямую.
<?php
mail("web-admin@mail.ru", "test", "testing...");
?>
|
PS Лично я считаю, что в PHP практически нет задач для использования которых требуется объектно-ориентированных подход (хотя сам его очень люблю :) - это удел больших серьёзных библиотек и систем предназначенных для большой команды разработчиков. PHP ориентирован всё-таки на "быстрый" код, который часто подвергается изменениям и над которым работает небольшое число программистов. | |
|
|
|
|
|
|
|
для: cheops
(09.10.2004 в 23:12)
| | Я так понел что не как е-майл отправитель изменить нельзя , всегда будет показаться е-майл хост сервера ? | |
|
|
|
|
|
|
|
для: broker
(09.10.2004 в 23:25)
| | Нет, от чего же... для этого достаточно передать функции mail соотвествующий заголовк:
mail("web-admin@mail.ru", "test", "testing...","From: Someone <someone@mail.com>\n");
|
http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=442&page=1 | |
|
|
|
|
|
|
|
для: broker
(09.10.2004 в 23:25)
| | Можно, без проблем - просто подставляете нужное значение в поле from. | |
|
|
|
|
|
|
|
для: broker
(09.10.2004 в 22:37)
| | Это просто тестовый скрипт для тестирования класса, извиняюсь за тавтологию. Т.е. просто пример на классы. В реале (если уж только не совсем большое и расширяемое приложение, которое сопровождает несколько человек) лучше все делать без них (без классов) и просто использовать функцию mail.
>Тут написано дважды $mail -> msg = "testing..."; зачем это
>или это ошибка ?
Это - оплошность.
>Где тут имя отправителья или его е-майл.
>Я протестировал этот скрипт и мне пришел письмо с е-майлом
>хост сервера а у меня другой домен ( Как можно изменить
>это.
В этом скрипте поле from отсутствует, поэтому Вам пришло, в этом поле то, что подставляет сервер. Добавьте поле from в этот скрипт, и все будет как Вам надо. | |
|
|
|
|
|
|
|
для: Кузнецов М.В.
(10.10.2004 в 16:43)
| | Мне кажется у вас в функции сенд ошибка
function send()
/* метод отправки сообщения */
{
if(!$this -> check_fields()) return true;
if (mail($this -> to, htmlspecialchars( stripslashes(trim($this -> subject))),
htmlspecialchars(stripslashes(trim($this -> msg)))))
{
return true;
}else{
return false;
}
}
}
|
Тут mail($this -> to, htmlspecialchars( stripslashes(trim($this -> subject))),
htmlspecialchars(stripslashes(trim($this -> msg)))) последная переменная должно быть не $this -> msg, а $this -> headers | |
|
|
|
|
|
|
|
для: broker
(11.10.2004 в 10:20)
| | Ошибки нет.
Переменная msg - это переменная, которая содержит сообщение. heаders - это массив, содержащий тело собщения дополнительных заголовков.
Для того, чтобы сообщить функции доп.заголовки надо после переменной, содержащей тело сообщения (в нашем случае $msg) добавить перменную, содержащую заголовки. К примеру:
<?php
mail($this->to, $this->subject, $this->msg,implode("\r\n", $this->headers)))
?>
|
| |
|
|
|
|
|
|
|
для: Кузнецов М.В.
(10.10.2004 в 16:43)
| | Думаю поэтому у меня не получался изменить адрес отправителья
http://softtime.ru/scripts/sendmessage.php | |
|
|
|
|
|
|
|
для: broker
(11.10.2004 в 10:25)
| | Адрес отправителя у Вас не получается изменить потому что в этом скрипте это в принципе нельзя сделать. Для того, чтобы ввести эту возможность, допишите поле from, вставив его через headers. Мне это было не надо, поэтому я эту возможность и не ввел. | |
|
|
|