Создадим новый проект VCL Forms Apllication, на форму добавим несколько компонентов как показано на рисунку, три Edit'a, idSMTP (На вкладке Indy Clients), IdMessage (Indy Misc), Memo и Button. Создим событие для Form1 - OnCreate
void __fastcall TForm1::FormCreate(TObject *Sender) { /* Yandex.ru - smtp.yandex.ru - работает Mail.ru - smtp.mail.ru - не проверял Google.com - smtp.gmail.com - уже не работает */ IdSMTP1->Host = "smtp.yandex.ru"; // Адрес почтового сервера /* Yandex.ru -25 Mail.ru - 25 Google.com - 465 */ IdSMTP1->Port = 25; //Используемый порт IdSMTP1->Username = "test"; // Пишем логин от почты IdSMTP1->Password = "123321"; // и пароль к нему }Создаем событие для Button1 - OnClick
void __fastcall TForm1::Button1Click(TObject *Sender) { IdMessage1->From->Text = Edit1->Text; IdMessage1->Recipients->EMailAddresses = Edit2->Text; IdMessage1->Subject = Edit3->Text; IdMessage1->Body->Text = Memo1->Text; IdSMTP1->Connect(); if (IdSMTP1->Connected()) IdSMTP1->Send(IdMessage1); else IdSMTP1->Disconnect(); }
Вот так просто можно отправлять письма используя Builder C++
Спасибо хорошая статья)))Полезная очень)
ОтветитьУдалитьмне пишет ошибки:
ОтветитьУдалитьUndefined sumbol "idSMTP1"
Undefined sumbol "idMessage1"
Undefined sumbol "memo1"
Undefined sumbol "idSMTP1"
ПОЧЕМУ!?
1. Не забывай что C++ чувствительный к регистру
ОтветитьУдалить2. Ты не забыл компоненты на форму кинуть?
кстати, у меня такиеже ошибки, но я немогу их исправить(
ОтветитьУдалитьЗдраствуйте, подскажите что такое?
ОтветитьУдалитьКомпилятор не замечает ошибок, все нормально, программа запускается, но когда я нажимаю на кнопку "Отправить", то появляется ошибка!(описать и написать я ее не могу)подскажите что делать, кто хочет помочь может зайти на форум, я там скрины выложил, можете посмотреть...
http://www.cyberforum.ru/cpp-builder/thread223380.html
IdSMTP1->UseNagle
ОтветитьУдалитьпопробуй поменять на
IdSMTP1->Username честно я долго искал как проще отправлять почту из билдера и этот способ пока самый короткий
Спасибо за отзыв. Я поменял 'UseNagle' на 'Usename', и компилятор выводит ошибку: [C++ Error] Project2.cpp(22): E2316 'Usename' is not a member of 'TIdSMTP'. Еще вариантов нет?
ОтветитьУдалитьНе Usename, а Username
ОтветитьУдалитьВвел 'Username', компилятор пишет ошибку:
ОтветитьУдалить[C++ Error] Unit1.cpp(22): E2316 'Username' is not a member of 'TIdSMTP'
Может вам код скопировать чтоб вы проверили?
Скинь исходник ...
ОтветитьУдалитьЯ просто использую Builder 6, щас попробую скачать Embarcadero rad studio 2010, попробую там написать. О результатах сообщу)
ОтветитьУдалитьСпасибо, все работает, писмо отправляется на яндекс. А можно чтоб на сервер mail.ru отправлялось? Если да, то напишите код плиз
ОтветитьУдалитьа у меня ошибка: Range check error!
ОтветитьУдалитьчто делать?
ДАЛБАЕБСКИЙ САЙТ СДЕСЬ НИКТО НЕ ПОМАГАЕТ!
ОтветитьУдалитьВ Билдер6 надо не IdSMTP1->Username, такого свойства и нет, а IdSMTP1->UserId
ОтветитьУдалитьКак исправить ето?
ОтветитьУдалить[C++ Error] Unit1.cpp(34): E2034 Cannot convert 'void' to 'bool'
(Мне 12 лет, но это единственная ошибка!)
Кому помочь?
ОтветитьУдалитьпомогите мне .., аська 425236315 плиз ..
ОтветитьУдалитьУж как только не извращался все равно выходит ошибка.
ОтветитьУдалить[BCC32 Error] Unit1.cpp(21): E2316 '_fastcall TForm1::FormCreate(TObject *)' is not a member of 'TForm1'
Все верно тут написано! Все работает.
ОтветитьУдалитьВ загаловке написано же (Программируем на C++ Builder 2010) а у всех скорее всего 2007 или 6.
А как принять письмо?
ОтветитьУдалитьустановить свой SMTP сервер
ОтветитьУдалитьСпасибо! помогло!!! =)
ОтветитьУдалитьОчень пордезная статья. Однако в по карйней мере в С++Buider 6
ОтветитьУдалитьписьмо не отправляется, почтовый сервер возвращает ошибку, просит для начала дать команду идентификации.
Проблема решается, если до отправления письма написать вроде
if (IdSMTP1->Connected()) {
b = IdSMTP1->Authenticate();
IdSMTP1->Send(IdMessage1);
}
else
IdSMTP1->Disconnect();
Все отлично сработало. Автору большой респект. коротко и доступно.
ОтветитьУдалитьНе подскажете? Как перенести данные на сервер?
ОтветитьУдалитькакую дерективу то надо подключать?
ОтветитьУдалитькакую дерективу то надо подключать?
ОтветитьУдалить