|
Модераторы: korob2001, ginnie |
|
dmipro |
|
|||
Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 5.1.2011 Репутация: нет Всего: нет |
Здравствуйте,
у меня вырисовалась такая проблема. Я отправляю скриптом почту по мылам добровольных подписчиков сайта взятым из базы данных. Подписчиков уже около 400. Заблаговременно спрашивал у хостера, есть ли ограничения на отправку писем и, то ли они неправильно сказали, то ли я не понял, но когда пришло время сделать рассылку мне контрольного письма (приходящего последним) не пришло Заподозрив неладное, еще раз спрашиваю у хостера и они отвечают: "На тарифе "Сто Один" существует ограничение на отправку писем (100 писем в час). Для того, чтобы избежать ограничения, можете использовать скрипт с поддержкой smtp-авторизации." Ну и кто они после этого? Ладно, вот и хочу спросить, поскольку я не очень большой специалист, мне нужна помощь в коде SMTP-авторизации. Я отправляю письма сендмелом, и мне на форуме уже помогали справиться с кодировкой, еще раз огромное спасибо за это. Искал в нете и мне попадались только на php платные скрипты, я в пхп ваще как свинья в апельсинах. Вот мой код, помогите, пожалуйста, кто знает, с SMTP-авторизацией, чтобы скрипт обошел ограничение в 100 писем и отправил письма всем подписавшимся на сайте, база постоянно пополняется новыми подписчиками: в цикле, $e_mai содержит очередное мыло из базы, $mainbody - текст письма
Спасибо, еще раз. |
|||
|
||||
ming |
|
|||
Шустрый Профиль Группа: Участник Сообщений: 97 Регистрация: 30.1.2009 Где: Новосибирск Репутация: нет Всего: 3 |
||||
|
||||
dmipro |
|
|||
Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 5.1.2011 Репутация: нет Всего: нет |
спасибо, но там все в общем случае описано, мне бы готовый простой действующий пример с пояснениями.
|
|||
|
||||
shamber |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 1422 Регистрация: 5.9.2006 Где: Россия Репутация: нет Всего: 18 |
dmipro, А так?
|
|||
|
||||
dmipro |
|
|||
Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 5.1.2011 Репутация: нет Всего: нет |
Спасибо за ссылку. так умею.
Только нет результата. В гугле, перед тем как писать сюда на форум, нашел пример: use Net::SMTP; $smtp = Net::SMTP->new('mail.hoster.ru'); # smtp сервер моего хоста, там где сайт $smtp->mail('[email protected]'); # тут писал мыло, от лица которого слалась почта $smtp->to('[email protected]'); # тут свое мыло, куда должна прийти почта $smtp->data(); $smtp->datasend("To: [email protected]"); # тут опять свое мыло, не понимаю зачем 2 раза $smtp->datasend("n"); # типо тело письма $smtp->datasend("Hello ADMIN!!!!!! n"); # типо тело письма $smtp->dataend(); # типо тело письма $smtp->quit; И вот что получилось: 1. Во-первых не работает, т.е. почту не получил. 2. Где тут и как указать правильно кодировку Win-1251? 3. Где и как указать тему сообщения. 3. Читал, но не уверен что понял правильно, если слать с использованием SMTP, то первое неправильное имя адреса все остановит? Т.е. программа прекратит работу? Как тогда обработать неверный адрес, чтобы почта продолжала отправляться. Поэтому прошу помощи. |
|||
|
||||
ming |
|
||||
Шустрый Профиль Группа: Участник Сообщений: 97 Регистрация: 30.1.2009 Где: Новосибирск Репутация: нет Всего: 3 |
Net::SMTP->new(....); добавьте туда (в new) Debug => 1, и смотрите в чём ошибка, что отвечает сервер. А кодировка письма и тема указываются при помощи заголовков Content-Type и Subject соответственно. например,
Напоминаю, что тело письма идёт после списка заголовков, и должно быть отделено от них как минимум одной строкой "\n". Это сообщение отредактировал(а) ming - 7.2.2011, 18:01 |
||||
|
|||||
dmipro |
|
|||
Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 5.1.2011 Репутация: нет Всего: нет |
что-то не получается. Debug ничего не показал, скрипт отработал, но почта не пришла. Смотрел и в Спаме и т.п. Вот такой скрипт сейчас у меня:
Может у хостера модуль этот отключен? чегоб он тогда меня отправлял на SMTP... Может smtp сервер не такой, но я так указываю в бате при настройке ящика: mail.hoster.ru. Я уже подумываю модернизировать мой первый скрипт и указать слать почту порциями, по n штук через m минут.... |
|||
|
||||
ming |
|
|||
Шустрый Профиль Группа: Участник Сообщений: 97 Регистрация: 30.1.2009 Где: Новосибирск Репутация: нет Всего: 3 |
да, кстати, я не вижу в вашем коде этапа авторизации на smtp-сервере.
что-то вроде:
|
|||
|
||||
dmipro |
|
|||
Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 5.1.2011 Репутация: нет Всего: нет |
Лед тронулся. Письмо отправилось. ОГРОМНОЕ СПАСИБО ming. Появились дополнительные вопросы.
1. Письмо попало в папку Спам, я посылал на свой ящик на gmail, и письмо пришло помеченное "Неизвестный отправитель". Может поэтому и в спам попало. Соответственно вопрос, какой директивой указывать обратный адрес? 2. Что будет, если какой-то адрес неправильный в списке рассылки, отправка не прекратиться? Я сейчас попробую отправить один несуществующий адрес и следом существующий, отпишу что получилось. 3. Почему хостер говорит что почта отправляемая через smtp-авторизацию не имеет ограничений на количество писем, а сендмейло - имеет? простите, прошу ликбез (на пальцах объяснить). Я просто хочу быть уверенным, что моя рассылка отработает и все 400 писем, которые сейчас в базе будут отправлены, а если среди них есть проблемные адреса, чтобы они не остановили рассылку, а пришло бы сообщение о проблеме. Может ли это сообщение прийти ко мне на ящик от лица которого я шлю почту скриптом (см. пункт 1)? В общем много вопросов, прошу за это прощение. Вот код, который сейчас.
....... Отправил 2 письма в цикле, одно с несуществующим адресом и одно с правильным. Вначале неправильное письмо. То что произошло, меня радует, не дошедшее письмо вернулось мне в ящик, от лица которого я слал почту в скрипте, а второе письмо успешно дошло до назначения. Осталось только ответить на вопросы 1 (где указать обратный адрес, чтобы у получателя он отобразился) и вопрос отправки всех 400 писем без ограничений за 1 раз. Надо будет попробовать, тогда буду знать. Это сообщение отредактировал(а) dmipro - 8.2.2011, 18:07 |
|||
|
||||
dmipro |
|
|||
Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 5.1.2011 Репутация: нет Всего: нет |
подскажите, какая директива отвечает за обратный адрес, пожалуйста.
|
|||
|
||||
shamber |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 1422 Регистрация: 5.9.2006 Где: Россия Репутация: нет Всего: 18 |
Письмо у вас в спам попадает, по другой причине. Я проверил ваш скрипт на своей gmail почте, все нормально доходит.
Это сообщение отредактировал(а) shamber - 10.2.2011, 12:39 |
|||
|
||||
shamber |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 1422 Регистрация: 5.9.2006 Где: Россия Репутация: нет Всего: 18 |
dmipro,
посмотрите пример SMTP сессии, поймете зачем адрес два раза указываете
Это сообщение отредактировал(а) shamber - 10.2.2011, 12:43 |
|||
|
||||
dmipro |
|
|||
Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 5.1.2011 Репутация: нет Всего: нет |
Все понятно, shamber, большое спасибо за пояснения!, но мне на джимейл приходит письмо помеченное как "Неизвестный отправитель" там где должно быть указан адрес отправителя. Почему?
Не могли бы Вы выложить полностью законченный свой код примера, который у вас получился правильно с джимейлом, там где есть обратный адрес при получении письма. Или это только с моего хостинга не показывается обратный адрес? |
|||
|
||||
vivu |
|
|||
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 3.11.2009 Репутация: нет Всего: нет |
Тоже решил поделится своим рабочим кодом. |
|||
|
||||
dmipro |
|
|||
Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 5.1.2011 Репутация: нет Всего: нет |
Прикольно. поскольку у моего хостера модуль TLS не установлен, доработал свой пример, код vivu помог с обратным адресом. Вот мой рабочий код:
Но проблема спама осталась. Письмо залетело в ящик спама на ждимейл, хотя уже с обратным адресом. Я задал для этого отправителя что это "НЕ СПАМ" на джимейле и теперь почта от скрипта попадает во Входящие. Фигово, т.к. я пользуюсь the bat и ящик спама на джимейле он никак не видит. Послал почту на несколько ящиков хостера, везде дошло, и на ящик одного моего домена, туда не дошло, надо зайти в спам этого ящика, посмотреть.. Кто может знает как решить проблему со спамом. Предполагаю, что решение возможно... ------------------------------------------------------------------------------------------------------------ Задал вопрос хостеру, почему попадают письма в спам и вот их ответ: Здравствуйте. Нет, способа обхода спам-фильтра Gmail не существует. > Неужели нет директивы в Net::SMTP или еще как-то, чтобы указать в > письме, что это надежный хостинг отправляет почту? > > Возможно ли как-то прописаться в белом листе джимейла и других > почтовых служб? К сожалению, такой директивы не существует и не может существовать, поскольку все спамеры бы ею пользовались. Сомнительно также, что бы компания Google стала раскрывать детали, по которым она помечает письма как спам. Как минимум мне такие подробности неизвестны. > Спасибо. > А почему сендмелом не попадает? > А почему с почтового клиента не попадает? На данные вопросы смогут ответить только специалисты Google. Это сообщение отредактировал(а) dmipro - 20.2.2011, 09:02 |
|||
|
||||
Правила форума "Perl: CGI программирование" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Perl: разработка для Web | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |