Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Отправить E-Mail [D7, XP]


Juri ©   (2006-09-08 21:06:00) 

Подскажите как можно программно самым простым способом отправить письмо на какой либо почтовый ящик?


palva   (2006-09-10 22:49:00) [1]


> 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. Вот я и посмотрю один раз, чему равен код, когда превышен лимит, и забиваю этот код в программу, чтобы программа правильно поняла ситуацию и вышла на ожидание.


YurikGL   (2006-09-10 15:30:00) [2]


> а как мне обработать ошибку можешь подсказать? то есть как
> мне узнать код ошибки, чтоб её обработать?

try
...
except
...
end;


Juri   (2006-09-10 14:30:00) [3]


> Я посмотрел, какой десятичный код такой ошибки и вставил
> обработку этой ошибки с выходом на ожидание.

как это посмотреть?


Juri   (2006-09-09 18:38:00) [4]

а как мне обработать ошибку можешь подсказать? то есть как мне узнать код ошибки, чтоб её обработать?


palva   (2006-09-09 16:13:00) [5]

А может она не зависает, а просто очень долго ждет коннекта? Я этот код попробовать не могу, поскольку мой провайдер не пускает меня на чужие SMTP. Когда-то я сталкивался с таким при работе с mail.ru. Но я работал не с компонентой SMTP, а общался с сервером непосредственно через сокет. Протокол этого общения складывал в файл. Отослав несколько писем программа получала сообщение об ошибке с текстом объяснения и падала. Я посмотрел, какой десятичный код такой ошибки и вставил обработку этой ошибки с выходом на ожидание.


Juri   (2006-09-09 14:44:00) [6]

забыл естественно там в VAR idtTextPart: TIdText; ещё есть!


Juri   (2006-09-09 14:43:00) [7]



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 минуту начинала слать снова...


palva   (2006-09-09 14:24:00) [8]

> как с этим боротся?
Если бороться с хозяином SMTP-сервера, который отказывается принимать от вас письма, то посмотреть условия договора о предоставлении услуг, которые между вами заключены и, если он нарушает условия договора, то подавать на него в суд.
Если бороться с программой, которая не хочет продолжать работать через минуту ожидания, то искать в ней ошибку, если она ваша. А если куплена, то прочитать документацию. Если по документации она должна работать, а на самом деле не работает, то требовать деньги назад.


Dmitrij_K   (2006-09-09 14:19:00) [9]


> как с этим боротся?

подождать минуту, потом сладь дальше


Juri   (2006-09-09 13:59:00) [10]

ок с этим понятно... нет адреса и фиг с ним... сталкнулся с другой проблемой... мне надо отослать поздравление с Новым годом 20 адресатам. начинаю отпралять, запускаю таймер, каждые 10 сек он выбирает из поля мемо один адрес из тех что я туда написал выборка происходит правельно так как отсылается 14 писем, потом же выдаётся ошибка о том, что сообщения от меня не будут приниматся 1 минуту так как лимит исчерпан... и что я палучаю далее что програмка мая зависает и прекращает совершенно дальше отсылать сообщение по остальным адресам даже через минуту... как с этим боротся?


palva   (2006-09-09 02:10:00) [11]

А зачем вам это? Если адрес существует, то еще не факт, что письмо дойдет. Посмотрит сервер на обратный адрес вашего письма, подумает и вернет вам письмо обратно с припиской, что такого адреса не существует.


Juri   (2006-09-09 01:55:00) [12]

я имею в виду проверит существование адреса на который мы хотим отправить что то


Juri   (2006-09-09 01:54:00) [13]

А можно ли как то проверить существование E-Mail адреса?


UMU   (2006-09-08 22:27:00) [14]

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)


AlexWlad   (2006-09-08 22:16:00) [15]

MAPISendMail + F1


YurikGL   (2006-09-08 21:33:00) [16]

Вкладка 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)


Наверх

Титульная страница Поиск, карта сайта Написать письмо