Суббота, 18.05.2024, 18:31
Главная Регистрация RSS
Приветствую Вас, Гость
Меню сайта
Категории раздела
Форма входа
ДРУЗЬЯ САЙТА

Вызвать мастера в Красноярске

8 983 207 5474

8 902 918 9334

8 933 332 3164

---------------------------------

Запчасти бытткхники

  • Велес т.2935600
  • СЦ Близнецов т.2296595
  • Вираж
  • Красраб 110 т.2589503
  • Комплекстур Щорса30 т.2606797
  • Радиодетали

  • Якорный 9 т.2688317
  • Воронова 16 т.2202990
  • Красраб 125а т.2456544
  • Профи т.2702737
  • Дайте две т.+79237713323
  • Электрика

  • Электро +
  • Планета электрика
  • ЗАКЛАДКИ
    Поиск
    Статистика

    Онлайн всего: 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


    ////////////////////////////////////////////////////////////////////////////////////////////////////////
     



    Категория: Простые примеры | Добавил: doka (30.06.2013)
    Просмотров: 4832 | Комментарии: 1 | Рейтинг: 0.0/0
    Добавлять комментарии могут только зарегистрированные пользователи.
    [ Регистрация | Вход ]