- TidSMTP
- TidAntiFreeze
- TButton
procedure TForm1.FormCreate(Sender: TObject);
begin
try
IdSMTP1.AuthenticationType:=atLogin;
IdSMTP1.Host:='smtp.rambler.ru';
IdSMTP1.Port:=25;
IdSMTP1.Username:='username@rambler.ru';
IdSMTP1.Password:='password';
IdSMTP1.Connect;
except
on e:Exception do
end;
end;
Строчка IdSMTP1.AuthenticationType:=atLogin; указывает на то, что мы авторитизируемся на нашем сервере. Это у нас и есть подключение к нашему smtp-серверу, с помощью Connect мы указываем, что подключаемся. Далее нам необходимо отправить сообщение, для этого существует специальный тип данных TidMessage, который определяет полностью формат нашего отправляемого письма. Чтобы использовать данный тип данных, необходимо в Uses подключить модуль idmessage. Для начала его необходимо создать и затем заполнить по определенному шаблону и после чего отослать на нужный нам адресс. Теперь на событие TButton - Onclick напишем заполнение нашего сообщения и отправку его.
procedure TForm1.Button1Click(Sender: TObject);
var
msg:TIdMessage;
begin
try
msg:=TIdMessage.Create(nil);
msg.Body.Add('test mail');
msg.Subject:='header message';
msg.From.Address:='punisher45@rambler.ru';
msg.From.Name:='Andrey';
msg.Recipients.EMailAddresses:='punisher_z53@mail.ru';
msg.IsEncoded:=True;
IdSMTP1.Send(msg);
msg.Free;
IdSMTP1.Disconnect;
except
on e:Exception do
begin
msg.Free;
IdSMTP1.Disconnect;
end;
end;
end;
Теперь можете залезть на эмаил, куда вы отправляли письмо и убедиться, что оно пришло, если конечно ошибок при отправке никаких не было.Как видите Body.Add — задает текст сообщения, Subjects - заголовок сообщения, From.Adress — адресс отправителя, From.Name — имя отправителя, Recipients.EMailAddresses- определяет адрессат получателя (то есть кому отправляем мы email). В конце мы просто отключаемся от нашего smtp-сервера при помощи метода Disconnect.
Отправка писем не сложна, а отправка sms-сообщений через sms-шлюз еще проще, что мы и посмотрим в следующей статье про отправку sms-сообщений. А в дальнейшем посмотрим как можно прилаживать файлы к своему письму.
Хочу заметить, что в настоящее время очень популярно развивается 3g-Интернет. На мой взгляд, он становится популярнее DSL-соединения или спутникового. Для повышения скорости 3g соединения существует Ускоритель 3g модема. Для таких целей существует множество программ, которые позволяют качественно повысить скорость интернет-соединения, главное очень внимательно почитать описание и применения программ. |
Автор статьи - Andrey53
Похожие записи
Метки: idSMTP, sms-шлюзы, отправка почты на Delphi, отправка смс, отправка смс средствами Delphi
Как отправлять почту на gmail?
Как описано здесь. Вам необходимо узнать адрес smtp сервера google.
[…] открытия данного сайта, я писал статьи по отправке email средствами Delphi, а также отправке sms-сообщений , где […]
Сделал как написано, выкидывает окно ошибки:
Debugger Exception Notification
«Проект Project1.exe вызвал исключение класса EIdProtocolReplyError с сообщением ‘Syntactically invalid EHLO argument(s)
‘. Процесс остановлен. Используйте Шаг или Запуск для продолжения.»
В чем может быть проблема и как её решить можно?
А, всё разобрался… Проблемы в том, что в имени почты можно использовать только буквы. А как проблему с символами решить? Т.е. если адрес например такой: ?
а буквы это не символы? а цифры тоже символы
Новая напасть нашлась (извиняюсь заранее за «спам», но иначе никуда не отписаться)… В общем делаю прогу с тестами, 3 формы, 2 из них с тестами и в конце есть кнопка «отправка рез-тата», которая и сделана на отправку по выше представленному алгоритму. Сперва в случае, если отправляю результат второй раз (к примеру сперва отправил рез-ты первого, потом результаты второго теста) ошибку какую-то выдавал Делфи на строчку «msg.Free;», которая до закрытия IdSMTP находится. Какая ошибка уже не помню, возможно которую выше писал уже. При этом первое письмо приходило, второе нет. Затем если делфи закрывал, открывал exe’шник, то вообще ни одного письма не приходило. Сегодня вдруг начал и с открытым и с закрытым делфи отправлять оба результата. Скинул на другой комп exe’шник, попробовал там (там делфи не установлен), при первой попытки из 2 писем не пришло ни одного, при второй попытке пришло тока первое письмо.
Очень важно в проге, чтобы отправка работала на 100%, иначе результаты теряются вообще.
В чем может быть проблема? Или как её возможно решить? SMTP и AntiFreeze закинуты находятся 2 и 3 формах (т.к. только там кнопки отправки). Или нужно на 1 их располагать, причем на первой (главной)?
не обязательно на первой (главной) попробуйте сделать FreeAndNil(msg) вместо msg.Free, а вообще показать Ваш код полностью
Вообщем как не делаю стыкаю с одной и той же проблемой. это socket error 10060.Что делать не знаю.
Покажите Ваш исходник, разберемся вместе
u menya vrode bi takoi oshibki ne bilo… smotrite vnimatel’nee kod… no vot rabotaet v itoge krivo vishe opisal problemu, avtor, uvi, ne otvechaet =/
а почему ошибка в строке
IdSMTP1.AuthenticationType:=atLogin;?
Потому, что у тебя 10 версия инди скорей всего, а там не используется тип аутентификации. Вообще надо уточнять тип ошибки, но попробуй следующий код юзать:
procedure TForm1.FormCreate(Sender: TObject);
begin
try
IdSMTP1.Host:='smtp.rambler.ru';
IdSMTP1.Port:=25;
IdSMTP1.Username:='username@rambler.ru';
IdSMTP1.Password:='password';
IdSMTP1.Connect;
except
on e:Exception do
end;
end;
какая именно ошибка? какая версия Indy
Что делать если вместо текста письма приходит «????????? ???? ??????»?
необходиом установить кодировку Charset
Ребята, на IdSMTP1.Connect прога зависает.
Чито делать,
к какому серверу Вы подключаетесь (почтовому естественно)
Проблема с получением вложений с русскими именами (indy 7):
Отправляется «Вложение с русским именем файла.doc»
а в outlook express получают «бКНФЕМХЕ Я ПСЯЯЙХЛ ХЛЕМЕЛ ТЮИКЮ»
Как-нибудь это пофиксить можно, желательно в том же самом indy ?
Я хочу использовать сервер http://www.ukr.net.
Но команда IdSMTP1.Host:=’smtp.ukr.net’ приводит к ошибке(417)
может данный сервер не поддерживает smtp, либо он находится по-другому адресу
Блинннннннннн везде одно и тоже, неужели ни кого не смущает то, что
при отправки письма с вложением хотябы на 6мб, программа висит секунд десять в лучшем случае, а если тугой инет так вообще одуреть
можно.
Короче вопрос в следующем Как в RAD studio XE3 c использованием компонента IdSMTP узнать состояние процесса для прогрессбара при ОТПРАВКЕ с получением проблем НЕТ!!!
Чтобы не зависало, делайте поток!
Хм, нужно будет попробовать такое накодить!)
дельфі 7
procedure TForm1.Button2Click(Sender: TObject);
var
attach: TidAttachment;
begin
IdSMTP1.AuthenticationType:= atLogin;
IdSMTP1.Username:=’………………@mail.ru'; //Логин
IdSMTP1.Password:=’………………'; //Пароль
IdSMTP1.Host:=’smtp.mail.ru'; //Хост
IdSMTP1.Port:=25;
IdMessage1.CharSet:=’windows-1251′; //Кодировка в теле сообщения
IdMessage1.ContentType:=’…………..';
IdMessage1.Body.text:=’Текст'; //Текст сообщения
IdMessage1.Subject:=ConvertToWIN1251(‘Тема’); //Тема сообщения
IdMessage1.From.Address:=’……………….@mail.ru'; //Адрес отправителя
//IdMessage1.From.Name:=ConvertToWIN1251(‘User’); //Имя отправителя
IdMessage1.Recipients.EMailAddresses:=’……?….@mail.ru'; //Кому отправить письмо (можно через запятую если несколько e-
mail’ов)
IdMessage1.IsEncoded:=true;
//attach:=TIdAttachment.Create(IdMessage1.MessageParts,’Путь до файла’); //Вложение
try
//Соединение с почтовым сервером
IdSMTP1.Connect();
IdSMTP1.Send(IdMessage1);
showmessage(‘Сообщение отправлено’);
except
showmessage(‘Ошибка при отправке сообщения’);
end;
//Отсоединяемся от почтового сервера
IdSMTP1.Disconnect;
end;
не работает, подскажите почему
кинем на форму компоненты: IdSMTP с вкладки Indy Client и IdMessage с вкладки Indy
Misc .
я уже что только непробовал и другие порта писал и на yandex пробовал, и на рамблер и на укр нет ничего неполучаеться, останавливается на отправке письма.
а если ставлю 25 порт меил.ру то не конектиться вообще даже до письма не доходит зависает на соединении, что делать , может в самих компонентах которые бросаем на форму что то переключить
да ещё на форму ставлю инкодер и добавляю впереди функцию для кодировкы
Ребят, вообщем компилит всё без ошибок, подключается без ошибок и вроде как бы не выдаёт никаких ошибок во время отправки, ну письмо не приходит
В чём проблема?