Автор
|
Тема: Помогите с smtp !!!
|
alpeugene |
опубликован 25-12-2001 21:47 MSK
Кто знает-помогите! Я пишу прогу на С++,которая должна работать под Win98 и задача которой - рассылать e-mail сообщения клиентам из БД по заданному алгоритму. У меня 2 проблемы: 1)как определить SMTP сервер,имея только адрес (имеем - например alpeugene@yandex.ru,надо чтоб прога выдавала что-то типа smtp.yandex.ru) 2)проблемы с yahoo - почтой(smtp.mail.yahoo.com) Не хочет он брать почту как все.Я уже и коннектился с pop.mail.yahoo.com,и перед MAIL FROM:<----> посылал AUTH LOGIN c шифрованными логином и паролем,ничо не помогает,а задание срывается.... Помогите!!! Заранее благодарен. eugene(alpeugene@hotmail.com)
|
purpe
|
опубликован 25-12-2001 22:05 MSK
а ты уверен, что smtp.mail.yahoo.com вообще разрешает отправлять через себя мыло ?
|
Flex Ferrum
|
опубликован 25-12-2001 22:13 MSK
По поводу первой проблемы - в DNS есть такой тип записи - MX (Mail eXchange). Сделав соответсвующий запрос к DNS серверу ты получишь IP адрес хоста, обслуживающего почтовый домен. На счет второго - посмотри, правильно ли ты реализуешь протокол. Полностью он описан в rfc821. |
alpeugene
|
опубликован 26-12-2001 20:07 MSK
1)Насчет DNS и MX записей я в курсе,но можно ли это реализовать на Win98 и если можно,то как ? 2)То,что сервер smtp.mail.yahoo.com позволяет как-то посылать через себя мыло я уверен,так как совсем недавно скачал программу MailSender(freeware,но исходников не дали),написанную на Делфи,которая на данный сервер мыло шлет и успешно.Видимо можно как-то это организовать и на С++,но как,может кто знает,помогите!!! |
Flex Ferrum
|
опубликован 27-12-2001 10:28 MSK
1) Судя по информации в MSDN gethostbyname резолвит MX записи. На я сам лично не проверял. 2) Можешь приветси польностью дамп сессии? Легче будет разобраться. |
purpe
|
опубликован 27-12-2001 11:23 MSK
2alpeugene:а ты уверен, что твой MailSender использует в качестве сервера исходящей почты именно smtp.mail.yahoo.com ? Представляю, какая была бы возможность для спамеров, если Yahoo позволял так свободно через себя рассылать почту ...
|
alpeugene
|
опубликован 27-12-2001 20:44 MSK
1)вопрос остается открытым.... 2)вопрос снимается,способ я нашел,правда не без помощи www.codeguru.com(кстати сервер действительно smtp.mail.yahoo.com ,если не верите ,можете проверить telnet-ом) .Кому интересно-пишите (alpeugene@hotmail.com).Непременно отвечу |
alpeugene
|
опубликован 30-12-2001 20:17 MSK
....Так что,неужели никто не знает,как реализовать DNS Rsolver MX записей на С++ ,работающий под Win98.На делфи я нашел аж 3(!!!)таких работающих проги (правда без исходников)... Кто знает помогите !!!! |
lamo
|
опубликован 31-12-2001 00:50 MSK
host -t MX yahoo.com or nslookup set type=MX yahoo.com .dns запрос стандартен. проще и надежнее юзать sendmail (чтото типа open(F, "|sendmail")). ну или если так охота все mx домена перебирать и т.д. - дерзай.
|
alpeugene
|
опубликован 31-12-2001 16:04 MSK
Большое спасибо за ответ !!! Насчет nslookup - так это не для Win98 Насчет sendmail и т д - это что-то новое для меня .А можно поподробнее,что за он,как его едят,где найти и может примерчик какой и можно ли его применять в Win98!!! Заранее благодарен !!!
|
lamo
|
опубликован 02-01-2001 11:33 MSK
$ host -t MX yahoo.com yahoo.com mail is handled (pri=1) by mx1.mail.yahoo.com yahoo.com mail is handled (pri=1) by mx2.mail.yahoo.com yahoo.com mail is handled (pri=5) by mx4.mail.yahoo.comили $ nslookup > set type=MX > yahoo.com yahoo.com preference = 5, mail exchanger = mx4.mail.yahoo.com yahoo.com preference = 1, mail exchanger = mx1.mail.yahoo.com yahoo.com preference = 1, mail exchanger = mx2.mail.yahoo.com это ты вычислил мыл ексченжеры. потом пытаешся в зависимости от приоритета слать на эти ексченжеры мыл юзеру (user@yahoo.com). не получается на первый - тогда пробуеш на след. и т.д.
еслиб юзал уже готовое (sendmail например (http://www.sendmail.org/)) то это все вываливается только в запуск его как процесса. то что ты отдевелопиш свое для вычисления и копания эимксов и потом на низах сам в смтп долбиться будеш - времени нисколько не выиграеш. мыл система не очень быстра чтоб на этом выиграть время. а если уже по проторенной дорожке, то например в пелах это будет выглядеть как (пример куска спам-рассылки): $mail_program = "/usr/sbin/sendmail -t"; $c_from_user = "crazy\@microsoft.com"; $c_subject = "ugu"; # while(...) # { open (MAIL, "|$mail_program")
|
lamo
|
опубликован 02-01-2001 11:34 MSK
твою мать. повтор: $mail_program = "/usr/sbin/sendmail -t"; $c_from_user = "crazy\@microsoft.com"; $c_subject = "ugu"; # while(...) # { open (MAIL, "|$mail_program") \|\| die "oops."; #\|\| замениш на "или" сишное ... print MAIL <<__END_OF_MAIL__; To: $c_user_mail From: $c_from_user Subject: $c_subject kuku ? __END_OF_MAIL__ close (MAIL); # }
|
lamo
|
опубликован 02-01-2001 11:46 MSK
а про в98 ... я вообщето все тут про унихи говорил.если уж совсем приспичило под вин, то тогда есть неплохой мылсерв с клаент парт xmail (http://www.xmailserver.org/). он и на вин встает. вот помоему только на НТ. можеж серв сам не стартовать, а юзать только рассыльник. перлу под вин найдеш на http://www.activestate.com/ . ну или из сей вызывай. разницы нет особой. только в количестве строк. зы. лучшеб *них какойнибудь ставил для таких задач. с мс мороки много и при конфиге и в будущем.
|
Demo_S
|
опубликован 02-01-2001 16:20 MSK
про яху... насколько я знаю, перед тем, как отправить через нее смтп, нужно авторизоваться по pop. я в проге так не делал, а в бате есть такая опция, авторизоваться поп перед смпт, и только так можно почту отправлять, если конечно сначала отправлять, а не получать. иначе, просто вначале получаешь почту, а потом отправля через сптм что душе угодно.. |
alpeugene
|
опубликован 06-01-2001 17:37 MSK
Спасибо за ответы!!! Я уж думал,что проблема с DNS Resolver-ом в Win98 не решаема .... Однако,по совету Lamo(персональное дзякуй)скачал исходники Xmailer - a для Win2K ,кое-что подправил и заработало,правда с глюками(контрол на Делфи работает лучше)- на некоторых доменах полностью зависает,кое -что не находит,но в общем и целом думаю,добью... Хотя подсказали мне тут еще один способ: В Win2K есть целое DNS API,включая почти универсальную функцию DNSQuery. Microsoft распространяет Update,позволяющее использовать данное API в том числе и для Win98,правда скачать надо все обновление(всего 300 MB)А мне надо только 6 файлов: iphlpapi.h,windns.h,iphlpapi.dll,windns.dll и 2 lib : Dnsapi.lib и Iphlpapi.lib Может кто сбросит по мылу на alpeugene@hotmail.com ?!!! Дело в том что программу ,реализующую данное API я уже скачал и мне не хватает только 6 этих файлов. Еще раз Всем спасибо и с праздниками !!!
|
Zoro
|
опубликован 11-01-2001 22:20 MSK
Вы че ребята, этому парню голову марочете:(( Ползуйся WinSocket(CSocket),functions " 1:Create(),2:Connect(strServerName),3: Send(strText,intstrTextLenght)" Пример кода:CSocket m_wsSMTPServer; m_wsSMTPServer.Create(); if(!m_wsSMTPServer.Connect(strServName,25)) { AfxMessageBox( _T( "Not Connected")); return; } Вместо strServerName напиши умя майл сервера,того сервера, через который ты подключон к интернет,(ISP: "yandex.ru" , EmailServ:"mail.yandex.ru" ) а потом через function Send(str,int) пошли "MAIL From:" + "strFrom" + "RCPT TO:" + strTO+ "DATA :" Потом: CTime time=time.GetCurrentTime(); CString sDate; sDate = time.Format( "%a, %d %b %y %H:%M:%S %Z" ); CString sHeader; sHeader.Format( "Date: %s\r\n"\ "From: %s\r\n"\ "To: %s\r\n"\ "Subject: %s\r\n"\ "Content-Type: %s \r\n", (LPCTSTR)sDate, (LPCTSTR)strFrom, (LPCTSTR)strTo, (LPCTSTR)strSub, "text/html;"); m_wsSMTPServer.Send( (LPCTSTR)sHeader, sHeader.GetLength() ); Потом уже пошли текст сообщение, или HTML code, еслу хочещ послать (html Email(Page)). Ну Все ПОКА |
lamo
|
опубликован 12-01-2001 00:54 MSK
"text/html"зы. )))
|