Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.118.200.197] |
|
Сообщ.
#1
,
|
|
|
Кто знает-помогите!
Я пишу прогу на С++,которая должна работать под 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) |
Сообщ.
#2
,
|
|
|
а ты уверен, что smtp.mail.yahoo.com вообще разрешает отправлять через себя мыло ?
|
Сообщ.
#3
,
|
|
|
По поводу первой проблемы - в DNS есть такой тип записи - MX (Mail eXchange). Сделав соответсвующий запрос к DNS серверу ты получишь IP адрес хоста, обслуживающего почтовый домен.
На счет второго - посмотри, правильно ли ты реализуешь протокол. Полностью он описан в rfc821. |
Сообщ.
#4
,
|
|
|
1)Насчет DNS и MX записей я в курсе,но можно ли это реализовать на Win98 и если можно,то как ?
2)То,что сервер smtp.mail.yahoo.com позволяет как-то посылать через себя мыло я уверен,так как совсем недавно скачал программу MailSender(freeware,но исходников не дали),написанную на Делфи,которая на данный сервер мыло шлет и успешно.Видимо можно как-то это организовать и на С++,но как,может кто знает,помогите!!! |
Сообщ.
#5
,
|
|
|
1) Судя по информации в MSDN gethostbyname резолвит MX записи. На я сам лично не проверял.
2) Можешь приветси польностью дамп сессии? Легче будет разобраться. |
Сообщ.
#6
,
|
|
|
2alpeugene:
а ты уверен, что твой MailSender использует в качестве сервера исходящей почты именно smtp.mail.yahoo.com ? Представляю, какая была бы возможность для спамеров, если Yahoo позволял так свободно через себя рассылать почту ... |
Сообщ.
#7
,
|
|
|
1)вопрос остается открытым....
2)вопрос снимается,способ я нашел,правда не без помощи www.codeguru.com(кстати сервер действительно smtp.mail.yahoo.com ,если не верите ,можете проверить telnet-ом) .Кому интересно-пишите (alpeugene@hotmail.com).Непременно отвечу |
Сообщ.
#8
,
|
|
|
....Так что,неужели никто не знает,как реализовать DNS Rsolver MX записей на С++ ,работающий под Win98.На делфи я нашел аж 3(!!!)таких работающих проги (правда без исходников)...
Кто знает помогите !!!! |
Сообщ.
#9
,
|
|
|
host -t MX yahoo.com
or nslookup set type=MX yahoo.com . dns запрос стандартен. проще и надежнее юзать sendmail (чтото типа open(F, "|sendmail")). ну или если так охота все mx домена перебирать и т.д. - дерзай. |
Сообщ.
#10
,
|
|
|
Большое спасибо за ответ !!!
Насчет nslookup - так это не для Win98 Насчет sendmail и т д - это что-то новое для меня .А можно поподробнее,что за он,как его едят,где найти и может примерчик какой и можно ли его применять в Win98!!! Заранее благодарен !!! |
Сообщ.
#11
,
|
|
|
$ 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") |
Сообщ.
#12
,
|
|
|
твою мать.
повтор: $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); # } |
Сообщ.
#13
,
|
|
|
а про в98 ...
я вообщето все тут про унихи говорил. если уж совсем приспичило под вин, то тогда есть неплохой мылсерв с клаент парт xmail (http://www.xmailserver.org/). он и на вин встает. вот помоему только на НТ. можеж серв сам не стартовать, а юзать только рассыльник. перлу под вин найдеш на http://www.activestate.com/ . ну или из сей вызывай. разницы нет особой. только в количестве строк. зы. лучшеб *них какойнибудь ставил для таких задач. с мс мороки много и при конфиге и в будущем. |
Сообщ.
#14
,
|
|
|
про яху...
насколько я знаю, перед тем, как отправить через нее смтп, нужно авторизоваться по pop. я в проге так не делал, а в бате есть такая опция, авторизоваться поп перед смпт, и только так можно почту отправлять, если конечно сначала отправлять, а не получать. иначе, просто вначале получаешь почту, а потом отправля через сптм что душе угодно.. |
Сообщ.
#15
,
|
|
|
Спасибо за ответы!!! Я уж думал,что проблема с 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 этих файлов. Еще раз Всем спасибо и с праздниками !!! |
Сообщ.
#16
,
|
|
|
Вы че ребята, этому парню голову марочете:((
Ползуйся 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)). Ну Все ПОКА |
Сообщ.
#17
,
|
|
|
"text/html"
зы. ))) |