Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.013 c
15-1157999740
Евгений Р.
2006-09-11 22:35
2006.10.01
Нарисовать звездочку


2-1157721757
K_Lock
2006-09-08 17:22
2006.10.01
Обмен данными (ADO)


2-1157697536
Grid
2006-09-08 10:38
2006.10.01
Dbgrid


2-1157712853
v_o_v_a
2006-09-08 14:54
2006.10.01
класс TStringList


2-1157796355
max1991
2006-09-09 14:05
2006.10.01
Подскажите пожалуйста, как правильно перевести Char to STR





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский