Эта тема на forum.dklab.ru


berkut: mail()
Подскажите как решить такую проблему: не приходят письма на ящики softhome.net & sms.beemail.ru, посланные с хоста amillo.net.
Код работает, на другие ящики всё приходит. Может это какие-нибудь антиспам фильтры(я не занимаюсь спамом)?
Вот ф-я: mail("forward-4tncj44@sms.beemail.ru", "sms-mailer", $messege,
"From: berkut@amillo.net\r\n"
."Content-Type: text/plain".";"."charset=Windows-1251\r\n"
."Return-path: berkut@amillo.net");
Может-ли быть проблема в отсутствии каких-либо заголовков в письме? Или в неправильной кодировке?
Юрий Насретдинов:
Может-ли быть проблема в отсутствии каких-либо заголовков в письме?
Их можно вообще не ставить (это же дополнительные заголовки, а не основные, основные PHP уже сам посылает. Надо либо не указывать заголовок и тело письма, и писать все в заголовки, либо наоборот, писать все в тему письма и в сообщение, и не указывать дополнительные заголовки.
7.3.:
berkut:
Самарский что ли? Круто! (в смысле, я рок не люблю)
bæv:
Может-ли быть проблема в отсутствии каких-либо заголовков в письме?

Может, посмотрите этот топик:
http://forum.dklab.ru/denwer/nursery/Rassilka_1.html
Anonymous:
yUAC:
А как-же писать заголовки в тему письма??? Всё что стоит в mail("ll@gg.ll, "ВОТ СДЕСЬ","") пишеться сендмэйлом в тему письма, в итоге приходит только один реальный заголовок Subject, а в нём всё в кучу.
2. А смысл всё писать только в заголовок? Второй и третий параметр всё равно обязательно писать, пусть они и будут пустыми ""
В итоге, в письме бедет 2 заголовка Subject- первый пустой.
bæv:
не указывать заголовок и тело письма, и писать все в заголовки

Что-то я тоже не понял...
Особенно: "не указывать заголовок" и "писать все в заголовки". Это как?
berkut:
baev:
насколько я понял это так:
mail("kk@dd.ww", "","","Subject:тра-ля-ля\nFrom: mmmmm\nтекст сообщения");
bæv:
насколько я понял это так

То есть тут "не указывать заголовок" имелось в виду "не указывать тему (Subject)"?

В общем, что я бы посоветовал -- посмотрите исходник письма с Вашего сайта (в OutlookExpress, например, это -- "Файл->Свойства->Подробно->Исходное сообщение"). И проверьте все поля:
Return-Path:
From:
Disposition-Notification-To:
-- стоит ли там Ваш адрес, и нет ли повторений полей.

Да, sendmail может по умолчанию вставлять "адрес администратора сервера" -- тот, что можно увидеть в phpinfo. Тогда -- либо к хостеру, либо пятым параметром в mail() менять адрес.
berkut:
baev:
Subject -это и есть один из заголовков
А заголовки приходящих я смотрел, ничего экстраординарного нет.
Юрий Насретдинов:
berkut:
Короче говоря, у Вас какой-то "смешанный стиль", надо либо все писать в заголовки письма, а остальные поля оставлять пустыми, либо наоборот, указывать тему письма и его тело (body), может быть, еще и отправителя, но не трогать заголовки. Лучше первый вариант, хотя второй удобнее
bæv:
В общем, скорей всего, хостер в спам-листы попал.
Дмитрий Котеров:
Я бы, наоборот, посоветовал поступать так. Формировать письмо в переменной целиком — вместе с заголовками. Затем при помощи preg_match() вырезать оттуда заголовки To и Subject и распихивать их по соответствующим параметрам функции mail() (проводя также base64-конвертирование). Так как-то надежнее выглядит, хотя и возни больше. Но достаточно однажды написать функцию, принимающую письмо целиком, и все.

Именно так я собираюсь писать в книге (глава про почту нуждается в серьезной переделке, я пока ее еще не трогал).
Анжелика Моисеенкова:

<?
include("Mail.php");

$recipients = "mail_to@domain.mail";

$headers["From"]    = "mail_from@domain.mail";
$headers["To"]      = "mail_to@domain.mail";
$headers["Subject"] = "Test message";

$body = "TEST MESSAGE!!!";

$params["host"] = "smtp.server";
$params["port"] = "25";
$params["auth"] = true;
$params["username"] = "user";
$params["password"] = "password";


$mail_object =& Mail::factory("smtp", $params);

$mail_object->send($recipients, $headers, $body);
?>


Или

<?
$headers =  "MAIL FROM:".$this->from."\n";
$headers .= "RCPT TO:$to_email\n";
$headers .= "DATA\n";
$headers .= "Date: Fri, 19 Mar 2004 12:23:59 +0100\n";
$headers .= "Return-Path: <".$this->returnadres.">\n";
$headers .= "To: $to_naam <$to_email>\n";
$headers .= "From: ".$from_name." <".$from_email.">\n";
$headers .= "Reply-To: ".$from_name." <".$from_email.">\n";
$headers .= "Subject: ".$this->subject." $i\n";
$headers .= "X-Sender: ".$from_name." <".$from_email.">\n";
$headers .= "X-Mailer: PHP\n";
$headers .= "X-Priority: ".$priority."\n";
$headers .= "MIME-Version: 1.0\n";
$headers .= "Content-Type: multipart/alternative;\n boundary=\"text_boundary\"\n";
$headers .= "--text_boundary\n";
$headers .= "Content-Type: text/plain; charset = \"iso-8859-1\"\n";
$headers .= "Content-Transfer-Encoding: 8bit\n";
$headers .= stripslashes($message_plain)."\n";
$headers .= "--text_boundary\n";
$headers .= "Content-Type: text/html; charset=\"iso-8859-1\"\n";
$headers .= "Content-Transfer-Encoding: 8bit\n";
$headers .= stripslashes($message)."\n";
$headers .= ".\n";
$headers .= "RSET\n";
?>


http://ru.php.net/mail
bæv:
Profile!, если уж пишете тут код с использованием класса -- дайте ссылку на этот класс.
Да, и поясните, зачем тут код для отсылки писем через SMPT, если здесь речь про sendmail?
Анжелика Моисеенкова:
baev:
1. Код пишу не я.
2. Ссылка есть внизу.
3. Второй код наглядно поясняет, какие могут быть хедеры у письма. То же самое можно узнать и "The Bat!".
4. А перый, как грамотно всё это дело прописывать.
5. Не флеймте.
berkut:
Подскажите пожалуйста, как воспользоваться этим классом. Скачал Pear Mail-1.1.2 а там Mail.php(в самом начале require_once 'PEAR.php'; а этого PEAR.php нет!? ) + папка Mail, в ней 4 файла: mail.php RFC822.php sendmail.php smtp.php

Дмитрий Котеров:
А для чего сначала писать всё письмо в одну переменную, а потом 2 заголовка из неё вырезать? Заголовки TO & SUBJECT тоже конвертировать?
P.S. Хотел-бы попробовать оба способа, и с классом через smtp.mail.ru и вариантом Дмитрия Котерова
Дмитрий Котеров:
Скачал Pear Mail-1.1.2 а там Mail.php(в самом начале require_once 'PEAR.php'; а этого PEAR.php нет!? ) + папка Mail, в ней 4 файла: mail.php RFC822.php sendmail.php smtp.php
Естественно, надо еще и скачивать все модули, от которых данный зависит. Вам надо PEAR установить. Если у Вас Денвер, для установки модулей есть /usr/local/php/pear.bat (возможно, придется вначале запустить go-pear.bat), и по умолчанию все уже настроено. Но, вообще, с этим PEAR пока мороки много — скрипт-установщик у них глючный. В крайнем случае можно вручную все модули скопировать в \usr\local\php\pear
Дмитрий Котеров:
Кстати, в PHP 4.3.4, который можно скачать с http://php.net и развернуть в /usr/local/php (не забудьте сохранить php.ini из Денвера!), уже входит PEAR-пакет Mail. Я вот только что его скачал, посмотрел.

Только go-pear.bat надо запустить.

Так что пишете просто в скрипте:

require_once "Mail/smpt.php";

и работаете. Ни путей не надо настраивать, ни пакетов ставить.
berkut:
Так ведь я не со своей машины письма отправляю, а с сайта в интернете.
Дмитрий Котеров:
Ну, тогда туда поставьте нужные модули.
berkut:
Я так понял, что воспользоваться PEAR мне не светит, ведь у меня нет доступа к таким директориям как /usr/local/php/
berkut:
Подскажите пожалуйста алгоритм вашей фу-ии. Я понял так: сначала формировать всё письмо в одной переменной ($mes), потом вырезать заголовки To и Subject при помощи preg_replace(я так и не понял,как ВЫРЕЗАТЬ при помощи preg_match. Или-же оставить TO и Subject и продублировать их в первом и втором параметре ф-ии mail()? ) Затем, base64_encode($mes) и mail("$to","subject",$mes)
Я правильно всё понял?
Евгений Галашин:
Я так понял, что воспользоваться PEAR мне не светит, ведь у меня нет доступа к таким директориям как /usr/local/php/
можно просто весь нужный PEAR таскать с собой и инклудить по необходимости. PEAR - это простые PHP-скрипты с классами.
Дмитрий Котеров:
Ага. А в скрипте первой строчкой сделайте:

$sep = getenv("COMSPEC")? ";" : ":";
ini_set("include_path", ini_get("include_path").$sep.getenv("DOCUMENT_ROOT")."/path/to/my/pear");

Евгений Галашин:
Дмитрий Котеров:
В приведённом Вами примере могут быть(теоретически) конфликты версий. да и второй getenv не нужен... лучше так:
$sep = getenv("COMSPEC")? ";" : ":";
ini_set("include_path", $_SERVER["DOCUMENT_ROOT"]."/path/to/my/pear".$sep.ini_get("include_path"));
Дмитрий Котеров:
Да нет, как раз getenv() лучше. Значение в $_SERVER можно подменить из скрипта.
Кроме того, не во всех версиях PHP есть эта переменная.

Насчет «конфликта версий» не понял — уточните.
berkut:
А можно поинтересоваться, что означает getenv("COMSPEC")? ";" : ":";
Дмитрий Котеров:
Если Windows, тогда разделитель ";", а если Unix — то ":".
berkut:
И ещё вопросик, ini_set и putenv изменяют значения только для текущего скрипта?
berkut:
Помогите пожалуйста! Ужас какой-то! Ну никак не могу отправить письмо. С этим PEAR не приходят письма даже туда, куда раньше приходили.
Во-первых: стал тестировать у себя на машине и в файл воткнулх
<?
$sep = getenv("COMSPEC")? ";" : ":";
ini_set("include_path", ini_get("include_path").$sep.getenv("DOCUMENT_ROOT")."/path/to/my/pear");
include("Mail.php");
$recipients = "mail_to@domain.mail";
$headers["From"] = "mail_from@domain.mail";
$headers["To"] = "mail_to@domain.mail";
$headers["Subject"] = "Test message";
$body = "TEST MESSAGE!!!";
$params["host"] = "smtp.server";
$params["port"] = "25";
$params["auth"] = true;
$params["username"] = "user";
$params["password"] = "password";
// Create the mail object using the Mail::factory method
$mail_object =& Mail::factory("smtp", $params);

$mail_object->send($recipients, $headers, $body)

Так написано в коментарии на http://ru.php.net/mail (и поменял все параметры типа smtp,from)
Потребовал ещё файлов PEER + в сообщение о ошибке выдал такой include_path='.;/usr/local/php/pear;z:/home/test/www/ma'
Это правильный путь???
Потом скачал все необходимые файлы, сообщений о ошибке нет, что-то отсылает в интернет, но письма не приходят.
+В скаченом socket.php опять присутствует порт var $port=0 var $addr = ''; - в этом файле опять прописывать порт и IP?
Евгений Галашин:
+В скаченом socket.php опять присутствует порт var $port=0 var $addr = ''; - в этом файле опять прописывать порт и IP?
нет. Их надо задавать из Вашего скрипта при создании класса.
Дмитрий Котеров:
И ещё вопросик, ini_set и putenv изменяют значения только для текущего скрипта?
Разумеется.

$params["host"] = "smtp.server";
Чего-то вот этот параметр наводит меня на печальные мысли. Видимо, они тоже в этом модуле отсылают письма через SMTP-сервер, а у Вас его как раз-таки и нет — Вам надо напрямую подключаться к машине, на которой ящик, и посылать на нее smtp-команды. Может быть, данный модуль вообще не подходит.

Кстати, адреса SMTP-сервера, обслуживающего тот или иной ащик, можно узнать при помощи функции http://ru2.php.net/manual/ru/function.getmxrr.php (имя хоста — это то, что после собаки). Вот к ним-то и надо напрямую подключаться.
berkut:
Воспользовался готовыми функ-ми с пхп.нет, определил хост list.ru - mxs.mail.ru Пробовал в $params["host"] подставлять mxs.mail.ru
mail.ru, list.ru, smtp.list.ru - всё тчетно
Стали вылазить следующие ошибки, с некоторыми вариациями.
Warning: fsockopen() : php_network_getaddresses: gethostbyname failed in z:\home\test\www\ma\Mail\Net\Net\Socket.php on line 108

Warning: fsockopen() : unable to connect to mxs.mail.ru:25 in z:\home\test\www\ma\Mail\Net\Net\Socket.php on line 108

Похоже не судьба мне отправить письма. Пойду читать про socket-ы
Дмитрий Котеров:
Пробовал в $params["host"] подставлять mxs.mail.ru
А, кстати, это мысль. Почему бы не взять PEAR-овский модуль и не подставлять ему прямо SMTP-сервер, полученный из MX-записей домена. Это должно сработать.

gethostbyname failed in z:\home\test\www\ma\Mail\Net\Net\Socket.php on line 108
Ну, у каждого домена существует несколько MX-записей. Некоторые из них могут не откликаться — это нормально, нужно перебирать все, пока не найдется работающий. Собственно, почтовые SMTP-серверы только для этого и нужны — они сразу же и без разговоров принимают от Вас почту, а потом уже в отложенном порядке думают, что с ней делать, и периодически пытаются послать.
Дмитрий Котеров:
Пока немного сыровато и может не работать в PHP4 (я не уверен, что там можно давать умолчательные значения параметрам-ссылкам — в PHP5 точно можно), но вот:

<?php ## Посылка почты вручную, минуя SMTP-сервер провайдера.
// Подключаем эмуляцию функции getmxrr().
include "../net/getmxrr.php";

// Функция для посылки почты вручную, минуя SMTP-сервер провайдера.
// Может использоваться в точно таком же контексте, как и стандартная mail().
function mail_manual($to, $subject, $message, $headers=false, $parameters=false, $reason=false) {
$reason = false;
// Вначале выделяем имя хоста.
if (!preg_match('/@(.*)$/', $to, $pockets)) {
$reason = "invalid e-mail address - $to: no host";
return false;
}
$host = $pockets[1];
// По стандарту SMTP, если нет ни одной MX-записи, то в качестве
// почтового сервера выступает сам хост.
if (!getmxrr($host, $mxes, &$weights)) {
$mxes = array($host);
}
// Проходимся по всем MX-записям. Для простоты веса не
// учитываем - большой беды от этого не будет.
foreach ($mxes as $mx) {
// Указываем новый SMTP-сервер для отправки почты.
$SMTP_old = ini_set("SMTP", $mx);
// Используем стандартную функцию mail().
$result = mail($to, $subject, $message, $headers, $parameters);
// Восстанавливаем предыдущий SMTP-сервер.
ini_set("SMTP", $SMTP_old);
// Если письмо отослано, все сделано.
if ($result) return true;
}
$reason = "could not connect to any of (".join(", ", $mxes).")";
return false;
}

#ini_set("smtp_port", "1025");
ini_set("sendmail_from", "me@mail.ru");
mail_manual("your@mail.ru", "test", "testing!", false, false, &$reason)
or die("Could not send mail: $reason.");
?>

Включаемый файл ../net/getmxrr():

<?php ## Эмуляция функции getmxrr() для Windows.
if (!function_exists("getmxrr")) {
function getmxrr($hostname, &$hosts, $weights=false) {
$hosts = $weights = array();
// Не идеальный способ, но работающий: используется внешняя
// программа nslookup, доступная в WIndows NT/2000/XP/2003.
exec("nslookup -type=mx $hostname", $result);
// Построчно перебираем ответ утилиты.
foreach ($result as $line) {
// Выделяем имя почтового сервера.
if (preg_match('/mail\s+exchanger\s*=\s*(\S+)/', $line, $pock)) {
$hosts[] = $pock[1];
// Также выделяем вес.
if (preg_match("/MX\s+preference\s*=\s*(\d+)/", $line, $pock))
$weights[] = $pock[1];
else
$weights[] = 0;
}
}
return count($hosts) > 0;
}
}
// В PHP5 появился синоним для getmxrr() - его мы тоже эмулируем.
if (!function_exists("dns_get_mx")) {
function dns_get_mx($hostname, &$hosts, &$weights) {
return getmxrr($hostname, $hosts, $weights);
}
}
?>

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

ВНИМАНИЕ! В Windows нужно убрать из php.ini параметр sendmail_path. Иначе почта туда идет, и SMTP вообще игнорируется.
berkut:
На php4 похоже не работает.
Warning: mail() : Failed to connect to mailserver at "mxs.mail.ru" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in z:\home\lo\www\mail\index.php on line 28

Warning: mail() : Failed to connect to mailserver at "mxa.mail.ru" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in z:\home\lo\www\mail\index.php on line 28
Could not send mail: could not connect to any of (mxs.mail.ru, mxa.mail.ru).
Дмитрий Котеров:
Это у Вас, скорее всего, провайдер перекрыл 25-й порт. У меня в домашней сети то же самое. Попробуйте сделать

telnet mxs.mail.ru 25

- наверняка тоже не подключится.
berkut:
Да нет, подключается вроде: 220 mail.ru ESMTP 'дата'
Дмитрий Котеров:
Ну тогда я не знаю, в чем дело. У меня работает. Впрочем, конечно, это решение все равно никуда не годится - отключать sendmail_path негоже. Лучше уж через сокеты сделать. Кстати, на http://php.net/mail в пользовательских комментариях есть функция для этого.
bæv:
Я, это... ...всё никак понять не могу:

1. зачем вообще SMTP?
2. berkut, Вы у хостера не спрашивали, почему у Вас с sendmail такая "бяка"?
3. если через SMTP, то -- где авторизация?
Дмитрий Котеров:
Ответ на все три вопроса один: нету хостера, PHP под Windows. И SMTP-сервера без авторизации тоже нету.
bæv:
И SMTP-сервера без авторизации тоже нету

Не понял.
Человек через mail.ru пытается без авторизации письма рассылать?

(Спамер, наверное...)
berkut:
Хостер есть, халявный - amillo.net Я об этом несколько раз писал. Насчёт sendmail я у сапорта спрашивал, сказали что причин, по которым письма могут не приходить на некоторые ящики, целая куча. Но впоследствии, они вроде-бы признались, что sendmail у них работает как-то не очень хорошо. А на счёт авторизации: когда пробовал последний пример, что-то я ступил, забыл, что маил.ру требует авторизации. И пробовал я последний вариант, просто ради интереса.
Придётся почитать про сокеты, может сам чего-нибудь напишу, или хотя-бы разберусь в готовых. Но у хостера включен safe mode, так-что ещё не знаю, разрешаются-ли исходящие конекты
bæv:
Я об этом несколько раз писал.
Об чём и кому? Там у Вас windows разве стоит?

Придётся почитать про сокеты,
Лучше с mail до конца разберитесь. (Или -- добивайте SMTP-вариант, не забывая про авторизацию).
berkut:
Об чём и кому?
О том, что письма я отправляю не со своей машины, а с сервера в интернете - т.е. хостер есть. Писал в этом топике, всем.
Там у Вас windows разве стоит?
Нет
Дмитрий Котеров:
Человек через mail.ru пытается без авторизации письма рассылать?
Вы очень невнимательны, просто чудовищно невнимательны.
Он через mail.ru посылает письмо на mail.ru же. Это не запрещено и, более того, это вообще невозможно запретить.
bæv:
Вы очень невнимательны, просто чудовищно невнимательны.
Чего-то я, видимо, не понимаю... ...и не понимаю, на что именно я должен был обратить внимание...

1. Начнём с того, что "изначальная проблема" (в первом посте) -- то, что не доходят письма на адреса в неких доменах (не относящихся к mail.ru).

2. На сервере mail.ru довольно подробно расписано как именно, по каким адресам и с какими параметрами отсылаются письма. Здесь -- ни слова про то, что все эти требования соблюдены. А упоминавшиеся адреса, по которым пытались подключиться -- совсем не те, что даются mail.ru.

3. Вы пишете: PHP под Windows, а человек отвечает, что: Цитата:
Там у Вас windows разве стоит?
Нет

Вы пишете: нету хостера, он отвечает: Хостер есть

Ну и чьим словам мне уделить больше внимания?

4. Ну и, он сам же пишет: А на счёт авторизации: когда пробовал последний пример, что-то я ступил, забыл, что маил.ру требует авторизации.

Так что, я-то точно понимаю, что мне тут многое непонятно, поэтому такие вопросы и задаю...

P.S. Да, ещё непонятно: в последнем примере явно подчёркнуто, что он для windows. Человек же явно пытался его с *nix-сервера запускать. Или я опять на что-то внимания не обратил?
Дмитрий Котеров:
Подобные проблемы обычно возникают в Windows, оттого и направленность, и лишняя половина кода. Но я не знал, что ему нужно для Unix, так что, если он это говорил, я тоже невнимателен. Тем не менее, код по теме.

Собственно, Вы же невнимательный потому, что не просмотрели исходник — даже комментарии, которые в нем приведены, не прочитали. Приведенному скрипту SMTP-сервер не нужен, потому что он сам выступает в его роли. И авторизация тут ни при чем ну совершенно. А также Вы, наверное, не обратили внимания на мое замечание про mail.ru и про то, что письма, направляющиеся на сам сервер, а не вовне через него, авторизации не требуют никогда и ни при каких условиях (разве что при неправильно настроенном сервере, но это быстро лечится админами).
Дмитрий Котеров:
http://phpmailer.sourceforge.net/
bæv:
Собственно, Вы же невнимательный потому, что не просмотрели исходник
1. Собственно, откуда Вы знаете, что я смотрел, а что не смотрел?
2. Всё я смотрел. Только так и не понял (видимо, на самом деле невнимателен) -- при чём вообще тут Ваш скрипт? Ещё раз: человек из под *nix пытается почту отослать. Да, кстати, сколько я не перечитывал, так и не понял, откуда Вы взяли, что ему на mail.ru нужно почту отправить, а не через mail.ru. (То, что нужно человеку, насколько я понимаю, описано в первом посте).
3. В общем, извиняюсь, но насчёт "чудовищности", так и хочется ответить что-нить, типа: "Чья б корова мычала",
... или словами А.С.Пушкина: "В чужой ..... соломинку ты видишь,
В своей -- не видишь и бревна."

4. А вообще, конечно, без "инициатора" топика -- остаётся только гадать, чьи догадки "ближе к истине". Предлагаю ярлык "чудовищности" навесить на инициатора, "дабы неповадно" было ему оставлять без внимания сынициированный им топик.
berkut:
ярлык "чудовищности" навесить на инициатора
Ну вообще здорово.

Попытаюсь всё разъяснить. Мне нужно сделать отправку писем с сайта, лежащего в инете, на ящик forward-4tncj44@sms.beemail.ru
В процессе использования ф-ии mail() выяснилось, что письма не приходят не только на этот ящик, но и на softhome.net. В то-же время, письма без проблем доходят до mail.ru и yandex.ru. После этого я создал этот топик. Стали поступать советы использовать PEAR-mail, пример Д.Котерова и класс с http://phpmailer.sourceforge.net/ Всё это я тестировал со своей машины, а не с amillo.net. В качестве смтп я указывал маил.ру, т.к. на нём у меня есть своя учётная запись(логин и пароль). И в качестве получателя использовал свой ящик на маил.ру.
Результаты своих экспериментов с PEAR я уже описывал. Эксперимент с http://phpmailer.sourceforge.net/ тоже закончился провалом. Сначала попытался запускать тестовый скрипт, который уже содержиться в phpmailer - выдал окошко для ввода адреса получателя и используемого смтп сервера(поля для пароля авторизации на смтп сервере нет!). Выдал собственные ошибки:
Test results:
test_wordwrap FAIL
test_low_priority FAIL
test_multiple_plain_fileattachment FAIL
test_plain_stringattachment FAIL
test_quoted_printable FAIL
test_html FAIL
test_html_attachment FAIL
test_embedded_image FAIL
test_multi_embedded_image FAIL
test_altbody FAIL
test_altbody_attachment FAIL
test_multiplesend FAIL
test_smtpkeepalive FAIL
test_error FAIL

14 tests run
14 failures.
и т.д.
Пробовал создавать свой объект, как описано в примерах на sourceforge.net - вылетела куча "стандартных, пхпэшных" ошибок. + там опять таки нет авторизации на смтп.
Дмитрий Котеров:
Вы взяли, что ему на mail.ru нужно почту отправить, а не через mail.ru.
Через mail.ru постороннему человеку отправить почту не удастся. Вообще. Потому как иначе спамеры бы разгулялись. Используя smtp-сервер на mail.ru, можно отправлять письма только получателям на mail.ru. Я это уже в третий раз говорю.

Тогда как определить, через какой сервер можно отправить почту для указанного получателя? Ответ на это дает функция, которую я привел выше. Она определяет, какой почтовый сервер обслуживает тот или иной ящик.

Все. Предлагаю эту тему завязать, потому что топчемся на ровном месте.

письма не приходят не только на этот ящик, но и на softhome.net. В то-же время, письма без проблем доходят до mail.ru и yandex.ru.
Через какой SMTP-сервер Вы посылаете письма? Если через mail.ru — они будут доходить до mail.ru, и никуда иначе. Если через yandex.ru — то на yandex. Если mail.ru и yandex — партнеры, то возможно, что они разрешили обмен письмами друг с другом без блокировки, но лично мне это сомнительно.

В качестве смтп я указывал маил.ру
Нельзя этого делать, если только Вы не посылаете письма на mail.ru же.


C:\...and Settings\Administrator\Application Data>nslookup -type=mx sms.beemail.ru
Server: ns.ints.pike
Address: 10.102.45.199

beemail.ru
primary name server = interserver.beeline.ru
responsible mail addr = mgribkov.beeline.ru
serial = 2004040108
refresh = 1200 (20 mins)
retry = 600 (10 mins)
expire = 2592000 (30 days)
default TTL = 86400 (1 day)

Вот через mgribkov.beeline.ru почту и посылайте. Он ее точно примет, в отличие от mail.ru.

И еще раз я говорю, что скрипт, который приведен выше, именно так и работает.
bæv:
Через mail.ru постороннему человеку отправить почту не удастся.

Блин...
И меня ещё в невнимательности обвиняют.
Он -- не посторонний. У него -- SMTP-эккаунт на mail.ru
И он может через свой эккаунт отправлять письма: одно письмо в минуту, после авторизации.

Нельзя этого делать, если только Вы не посылаете письма на mail.ru же.
Можно. Если делать правильно -- если из OutlookExpress, например, письма уходят, то и с сайта php-скриптом их тоже можно отправить.

Другое дело, что ограничения на mail.ru (одно письмо в минуту), по-моему, для отправки писем с сайта не подходит -- уж лучше с хостером sendmail по нормальному настроить.
Дмитрий Котеров:
forward-4tncj44@sms.beemail.ru
forward-4tncj44@sms.beemail.ru — просто шикарный mail.ru. А еще на этом же сервере microsoft.com стоит.
berkut:
Короче я опять накосепорил. Вообще при использовании PEAR-mail я думал отправлять письма на sms.beemail.ru через mail.ru. Я толком не знаю всей технологии смтп протокола и серверов, но я думал, что указывая смтп сервер, логин и пароль, PEAR будет отправлять письма так, как-будто я отправляю их из Бата, аутлука. Я не прав?
НО!!! Ещё раз повторюсь, все примеры и классы я тестировал так: со своего компа отправлял письма через смтп сервер маил.ру на ящик находящийся на том-же маил.ру
Используя smtp-сервер на mail.ru, можно отправлять письма только получателям на mail.ru.
Интересно, спамеры в этом случае тоже могут разгуляться, ведь пользователей на маил.ру туева хуча - подключаться отдельно к каждому хосту, маил, яндекс, хотмаил и слать письма только пользователям конкретного хоста. Или я что-то не понимаю?Другое дело, что ограничения на mail.ru (одно письмо в минуту), по-моему, для отправки писем с сайта не подходит -- уж лучше с хостером sendmail по нормальному настроить.
Меня и так устроит, заказов-то не много будет. Я просто хочу получать оперативную информацию о заказе на мобильник.
Дмитрий Котеров:
но я думал, что указывая смтп сервер, логин и пароль, PEAR будет отправлять письма так, как-будто я отправляю их из Бата, аутлука. Я не прав?
Если указываете логин и пароль — то правы. Это называется SMTP-авторизация. Но если не указываете (или указываете, но оно почему-то не работает) — тогда отсылка провалится.

Интересно, спамеры в этом случае тоже могут разгуляться, ведь пользователей на маил.ру туева хуча - подключаться отдельно к каждому хосту, маил, яндекс, хотмаил и слать письма только пользователям конкретного хоста.
Значит, там еще стоит ограничение на число подключений и число отосланных писем. Обычно так делают на хостингах.

Я просто хочу получать оперативную информацию о заказе на мобильник.
Тогда см. предпредыдущий мой постинг — там написано, к какому хосту надо подключаться.
berkut:
Дело дрянь. Пробовал и PEAR и phpmailer, в качестве хоста указывал mgribkov.beeline.ru - phpmailer выдаёт ,
Warning: fsockopen() : php_network_getaddresses: gethostbyname failed in z:\home\test2.ru\www\mail\class.smtp.php on line 105

Warning: fsockopen() : unable to connect to mgribkov.beeline.ru:25 in z:\home\test2.ru\www\mail\class.smtp.php on line 105
Пробовал sms.beemail.ru и beemail.ru - There was an error sending the message
Правда один раз с sms.beemail.ru написал что отправил! Будем ждать, может через пару часиков придёт. Но проблема всё равно осталась, один раз вроде-бы отправил и больше не хочет.
Дмитрий Котеров:
Правильный адрес SMTP — sms.beemail.ru. Я не обратил внимание, что у *@sms.beemail.ru вообще ни одного MX-хоста не указано. А следовательно, по RFC в качестве такового выступает сам домен после собаки.
Anonymous:
Я недавно (вчера) занялся изучением PHP и у меня возник вопрос по использованию функции mail(), засорять новыми темами форум не решился, увидел что-то похожее на свои потребности и спросить знающих людей надумал. В чём собственно суть, значится, моих непониманий? Вобщем, хотелось спросить всегда ли должна работать эта самая функция? Cлышал я о каком-то страшном слове sendmail, да и здесь его встретил, как я понял, чтобы функция mail() работала нужно, чтобы хостер этот самый sendmail (интересно что это такое) предоставлял, я пробовал на h12(agava) письмецо отправлять, не получилось. Увидел вот как через SMTP посылки слать, это похоже вроде обычной почтовой программы (как The BAT!), только на php, но таки не понял как сделать так, чтобы всё работало. Я могу позволить себе только халявный хостинг типа agava, amilo.net, ruwh.com, ну вы и так знаете что это такое, как с такого письмо отправить? Подскажите. Спасибо за внимание.
Юрий Насретдинов:
Гость:
С халявных конечно ничего не отправите... Это надо у админов сначала просить
Дмитрий Котеров:
sendmail

Эта тема на forum.dklab.ru