Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Интернет и сети
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 21.06.2007, 12:30
Аватар для The Shadow
The Shadow The Shadow вне форума
Продвинутый
 
Регистрация: 11.06.2007
Адрес: Уфа, Россия
Сообщения: 793
Репутация: 35
По умолчанию Отправка сообщений с использованием POP3

Как в Delphi 7 отправлять сообщения? С компонентом TIdPop3 я не смог разобраться, помогите, или дайте ссылку на компоненты FastNet.
Ответить с цитированием
  #2  
Старый 21.06.2007, 17:10
~ SaM ~ ~ SaM ~ вне форума
Начинающий
 
Регистрация: 05.01.2007
Адрес: Днепропетровск
Сообщения: 141
Репутация: 25
По умолчанию

http://delphisources.ru/pages/source...mple_mail.html
Ответить с цитированием
  #3  
Старый 21.06.2007, 18:52
Аватар для mav_c
mav_c mav_c вне форума
Активный
 
Регистрация: 26.03.2007
Адрес: Москва
Сообщения: 287
Репутация: 30
По умолчанию

Цитата:
Сообщение от AidarBik
Как в Delphi 7 отправлять сообщения? С компонентом TIdPop3 я не смог разобраться, помогите, или дайте ссылку на компоненты FastNet.
Извини, но через POP3 почта только принимается, а отправлять надо через SMTP:
На тебе пример на IDSMTP Я тебе шлю всё разберёшься а то времени нет выкусывать только то что связано с SMTP.
Код:
unit FrmSend;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComCtrls, Buttons, cxControls, cxContainer, cxEdit,
  cxTextEdit, cxMaskEdit, cxButtonEdit, ExtCtrls, IdMessage,
  IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient,
  IdMessageClient, IdSMTP, cxProgressBar, IdEmailAddress, StrUtils,
  IdCoderHeader, AppEvnts;

type
  Tsend_frm = class(TForm)
    lvBirthDate: TListView;
    lbCaptionlv: TLabel;
    lbDate: TLabel;
    Shape1: TShape;
    Label1: TLabel;
    pathTextFile: TcxButtonEdit;
    Label2: TLabel;
    pathBukletFile: TcxButtonEdit;
    btnSend: TBitBtn;
    btnCancel: TBitBtn;
    odFile: TOpenDialog;
    pbStatus: TcxProgressBar;
    smtp: TIdSMTP;
    msg: TIdMessage;
    lbStatus: TLabel;
    lbSubject: TLabel;
    edSubject: TcxTextEdit;
    ApplicationEvents1: TApplicationEvents;
    procedure FormShow(Sender: TObject);
    procedure textPathPropertiesButtonClick(Sender: TObject;
      AButtonIndex: Integer);
    procedure patchBukletFilePropertiesButtonClick(Sender: TObject;
      AButtonIndex: Integer);
    procedure btnCancelClick(Sender: TObject);
    procedure lvBirthDateSelectItem(Sender: TObject; Item: TListItem;
      Selected: Boolean);
    procedure btnSendClick(Sender: TObject);
    procedure msgInitializeISO(var VTransferHeader: TTransfer;
      var VHeaderEncoding: Char; var VCharSet: String);
    procedure ApplicationEvents1Message(var Msg: tagMSG;
      var Handled: Boolean);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  send_frm: Tsend_frm;

implementation

uses FrmBirthDate, mdlGlobal;

{$R *.dfm}

procedure Tsend_frm.FormShow(Sender: TObject);
var
 item : TListItem;
begin
try
 lbDate.Caption := DateToStr(Date());
 //Çàïîëíåíèå äàííûìè ëèñò âèåâà
 birthdate_frm.setBirthdate.First();
 while (not birthdate_frm.setBirthdate.Eof) do
 begin
  //Åñëè ââåä¸í ìàèë è â í¸ì åñòü "ñîáàêà"!
  if ((trim(birthdate_frm.setBirthdate.FieldByName('Email').AsString) <> '') and
   (Pos('@', birthdate_frm.setBirthdate.FieldByName('Email').AsString) > 0) and
   (StrToDate(birthdate_frm.setBirthdate.FieldByName('birthdate').AsString) = date()))
  then
  begin
   item := lvBirthDate.Items.Add();
   item.Caption := birthdate_frm.setBirthdate.FieldByName('Name').AsString +
    ' ' + birthdate_frm.setBirthdate.FieldByName('Name1').AsString +
    ' ' + birthdate_frm.setBirthdate.FieldByName('Name2').AsString;
   item.SubItems.Add(birthdate_frm.setBirthdate.FieldByName('Email').AsString);
   item.SubItems.Add(birthdate_frm.setBirthdate.FieldByName('birthdate').AsString);
  end;
  birthdate_frm.setBirthdate.Next();
 end;
 if (lvBirthDate.Items.Count > 0) then
 begin
  btnSend.Enabled := true;
  lvBirthDate.SelectAll();
 end;
 smtp.Host := AppInfo.mailOptions.serverName;
 smtp.Password := AppInfo.mailOptions.password;
 smtp.Username := AppInfo.mailOptions.userName;
 pathTextFile.Text := AppInfo.mailOptions.defTxtFile;
 pathBukletFile.Text := AppInfo.mailOptions.defBukletFile;
 edSubject.Text := AppInfo.mailOptions.defSubject;
 msg.From.Address := AppInfo.mailOptions.backAddr;
 msg.From.Name := AppInfo.hotelInfo.name;
except
 on e : Exception do
  ShowErrorMessage(e.Message, 5000);
end;
end;

procedure Tsend_frm.textPathPropertiesButtonClick(Sender: TObject;
  AButtonIndex: Integer);
begin
 odFile.Filter := 'Òåêñòîâûå ôàéëû (*.txt)|*.txt';
 if (odFile.Execute) then
 begin
  pathTextFile.Text := odFile.FileName;
 end;
end;

procedure Tsend_frm.patchBukletFilePropertiesButtonClick(Sender: TObject;
  AButtonIndex: Integer);
begin
 odFile.Filter := 'Âñå ôàéëû (*.*)|*.*';
 if (odFile.Execute) then
 begin
  pathBukletFile.Text := odFile.FileName;
 end;
end;

procedure Tsend_frm.btnCancelClick(Sender: TObject);
begin
 Close();
end;

procedure Tsend_frm.lvBirthDateSelectItem(Sender: TObject; Item: TListItem;
  Selected: Boolean);
begin
 if (lvBirthDate.SelCount > 0) then btnSend.Enabled := true else
  btnSend.Enabled := false;
end;

procedure Tsend_frm.btnSendClick(Sender: TObject);
var
 i : word;
 fio : string;
 email : string;
 adr : TIdEMailAddressItem;
 text : TStringList;
begin
try
 SetCurrentDirectory(PChar(extractFileDir(Application.ExeName)));
 text := TStringList.Create();
 msg.MessageParts.Clear();

 lbStatus.Visible := true;
 lbStatus.Caption := '';
 lbStatus.Caption := 'Ñîåäèíåíèå...';
 Application.ProcessMessages();
 try
  smtp.Connect(5000);
 except
  MessageBox(handle, PChar('Íå ìîãó ñîåäèíèòüñÿ ñ ñåðâåðîì ' + smtp.Host),
   'Îøèáêà!!', MB_OK or MB_ICONERROR);
  lbStatus.Visible := true;
  lbStatus.Caption := '';
  exit;
 end;

 lbStatus.Caption := 'Îòïðàâêà...';
 //
 if (trim(pathTextFile.Text) <> '') then
 begin
  text.LoadFromFile(pathTextFile.Text);
 end;
 if (trim(pathBukletFile.Text) <> '') then
  TIdAttachment.Create(msg.MessageParts, pathBukletFile.Text);

 for i := 0 to lvBirthDate.Items.Count - 1 do
 begin
  //Åñëè âûäåëåí òî îòïðàâëÿåì åìó ïîçäðàâëåíèå!
  if (lvBirthDate.Items[i].Selected) then
  begin
   fio := lvBirthDate.Items[i].Caption;
   email := lvBirthDate.Items[i].SubItems[0];
   adr := msg.Recipients.Add();
   adr.Address := email;
   adr.Name := email;
   lbStatus.Caption := 'Îòïðàâëåíî ' + IntToStr(i) + ' èç ' + IntToStr(lvBirthDate.SelCount);
   //Ïðîèçâîäèì çàìåíó øàáëîíîâ
      msg.Body.Text := AnsiReplaceStr(text.Text, '###FIO###', fio);
      msg.Body.Text := AnsiReplaceStr(msg.Body.Text, '###HOTELNAME###', AppInfo.hotelInfo.name);
      msg.Body.Text := AnsiReplaceStr(msg.Body.Text, '###DATE###', DateToStr(date()));
      msg.Body.Text := AnsiReplaceStr(msg.Body.Text, '###PHONES###', AppInfo.hotelInfo.phones);
      msg.Body.Text := AnsiReplaceStr(msg.Body.Text, '###URL###', AppInfo.hotelInfo.url);

      msg.Subject := AnsiReplaceStr(edSubject.Text, '###FIO###', fio);
      msg.Subject := AnsiReplaceStr(msg.Subject, '###HOTELNAME###', AppInfo.hotelInfo.name);
      msg.Subject := AnsiReplaceStr(msg.Subject, '###DATE###', DateToStr(date()));
      msg.Subject := AnsiReplaceStr(msg.Subject, '###PHONES###', AppInfo.hotelInfo.phones);
      msg.Subject := AnsiReplaceStr(msg.Subject, '###URL###', AppInfo.hotelInfo.url);
      msg.Subject := Copy(msg.Subject, 1, 40);
   //==========================
   Application.ProcessMessages();
   smtp.Send(msg);
   pbStatus.Position := round(((i + 1) * 100) / lvBirthDate.SelCount);
   Application.ProcessMessages();
  end;
 end;
 lbStatus.Visible := false;
 MessageBox(Handle, 'Ñîîáùåíèÿ óñïåøíî îòïðàâëåíû!', 'Îòïðàâêà ïî÷òû',
  MB_OK or MB_ICONINFORMATION);
 smtp.Disconnect();
 text.Destroy();
 Close();
except
 on e : Exception do
 begin
  lbStatus.Caption := '';
  ShowErrorMessage(e.Message, 5000);
  text.Destroy();
  smtp.Disconnect();
 end;
end;
end;

procedure Tsend_frm.msgInitializeISO(var VTransferHeader: TTransfer;
  var VHeaderEncoding: Char; var VCharSet: String);
begin
 VCharSet := 'windows-1251';
 VHeaderEncoding := 'B';
end;

procedure Tsend_frm.ApplicationEvents1Message(var Msg: tagMSG;
  var Handled: Boolean);
begin
 if (msg.message = WM_KEYDOWN) and (msg.wParam = VK_ESCAPE) and (self.Active) then Close();
end;

end.
__________________
---------------------------------------------
Программирование - не профессия, а стиль жизни
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 16:53.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025