Отправка скриптом письма через внешний Smtp

  • Автор темы ˸
  • Дата начала
˸
#1
Народ, помогите! :)
Такая беда - у моего хостера не работает sendmail и, как меня уже обрадовали, не будет...

В инете находил кучу скриптов отсылки писем через SMTP, но такое чувство что люди забыли что такое аутентификация на SMTP!

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

Если кто знает, помогите со скриптом...
 

Вложения

˸
#3
Но, мои познания в перле не идеальны... мож кто поможет прикрутить авторизацию к модулю что я выложил?? буду оч благодарен!
 
S

_serg_

#4
вчера еще хотел написать, но че-т не стал. сегодня так и быть скажу:
обычно сендмейл не работает на тех айпишниках, которые находятся в черных списках
пробей для начала айпишник своего сайта на наличие в спамбазах
если он там есть, то на почту можеш не заморачиваться :rolleyes:
 
˸
#5
нет, дело в том что сендмэйл именно отключен на серваке... Связывался со службой поддержки... там меня обрадовали что в ближайшее время ничё не предвидится... Вот я и ищу альтернативы, - даже элементарное восстановление пароля в чате не работает, а надо...

так что нет чтоли кул-программеров которые могут помочь?
 
G

garrymax

#6
Первый вариант долго писать - в сети есть куча готовых примеров, которые соединяются по 25 порту и шлют все стандартные команды для конекта с почтовиком.

Второй вариант - найти открытый релей сервер (списки в инете публикуют) и прописать его в коде ini_set("SMTP",$SMTP_NAME_SERVER);
 
˸
#7
увы нет... мне нужно постоянно и надежно, через своё платное мыло...

Так значит никто не поможет? :huh:
 
G

garrymax

#8
увы нет... мне нужно постоянно и надежно, через своё платное мыло...
Это не совсем правильное понимание smtp протокола: Свое платное мыло - это место на сервере, где хранятся письма их можно забрать по 110 порту (протокол POP3). Пересылка письма, в простейшем случаи , создается соединение по 25 порту и отравитель шлет smtp-агенту текст HELO. Если контакт есть, то в ответ прийдет текст OK и так далее - можно даже ручками по команде telnet name@server.ru 25 отправлять письма.
Если такой сервер есть на платном ящике, то можно использовать его в качестве транспортера, указав PHP адрес этого сервера. Пример тут
 
˸
#9
2 garrymax:

И опять вы меня не так поняли.... дело в том что на моём хостинге из неизвесных соображений отрубили sendmail и мне нужна помощь в таком вопросе - как отправить мне письмо со скрипта через внешний SMTP с АВТОРИЗАЦИЕЙ! Я прекрасно понимаю что надо скриптом подключиться к mail.server.ru по 25 порту, но ведь в тех примерах что вы мне показали так и нет и намека на авторизацию! а где же отсылка логина, пароля??? Вот что я прошу... т.к. я не в совершенстве знаю перл, я выложил модуль отправки через SMTP моего чата, но там тоже без авторизации..., мне нужна помощь по доработки его для авторизации на SMTP сервере.
:)
 
G

garrymax

#10
И опять вы меня не так поняли....
Это я по жаре не правильно описал и вообще, привел пример на ПХП - мои сорри:

В примере, хоть и на ПХП, работа с сокетом - это не требует авторизации и обращения к smtp-агенту, а напрямую связывается с сервером получателя письма. Если аргумент "черного списка", о котором упоминал Лёхич, не используется фильтром хоста приемника (кому отсылаем), то указанного скрипта достаточно - он работает напрямую с сокетами и sendmail ему не нужен (этот скрипт сам себе sendmail).

По поводу Перловского скрипта - принцип аналогичен, а пример работы с сокетами есть в одной из тем этого форума, только поменять порт на 25 и отсылаемый текст взять из примера, который я ранее указал. Правда прийдется добавлять строки "рукопожатия" в синтаксе SMTP-агентов - если интересно, то поищи в сети статьи по чтению почты при помощи telnet, там и про то, как логины и пароли указывать, а тут описывать долго.

Еще есть вариант использовать модуль Mail::Mailer. Если и его не установил хостер, то копируем его в cgi-директорию - от куда запускаем скрипт (у меня так прокатывало с другими модулями). Этот пример почти не мой :)
Код:
use Mail::Mailer;

########## заполняем ###############
$from_address ="сюда свое мыло";
$to_address ="сюда мыло получателя";
$title ="сюда тему письма";
$body ="сюда текст сообщение";
################################

$mailer = Mail::Mailer->new(); # если написать new("sendmail"), то слать будет sendmail, иначе сам модуль
$mailer = open({ From => $from_address, To => $to_address, Subject => $title }) or die "Не могу открыть: $!";
print $mailer $body;
mailer->close();
Этому скрипту не нужен sendmail, но если у хостера перекрыт 25 порт, то и он не поможет.

На счет отсылки непосредственно со своего сервера, где почтовый ящик: не рентабельно - те же действия, но с участием еще одного хоста. Но если приспичит, то есть станартный модуль Net::SMTP, в котором можно задать логин и пароль (у меня нет Mail::Mailer, но думаю там тоже есть такая возможность). Пример описан в помощи (для UNIX команда man Net::SMTP, или поищи пример в сети, например на страницах MANов на opennet). Кстати, он аналогичен модулю Mail::Mailer по работе с сокетами и также отсылает письма.