Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.10.01;
Скачать: CL | DM;

Вниз

Отправить 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;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.041 c
8-1141976188
Unitay
2006-03-10 10:36
2006.10.01
Как узнать время bitrate...


2-1157707741
vodvorezlaya
2006-09-08 13:29
2006.10.01
Вопрос по Database Desktop


15-1157951970
Ega23
2006-09-11 09:19
2006.10.01
С Днём рождения! 9 сентября


4-1148632173
Чапаев
2006-05-26 12:29
2006.10.01
Device HarddiskVolumeN -> X:


1-1155800887
dm37
2006-08-17 11:48
2006.10.01
легенда Chart