Форум: "Начинающим";
Текущий архив: 2006.10.01;
Скачать: [xml.tar.bz2];
ВнизОтправить E-Mail Найти похожие ветки
← →
Juri (2006-09-08 21:06) [0]Подскажите как можно программно самым простым способом отправить письмо на какой либо почтовый ящик?
← →
YurikGL © (2006-09-08 21:33) [1]Вкладка indiServers
TIdSMTP = class(TIdMessageClient)
Unit
IdSMTP
Description
TIdSMTP is a TIdMessageClient descendant that implements a Simple Mail Transfer Protocol or SMTP client, as described in the Internet Standards documents:
RFC 821 - Simple Mail Transfer Protocol [SMTP] (http://www.rfc-editor.org/rfc/rfc821.txt)
RFC 1869 - SMTP Service Extensions (http://www.rfc-editor.org/rfc/rfc1869.txt)
RFC 2554 - SMTP Service Extension for Authentication (http://www.rfc-editor.org/rfc/rfc2554.txt)
← →
AlexWlad © (2006-09-08 22:16) [2]MAPISendMail + F1
← →
UMU © (2006-09-08 22:27) [3]
procedure SendMail;
var
EMailDestinationString, SubjectString, Line1String,
Line2String, mailstring: string;
Begin
EMailDestinationString := "mail.ru";
SubjectString := "";
Line1String := "Текст ";
Line2String := "Текст";
mailstring := "mailto:" + EMailDestinationString +
"?subject=" + SubjectString +
"&body=" + Line1String +
"%0d" + Line2String;
if (ShellExecute(0, "open", PChar(mailstring), "", "",
SW_SHOWNORMAL) <= 32) then
ShowMessage("Ошибка");
End;
← →
Juri (2006-09-09 01:54) [4]А можно ли как то проверить существование E-Mail адреса?
← →
Juri (2006-09-09 01:55) [5]я имею в виду проверит существование адреса на который мы хотим отправить что то
← →
palva © (2006-09-09 02:10) [6]А зачем вам это? Если адрес существует, то еще не факт, что письмо дойдет. Посмотрит сервер на обратный адрес вашего письма, подумает и вернет вам письмо обратно с припиской, что такого адреса не существует.
← →
Juri (2006-09-09 13:59) [7]ок с этим понятно... нет адреса и фиг с ним... сталкнулся с другой проблемой... мне надо отослать поздравление с Новым годом 20 адресатам. начинаю отпралять, запускаю таймер, каждые 10 сек он выбирает из поля мемо один адрес из тех что я туда написал выборка происходит правельно так как отсылается 14 писем, потом же выдаётся ошибка о том, что сообщения от меня не будут приниматся 1 минуту так как лимит исчерпан... и что я палучаю далее что програмка мая зависает и прекращает совершенно дальше отсылать сообщение по остальным адресам даже через минуту... как с этим боротся?
← →
Dmitrij_K (2006-09-09 14:19) [8]
> как с этим боротся?
подождать минуту, потом сладь дальше
← →
palva © (2006-09-09 14:24) [9]> как с этим боротся?
Если бороться с хозяином SMTP-сервера, который отказывается принимать от вас письма, то посмотреть условия договора о предоставлении услуг, которые между вами заключены и, если он нарушает условия договора, то подавать на него в суд.
Если бороться с программой, которая не хочет продолжать работать через минуту ожидания, то искать в ней ошибку, если она ваша. А если куплена, то прочитать документацию. Если по документации она должна работать, а на самом деле не работает, то требовать деньги назад.
← →
Juri (2006-09-09 14:43) [10]
procedure TForm1.Timer1Timer(Sender: TObject);
var S : String;
begin
//здесь сначало палучаем адресс на который слать и записываем его в переменную S
IdSMTP1.Host := Edit2.Text;
IdSMTP1.Username := Edit6.Text;
IdSMTP1.Password := Edit7.Text;
IdMessage1.Clear;
IdMessage1.ContentType := "Multipart/Alternative";
idtTextPart := TIdText.Create(IdMessage1.MessageParts, nil);
idtTextPart.ContentType := "text/plain";
idtTextPart:= TIdText.Create(IdMessage1.MessageParts, nil);
idtTextPart.ContentType := "text/html";
idtTextPart.Body.Text:=Memo1.Text;
IdMessage1.CharSet := "windows-1251";
IdMessage1.Subject := Edit5.Text;
IdMessage1.From.Address := Edit11.Text;
IdMessage1.From.Name := Edit3.Text;
with IdMessage1.Recipients.Add do begin
Address := S;
end;
IdSMTP1.Connect;
if IdSMTP1.Connected then begin
IdSMTP1.Send(idMessage1);
IdSMTP1.Disconnect;
end;
end;
вот подскажите как сделать чтоб при таком коде программа не зависала а подождав 1 минуту начинала слать снова...
← →
Juri (2006-09-09 14:44) [11]забыл естественно там в VAR idtTextPart: TIdText; ещё есть!
← →
palva © (2006-09-09 16:13) [12]А может она не зависает, а просто очень долго ждет коннекта? Я этот код попробовать не могу, поскольку мой провайдер не пускает меня на чужие SMTP. Когда-то я сталкивался с таким при работе с mail.ru. Но я работал не с компонентой SMTP, а общался с сервером непосредственно через сокет. Протокол этого общения складывал в файл. Отослав несколько писем программа получала сообщение об ошибке с текстом объяснения и падала. Я посмотрел, какой десятичный код такой ошибки и вставил обработку этой ошибки с выходом на ожидание.
← →
Juri (2006-09-09 18:38) [13]а как мне обработать ошибку можешь подсказать? то есть как мне узнать код ошибки, чтоб её обработать?
← →
Juri (2006-09-10 14:30) [14]
> Я посмотрел, какой десятичный код такой ошибки и вставил
> обработку этой ошибки с выходом на ожидание.
как это посмотреть?
← →
YurikGL © (2006-09-10 15:30) [15]
> а как мне обработать ошибку можешь подсказать? то есть как
> мне узнать код ошибки, чтоб её обработать?
try
...
except
...
end;
← →
palva © (2006-09-10 22:49) [16]
> Juri (10.09.06 14:30) [14]
>
> > Я посмотрел, какой десятичный код такой ошибки и вставил
>
> > обработку этой ошибки с выходом на ожидание.
>
> как это посмотреть?
Общение из сокета с сервером SMTP это обмен строками, например так:
MAIL FROM: <palva@ffffff.ru>
250 ok
RCPT TO: <stepan@ggggg.msu.su>
250 ok
DATA
354 go ahead
Здесь построчно посылаю письмо, сначала заголовки,
потом пустая строка и сам текст.
В конце посылаю точку в отдельной строке.
.
250 ok 1156965557 qp 79574
Строки, начинающиеся с числа это ответы сервера. Число это код ответа, которая программа может легко анализировать. Пояснительный текст каждый сервер может давать с разными вариациями, а коды стандартизованы протоколом SMTP. Вот я и посмотрю один раз, чему равен код, когда превышен лимит, и забиваю этот код в программу, чтобы программа правильно поняла ситуацию и вышла на ожидание.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.10.01;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.012 c