Меню сайта
Категории раздела
Простые примеры [34] |
OpenGL [4] |
Фрактал [9] |
Windows API [2] |
Консоль [12] |
ДРУЗЬЯ САЙТА
Вызвать мастера в Красноярске
8 983 207 5474
8 902 918 9334
8 933 332 3164
---------------------------------
Запчасти бытткхники
Радиодетали
Электрика
ЗАКЛАДКИ
Поиск
Статистика
Онлайн всего: 1
Гостей: 1
Пользователей: 0
Главная » Статьи » C++ Builder » Простые примеры |
C++ BUILDER XE2 INDY 10 IDSMTP ОТПРАВЛЯЕМ ПОЧТУ
==================== ============================================ //--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::FormCreate(TObject *Sender) { //обнуляем указатели оттачей //что бы знать каким делать delete for(int i=0; i< CountAttac ;i++){ attachment[i] = NULL; } IdMessage1->OnInitializeISO = IdMessageInitializeISO; //горизонтальная прокрутка у ListBox1 SendMessage(ListBox1->Handle, LB_SETHORIZONTALEXTENT, 600, 0); } //---Срабатывает при отсылки почты----------------------------------- void __fastcall TForm1::IdMessageInitializeISO(wchar_t &VHeaderEncoding, UnicodeString &VCharSet) { //переопределение значений по умолчянию //Кодирование заголовка base64. //Наборы символов по UTF-8 VHeaderEncoding = 'B'; VCharSet=L"UTF-8"; } //--------------------------------------------------------------------------- void __fastcall TForm1::Button2Click(TObject *Sender) { IdSMTP1->Host = LabeledEdit1->Text ; //Адрес почтового сервера IdSMTP1->Port = StrToInt(LabeledEdit2->Text) ;//Используемый порт IdSMTP1->Username = LabeledEdit3->Text; // Пишем логин от почты IdSMTP1->Password = LabeledEdit4->Text; // и пароль к нему IdSMTP1->MailAgent = Form1->Caption ; // имя проги отправляющей письмо IdSMTP1->AuthType = satDefault; // тип аутентификации satDefault-использовать логин и пароль IdSMTP1->UseTLS = utNoTLSSupport; // уровень безопасности протокола без SSL и TLS IdSMTP1->ConnectTimeout = 10000; // Указывает количество миллисекунд, которое должно пройти прежде чем прервать попытку подключения к серверу. IdMessage1->Clear(); IdMessage1->From->Name = LabeledEdit5->Text; // от кого имя IdMessage1->From->Address = LabeledEdit6->Text; // от кого адрес IdMessage1->Recipients->EMailAddresses = LabeledEdit7->Text;//кому адрес IdMessage1->Subject = LabeledEdit8->Text;//L"Тестовое письмо";// тема письма IdMessage1->ContentTransferEncoding = L"base64"; // алгоритм кодирования письма называется base64 if(ListBox1->Items->Count > 0 ) { // если есть прикрепленный файл то устанавливаем ContentType в составной контент IdMessage1->ContentType=L"multipart/mixed; charset=UTF-8";// windows-1251 ";// IdMessage1->Encoding=meMIME;//meDefault //mePlainText for(int i=0; i< ListBox1->Items->Count ;i++){ attachment[i] = new TIdAttachmentFile(IdMessage1->MessageParts, ListBox1->Items->Strings[i] ); attachment[i]->ContentTransfer =L"base64"; attachment[i]->ContentDisposition = L"attachment"; attachment[i]->ContentType =L"application/octet-stream;"; } TIdText *TextPart = new TIdText(IdMessage1->MessageParts, NULL); TextPart->ContentType = L"text/plain"; TextPart->ContentTransfer = L"base64"; TextPart->CharSet = L"UTF-8"; //"windows-1251"; TextPart->Body->Add(Memo1->Text); TextPart->ParentPart = -1; IdSMTP1->Connect(); try { IdSMTP1->Send(IdMessage1); } __finally { IdSMTP1->Disconnect(); } delete TextPart; for(int i=0; i < CountAttac ;i++){ if( attachment[i]!= NULL) delete attachment[i]; attachment[i]=NULL; } } else { // если вложения нет то ContentType в простой текст IdMessage1->ContentType = L"text/plain; charset=UTF-8"; IdMessage1->Encoding = mePlainText; //meMIME;//meDefault // IdMessage1->Body->Add( Memo1->Text );// IdSMTP1->Connect(); // соединяемся с сервером try { IdSMTP1->Send(IdMessage1);// отправляем письио } __finally { IdSMTP1->Disconnect(); // от соединяемся от сервера в любом случае } } ListBox1->Items->Clear(); } //-------Добавить вложение----------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { if( OpenDialog1->Execute()) { if(ListBox1->Items->Count < CountAttac ) { ListBox1->Items->Add(OpenDialog1->FileName); return; } else ShowMessage("Количество вложений не больше 5 файлов"); } } //--------------------------------------------------------------------------- void __fastcall TForm1::Button3Click(TObject *Sender) { LabeledEdit1->Text = "smtp.yandex.ru" ; // Адрес почтового сервера LabeledEdit2->Text = "25" ; //Используемый порт } //--------------------------------------------------------------------------- void __fastcall TForm1::Button4Click(TObject *Sender) { LabeledEdit1->Text = "smtp.mail.ru" ; // Адрес почтового сервера LabeledEdit2->Text = "25" ; //Используемый порт } //--------------------------------------------------------------------------- void __fastcall TForm1::Button5Click(TObject *Sender) { LabeledEdit1->Text = "smtp.rambler.ru" ; // Адрес почтового сервера LabeledEdit2->Text = "25" ; //Используемый порт } //--------------------------------------------------------------------------- void __fastcall TForm1::Clear1Click(TObject *Sender) { ListBox1->Items->Clear(); // очистить список вложений } //--------------------------------------------------------------------------- void __fastcall TForm1::Delete1Click(TObject *Sender) { // удалить из списка вложений if(ListBox1->ItemIndex > -1 ) ListBox1->Items->Delete(ListBox1->ItemIndex); } //--------------------------------------------------------------------------- //////////////////////////////////////////////////////////////////////////////////////////////////////// //--------------------------------------------------------------------------- #ifndef Unit1H #define Unit1H //--------------------------------------------------------------------------- #include <System.Classes.hpp> #include <Vcl.Controls.hpp> #include <Vcl.StdCtrls.hpp> #include <Vcl.Forms.hpp> #include <IdBaseComponent.hpp> #include <IdComponent.hpp> #include <IdExplicitTLSClientServerBase.hpp> #include <IdMessage.hpp> #include <IdMessageClient.hpp> #include <IdSMTP.hpp> #include <IdSMTPBase.hpp> #include <IdTCPClient.hpp> #include <IdTCPConnection.hpp> //чтобы работал IdAttachmentFile #include <IdAttachmentFile.hpp> // чтобы работал TIdText #include <IdText.hpp> #include <Vcl.Dialogs.hpp> #include <Vcl.ExtCtrls.hpp> #include <Vcl.Menus.hpp> //--------------------------------------------------------------------------- class TForm1 : public TForm { __published: // IDE-managed Components TIdSMTP *IdSMTP1; TIdMessage *IdMessage1; TMemo *Memo1; TButton *Button2; TOpenDialog *OpenDialog1; TLabeledEdit *LabeledEdit1; TLabeledEdit *LabeledEdit2; TLabeledEdit *LabeledEdit3; TLabeledEdit *LabeledEdit4; TLabeledEdit *LabeledEdit5; TLabeledEdit *LabeledEdit6; TLabeledEdit *LabeledEdit7; TLabeledEdit *LabeledEdit8; TButton *Button1; TButton *Button3; TButton *Button4; TButton *Button5; TListBox *ListBox1; TPopupMenu *PopupMenu1; TMenuItem *Clear1; TMenuItem *Delete1; void __fastcall FormCreate(TObject *Sender); void __fastcall Button2Click(TObject *Sender); void __fastcall Button1Click(TObject *Sender); void __fastcall Button3Click(TObject *Sender); void __fastcall Button4Click(TObject *Sender); void __fastcall Button5Click(TObject *Sender); void __fastcall Clear1Click(TObject *Sender); void __fastcall Delete1Click(TObject *Sender); private: // User declarations public: // User declarations //обработчик для события OnInitializeISO void __fastcall IdMessageInitializeISO( wchar_t &VHeaderEncoding, UnicodeString &VCharSet); static const int CountAttac=5;//количество аттачей TIdAttachmentFile *attachment[CountAttac]; __fastcall TForm1(TComponent* Owner); }; //--------------------------------------------------------------------------- extern PACKAGE TForm1 *Form1; //--------------------------------------------------------------------------- #endif //////////////////////////////////////////////////////////////////////////////////////////////////////// | |
Просмотров: 4832 | Комментарии: 1 | Рейтинг: 0.0/0 |