Есть скрипт, который через imap коннектится к ящику и посылает по адресу из базы письмо с паролем и другой информацией. Но есть проблема. Письма из него не доходят. При этом никаких ошибок не генерируется. И что удивительно если посылать письма на ящики, зарегистрированние на хостинге, они доходят. А на mail.ru никак. Я уже неделю над этим бьюсь. В службе поддержки и на форуме у хостера, ничего толкового не сказали. Хостинг powweb.com. Может быть дело в каких-то специфических заголовках. Я пробовал по-разному и с заголовками и без. Через веб интерфейс с ящика письма доходят куда угодно, а из скрипта никак. Вот скрипт: Код (Text): $mbox = imap_open ("{mail.mydomain.com:143/imap/notls}", "username", "passwordl") or die('connection failed '.imap_last_error()); $to='my_email@bk.ru'; $subject = "Test"; $message = "This is the text."; $headers='Content-type: text/html\n'.'charset=windows-1251\n'; $message = "This is the text."; imap_mail ($to, $subject, $message, $headers) or die('send failed '.imap_last_error()); imap_close($mbox); Подскажите в чем дело. Я уже начал отчаиваться!
Dmitry открой для себя Error-reporting заголовоки (header) будешь получать уведомления об ошибках доставки.
А что это и как это сделать? Или это error_reporting(E_ALL)? Если да, то это не помогло. Ни на один из моих ящиков на mail.ru и на rambler.ru письма не доходят.
эти сервера принимают почту только с ИЗВЕСТНЫХ почтовых релеев. если бы ты правилно формировал заголовки писем, то получал бы отлупы от них с очень вразумительным текстом. повторю свой совет. почитай про заголовки писем ... намек: content-type не единственнй заголовок, который обрабатывает почтовый релей. в том числе там есть заголовок, который указывает на какой ящик отправлять отлупы. намек2: если ты пишешь From: mymail@server.ru, то это совсем не означает, что письмо уходит именно от этого адресата. 8) письмо уходит от MAIL FROM: адрес, выдаваемого почтовому релею в диалоге ... в чстном случае это From: , но из веб-скрипта это в 95% www@localhost, именно на него и приходят отлупы ... к примеру письма с этого форума уходят как: from=<www@gw.expi-web.spb.ru>, Код (Text): May 3 16:35:14 gw sm-mta[60469]: k43CZEvW060469: from=<www@gw.expi-web.spb.ru>, size=1574, class=0, nrcpts=1, msgid=<132288db557dd2d139f5196d24c6e716@forum.php.ru>, proto=ESMTP, daemon=IPv4, relay=localhost.expi-web.spb.ru [127.0.0.1] хотя ты видишь в почтовом клиенте От: forum@php.ru не найдешь - дам ссылку, но хочется что б и ты приложил сюда руку. --- поправка: Errors-To: mymail@server.ru читать тут: http://hell.org.ua/Docs/oreilly/other2/ ... 77086.html
Вот так выглядят теперь хедеры. Код (Text): $headers.="From: $from\r\n"; $headers.="Cc: bauglir666@mail.ru, brain_dead@mail.ru, diman_s@rambler.ru\r\n"; $headers.="Return-path: <$from>\r\n"; $headers.="Content-Type: text/plain; charset=windows-1251;\r\n"; $headers.="Errors-To: admin@leanaschool.com\r\n"; $headers.="MIME-Version: 1.0\r\n"; $headers.="Content-Transfer-Encoding: 8bit\r\n"; Сообщений об ошибках не приходит. Кстати, оказывается на рамблер мне письма доходят. Это значит, что на mail.ru какая-то фигня. В чем может быть дело?
Попробовал поискать про релеи. Ничего толкового не нашел. Понял только, что это что-то типа фильтра для почты? Объясни пожалуйста, что мне нужно сделать. Или кинь ссылку.
Dmitry релей (relay) - это то, через кого ты отправляешь письмо. пока письмо идет до адресата оно может пройти несколько релев (узлов). mail.ru настроена так, что принимает почту только от проверенных узлов. http://www.yandex.ru/yandsearch?rpt=rad ... B%E9+relay
А где это указывать через какие релеи посылать? Почему тогда если я посылаю почту через веб-интерфейс, она доходит, а когда с этого же ящика через скрипт, не доходит?
Dmitry самая рспространенная ошибка думать что ящик и отправка почты одно и то же ... ты же не думаешь, что mail.ru лежит на одном сервере? вот и получать почту ты можешь с одного серера, а отправлять через совем другие. в общем прежде чем искать ошибки нужно как минимум понимать что ты делаешь, а судя по твоим вопросам ты этого не понимаешь. попробуй отправить письмо из обычной терминальной консоли. тогда много станет ясно как и что отпрвляет.
Тоесть я так понял, что мне в скрипте нужно коннектится не к серверу mail.mydomain.com, а к какому-то известному релею, который не внесен в черный список?
Наверное неожиданный вопрос А как это сделать? Поиск по яндесу ничего не дал. Я ведь не знаком с терминологией, поэтому искать тяжело. Даже теории не удалось найти.
Ну вот они уходят вот так. Снизу вверх. Это было в заголовках письма, которое мне пришло на рамблер. Received: from [81.19.66.26] (HELO mx7.rambler.ru) by mail11.rambler.ru (CommuniGate Pro SMTP 4.2.10) with ESMTP id 45702487 for diman_s@rambler.ru; Wed, 03 May 2006 17:35:14 +0400 Received-SPF: none (mx7.rambler.ru: 66.152.98.105 is neither permitted nor denied by domain of clust10-www05.powweb.com) client-ip=66.152.98.105; envelope-from=leanaschoolc@clust10-www05.powweb.com; helo=clust10-www05.powweb.com; Received: from clust10-www05.powweb.com (clust10-www05.powweb.com [66.152.98.105]) by mx7.rambler.ru (Postfix) with ESMTP id A6C71238DAD for <diman_s@rambler.ru>; Wed, 3 May 2006 17:35:03 +0400 (MSD) (envelope-from leanaschoolc@clust10-www05.powweb.com) Received: by clust10-www05.powweb.com (Postfix, from userid 164383) id 1DF1A189DA1; Wed, 3 May 2006 06:06:57 -0700 (PDT) То есть этот clust10-www05.powweb.com это и есть релей, который надо сделать известным?
Вот они: Return-Path: <leanaschoolc@clust10-www05.powweb.com> Received: from [81.19.66.26] (HELO mx7.rambler.ru) by mail11.rambler.ru (CommuniGate Pro SMTP 4.2.10) with ESMTP id 45702487 for diman_s@rambler.ru; Wed, 03 May 2006 17:35:14 +0400 Received-SPF: none (mx7.rambler.ru: 66.152.98.105 is neither permitted nor denied by domain of clust10-www05.powweb.com) client-ip=66.152.98.105; envelope-from=leanaschoolc@clust10-www05.powweb.com; helo=clust10-www05.powweb.com; Received: from clust10-www05.powweb.com (clust10-www05.powweb.com [66.152.98.105]) by mx7.rambler.ru (Postfix) with ESMTP id A6C71238DAD for <diman_s@rambler.ru>; Wed, 3 May 2006 17:35:03 +0400 (MSD) (envelope-from leanaschoolc@clust10-www05.powweb.com) Received: by clust10-www05.powweb.com (Postfix, from userid 164383) id 1DF1A189DA1; Wed, 3 May 2006 06:06:57 -0700 (PDT) To: find_job@bk.ru Subject: Test From: admin@leanaschool.com Cc: bauglir666@mail.ru, brain_dead@mail.ru, diman_s@rambler.ru Content-Type: text/plain; charset=windows-1251 Errors-To: admin@leanaschool.com Message-Id: <20060503130657.1DF1A189DA1@clust10-www05.powweb.com> Date: Wed, 3 May 2006 06:06:57 -0700 (PDT) This is the text.
Ну так что? Я тут кстати письмо в службу поддержки mail.ru написал. Говорят ситуация исправлена, проверьте. Проверяю, хрен там! Да что же делать в конце концов!!!
Dmitry ну что можно сказать ... отправляй не imap_ а обычным классом. в общем надо тесты гонять ... если не в лом чиркни в приват логин/пароль и что надо послать в письме. я тесты прогоню.
В смысле обычным классом? Я пытался и просто через mail() отправлять та же фигня. Через mail даже наверное лучше будет. Черт с ним с imap'ом. А логин/пароль в смысле от ящика, или от ftp на котором скрипты лежат?