Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Программирование под Windows > C++ Builder
Перезагрузить страницу С чего начать написание почтового клиента
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
imported_XyLigan imported_XyLigan вне форума
Новичок
 
Сообщений: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 12.03.2010
По умолчанию С чего начать написание почтового клиента - 12.03.2010, 22:56

Код:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
int NumOfMsgs;
IdPOP31->Username="username";   // адрес электронной почты в формате (xxx@xxx.xx)
IdPOP31->Password="pass"; //  пароль к данному почтовому ящику
IdPOP31->Host="pop";     // POP3 сервер (pop.mail.ru; pop3.ukr.net)
IdPOP31->Port=110;     // порт
  IdPOP31->Connect();     // подключаемся
    // если подключение прошло успешно
NumOfMsgs = IdPOP31->CheckMessages();
// записываем в NumOfMsgs количество писем
// выводим сообщения в Мемо
Memo1->Lines->Add("Подключение прошло успешно!");
Memo1->Lines->Add("У вас "+IntToStr(NumOfMsgs)+" сообщений");
IdPOP31->Retrieve(1,IdMessage1);
Label1->Caption= IdMessage1->From->Text;
Label2->Caption = Form1->IdMessage1->Recipients->EMailAddresses;
Form1->Label3->Caption= Form1->IdMessage1->CCList->EMailAddresses;
Label4->Caption = IdMessage1->Subject;
Label5->Caption = FormatDateTime("dd mmm yyyy hh:mm:ss", IdMessage1->Date);
Label6->Caption = IdMessage1->ReceiptRecipient->Text;
Label7->Caption = IdMessage1->Organization;
Label8->Cpation= IdMessage1->Body->Text;
 IdPOP31->Disconnect();       // Для отключения
}
Не могу получить текст сообщения, ошибка This is a multi-part in Mime format.
Нужно расшифровать сообщение? Подскажите в чем проблема?
Ответить с цитированием
  (#2 (permalink)) Старый
mico mico вне форума
Member
 
Сообщений: 102
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 10.03.2010
По умолчанию 13.03.2010, 17:02

Смотри:Читение сообщений
Код:
/--------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "MailRead.h"
//--------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//--------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner)
{
}
//------- Щелчок на кнопке Read Mail - считать заголовки сообщений ---------
void __fastcall TForm1::ReadBtnClick(TObject *Sender)
{ IdPOP31->Host = EditHost->Text;
  IdPOP31->Username = EditUser->Text + "@" + EditHost->Text;
  IdPOP31->Password = EditPass->Text;
  IdPOP31->Connect();               // установить соединение
  Headers->Items->Clear();          // очистить список Headers
  TListItem *Item;                    // элемент списка Headers
  for (int I=1; I<=IdPOP31->CheckMessages(); I++)
  {    IdMessage1->Clear();            // очистить объект IdMessage1
    // Перенести заголовок текущего сообщения в объект IdMessage1
    IdPOP31->RetrieveHeader(I, IdMessage1);
    // Добавить поля заголовка к списку Headers
    Item = Headers->Items->Add();
    Item->Caption = IdMessage1->From->Text;
    Item->SubItems->Add(IdMessage1->Subject);
    Item->SubItems->Add(IdMessage1->Date.FormatString("dd:mm:yy hh:nn"));
    StatusBar1->SimpleText = " Retrieve message headers: " + IntToStr(I);
    Update();
  }
}
//------- В списке Headers выбрана строка - считать сообщение --------------
void __fastcall TForm1::HeadersSelectItem(TObject *Sender, TListItem *Item,
       bool Selected)
{ if (Selected)
  {    int I = Headers->ItemIndex + 1; // номер выбранного сообщения
    Body->Lines->Clear();           // очистить комментарий Body
    IdMessage1->Clear();            // очистить объект IdMessage1
    // Перенести выбранное сообщение в объект IdMessage1
    IdPOP31->Retrieve(I, IdMessage1);
    // Добавить строки сообщения к комментарию Body
    if (IdMessage1->MessageParts->Count)
    { StatusBar1->SimpleText = " Selected message: " + IntToStr(I) +
                               " of " + IntToStr(IdPOP31->CheckMessages());
      TIdText *Message;                // текст сообщения в кодировке MIME
      Message = (TIdText *)IdMessage1->MessageParts->Items[0];
      Body->Lines->AddStrings(Message->Body);
заголовок
Код:
//---------------------------------------------------------------------------
#ifndef MailReadH
#define MailReadH
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <ExtCtrls.hpp>
#include <Buttons.hpp>
#include <ComCtrls.hpp>
#include <IdBaseComponent.hpp>
#include <IdComponent.hpp>
#include <IdMessage.hpp>
#include <IdMessageClient.hpp>
#include <IdPOP3.hpp>
#include <IdSMTP.hpp>
#include <IdTCPClient.hpp>
#include <IdTCPConnection.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published:    // IDE-managed Components
    TStatusBar *StatusBar1;
    TPanel *Panel2;
    TLabel *Host;
    TLabel *Label1;
    TEdit *EditUser;
    TLabel *Label2;
    TEdit *EditPass;
    TPanel *Panel3;
    TMemo *Body;
    TIdPOP3 *IdPOP31;
    TIdMessage *IdMessage1;
    TBitBtn *ReadBtn;
    TSplitter *Splitter1;
    TListView *Headers;
    TEdit *EditHost;
    void __fastcall ReadBtnClick(TObject *Sender);
    void __fastcall HeadersSelectItem(TObject *Sender, TListItem *Item,
          bool Selected);
    void __fastcall FormClose(TObject *Sender, TCloseAction &Action);
        void __fastcall Panel2Click(TObject *Sender);
private:    // User declarations
public:        // User declarations
    __fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
==================================================
передача почты
cpp.
Код:
/--------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "MailSend.h"
//--------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//--------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner)
{
}
//------- Щелчок на кнопке Send Mail - послать новое сообщение -------------
void __fastcall TForm1::SendBtnClick(TObject *Sender)
{ IdSMTP1->Host = EditHost->Text;
  IdSMTP1->AuthenticationType = atNone;
  IdSMTP1->Connect();               // установить соединение
  IdMessage1->Clear();              // очистить объект IdMessage1
  // Построить поля заголовка сообщения в объекте IdMessage1
  IdMessage1->From->Text = EditFrom->Text;
  IdMessage1->ReplyTo->EMailAddresses = EditFrom->Text;
  IdMessage1->Recipients->EMailAddresses = EditTo->Text;
  IdMessage1->Subject = EditSubj->Text;
  if (CheckReciept->Checked)
    IdMessage1->ReceiptRecipient->Text = IdMessage1->From->Text;
  else
    IdMessage1->ReceiptRecipient->Text = "";
  IdMessage1->Body->Assign(Body->Lines);
  IdSMTP1->Send(IdMessage1);        // послать объект IdMessage1
}
//------- OnStatus - состояние соединения ----------------------------------
void __fastcall TForm1::IdSMTP1Status(TObject *ASender,
       const TIdStatus AStatus, const AnsiString AStatusText)
{ StatusBar1->SimpleText = AStatusText;
}
//------- OnWorkEnd - текущая операция завершена ---------------------------
void __fastcall TForm1::IdSMTP1WorkEnd(TObject *Sender, TWorkMode AWorkMode)
{ StatusBar1->SimpleText = " Transfer complete";
}
//--------------------------------------------------------------------------
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{ IdSMTP1->Disconnect();            // разорвать соединение
}
//--------------------------------------------------------------------------

void __fastcall TForm1::Panel2Click(TObject *Sender)
{

}
//---------------------------------------------------------------------------
заголовок
Код:
//---------------------------------------------------------------------------
#ifndef MailSendH
#define MailSendH
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <ExtCtrls.hpp>
#include <Buttons.hpp>
#include <ComCtrls.hpp>
#include <IdBaseComponent.hpp>
#include <IdComponent.hpp>
#include <IdMessage.hpp>
#include <IdMessageClient.hpp>
#include <IdSMTP.hpp>
#include <IdTCPClient.hpp>
#include <IdTCPConnection.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published:    // IDE-managed Components
    TPanel *Panel2;
    TLabel *Host;
    TLabel *Label1;
    TEdit *EditFrom;
    TLabel *Label2;
    TEdit *EditTo;
    TPanel *Panel3;
    TMemo *Body;
    TIdMessage *IdMessage1;
    TBitBtn *SendBtn;
    TEdit *EditHost;
    TIdSMTP *IdSMTP1;
    TCheckBox *CheckReciept;
    TEdit *EditSubj;
    TLabel *Label3;
    TStatusBar *StatusBar1;
    void __fastcall SendBtnClick(TObject *Sender);
    void __fastcall FormClose(TObject *Sender, TCloseAction &Action);
    void __fastcall IdSMTP1Status(TObject *ASender, const TIdStatus AStatus,
          const AnsiString AStatusText);
    void __fastcall IdSMTP1WorkEnd(TObject *Sender, TWorkMode AWorkMode);
        void __fastcall Panel2Click(TObject *Sender);
private:    // User declarations
public:        // User declarations
    __fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
Пример из книги Владимира Шамиса! "С++ Builder Borland Developer Studio 2006" смотри может поможет сам не занимался не было нужды. :rules:
Ответить с цитированием
  (#3 (permalink)) Старый
Alexiski Alexiski вне форума
Любитель давать советы
 
Сообщений: 4,274
Сказал(а) спасибо: 27
Поблагодарили 54 раз(а) в 54 сообщениях
Регистрация: 16.10.2005
По умолчанию 13.03.2010, 18:06

Непонятно, почему Ваш код 1) берет только первую часть сообщения 2) не проверив, считает, что эта часть текстовая
Ответить с цитированием
  (#4 (permalink)) Старый
mico mico вне форума
Member
 
Сообщений: 102
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 10.03.2010
По умолчанию 13.03.2010, 19:47

Alexiski дык почти все примеры котрые знаю из книг все практичски делают без проверок (потому как пример)
думаю автор разберется и сам сделает как надо
это пример(Владимир Шамис ) что и как ничего не скажу(не занимался)

ЗЫ: Форум для того чтоб подтолкнуть программера в нужную сторону а не писать за него код.
еси нужны все примеры из его книжки пусть автор пишит в личку свой адрес скину!
Ответить с цитированием
  (#5 (permalink)) Старый
imported_XyLigan imported_XyLigan вне форума
Новичок
 
Сообщений: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 12.03.2010
По умолчанию 10.04.2010, 19:38

Здравствуйте. Подскажите как сделать, чтобы при кликание на папку входящие загружались входящие письма,и при кликание на название темы содержание письма, вообщем как в The bat?
Ответить с цитированием
Ads.
  (#6 (permalink)) Старый
Olegih Olegih вне форума
Новичок
 
Сообщений: 2
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 25.10.2015
По умолчанию 25.10.2015, 04:42

Тема устарела, но нигде не нашел ничего подобного. Не понятен один момент - TIdText, что за тип, где определяется?
Ответить с цитированием
  (#7 (permalink)) Старый
Olegih Olegih вне форума
Новичок
 
Сообщений: 2
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 25.10.2015
По умолчанию 25.10.2015, 06:40

Разобрался - #include <IdText.hpp>
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
с чего начать? Member Вопросы начинающих программистов 32 02.03.2012 00:08
Написание программы на С++ с чего начать en33 C++ Builder 5 12.05.2011 22:45
С чего начать написание программы mr.Johny Вопросы начинающих программистов 1 16.12.2010 12:17
С чего начать Nemezido Электроника 163 26.12.2008 21:35
С чего начать? artishok Форум программистов 3 28.03.2008 13:24
с чего начать? LыSы` Охлаждение и разгон 2 21.07.2007 11:00
Написание Клиента для программы по мониторингу заболеваемости imported_Горыныч Вопросы начинающих программистов 10 07.12.2006 02:31
Написание драйвера под Linux с чего начать Vivalzard Железо. Написание драйверов 1 27.04.2006 14:05
Написание программы на подобие RAdmin с чего начать prog-man Delphi 0 07.12.2005 23:49
Как запустить невидимым почтового клиента z-z-z88 C++ Builder 1 01.07.2004 01:57
С чего начать написание кодеков Anonymous C++ Builder 0 20.10.2003 02:32
Написание браузера с чего начать Anonymous WinAPI 1 10.09.2003 18:49



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов