Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Пример работы с SMTP, вопрос 
:(
    Опции темы
Goph
Дата 5.7.2002, 14:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 304
Регистрация: 9.5.2002
Где: Кривой Рог

Репутация: нет
Всего: нет



В факах есть пример работы с SMTP, как прикрепить для отправки файл?


--------------------
Воображение гораздо важнее знаний!
                                (Эйнштейн)
PM MAIL ICQ   Вверх
Vit
Дата 5.7.2002, 19:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 48
Всего: 207



Там же, в нашем FAQ есть пример


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
Goph
Дата 6.7.2002, 00:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 304
Регистрация: 9.5.2002
Где: Кривой Рог

Репутация: нет
Всего: нет



Код

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls, ComCtrls, Psock, NMsmtp;

type
TForm1 = class(TForm)
  Memo: TRichEdit;
  Panel1: TPanel;
  SMTP: TNMSMTP;
  Panel2: TPanel;
  FromAddress: TEdit;
  predefined: TLabel;
  FromName: TEdit;
  Subject: TEdit;
  LocalProgram: TEdit;
  ReplyTo: TEdit;
  islog: TCheckBox;
  Host: TEdit;
  Port: TEdit;
  userid: TEdit;
  Button1: TButton;
  procedure Button1Click(Sender: TObject);
private
  Procedure CleanContext;
  procedure PerformConnection;
  procedure AddMessage(msg:string; color:integer);
  procedure log(inpt :string);
  Procedure SetSMTP;
public
  function SendEmail(_to, cc, bcc, Subject, body, attachment:string; HTMLFormat:boolean):boolean;
end;

var
Form1: TForm1;


implementation

{$R *.DFM}
Procedure TForm1.SetSMTP;
begin
SMTP.Host:=Host.Text;
SMTP.Port:=strtoint(Port.text);
SMTP.UserID:=userid.text;
end;

Function GetEmailDateTime:string;
var tz:_time_Zone_information;
    s:string;
begin
GetTimeZoneInformation(tz);
if (tz.Bias*100 div 60)<1000 then
  s:=format(' -0%d',[tz.Bias*100 div 60])
else
  s:=format(' -%d',[tz.Bias*100 div 60]);
result:=formatdatetime('ddd, dd mmm yyyy hh:nn:ss',now)+s;
end;

Procedure TForm1.CleanContext;
{set default values, some of them comes from "Setup" form}
begin
SMTP.PostMessage.FromAddress:=FromAddress.text;
SMTP.PostMessage.FromName:=FromName.text;
SMTP.PostMessage.ToAddress.Clear;
SMTP.PostMessage.ToCarbonCopy.clear;
SMTP.PostMessage.ToBlindCarbonCopy.clear;
SMTP.PostMessage.Body.clear;
SMTP.PostMessage.Attachments.clear;
SMTP.PostMessage.Subject:=Subject.text;
SMTP.PostMessage.LocalProgram:=LocalProgram.text;
(*Mon, 27 Nov 2000 12:37:46 -0700*)
SMTP.PostMessage.Date:=GetEmailDateTime;
SMTP.PostMessage.ReplyTo:=ReplyTo.Text;
end;

procedure TForm1.log(inpt :string);
var outf:textfile;
begin  {writing in the log file}
if not islog.checked then exit;
assignfile(outf, changefileext(paramstr(0), '.log'));
if fileexists(changefileext(paramstr(0), '.log')) then
  append(outf)
else
  rewrite(outf);
writeln(outf, datetimetostr(now)+'|'+inpt);
closefile(outf);
end;

procedure TForm1.AddMessage(msg:string; color:integer);
begin {showing in the memo field progress...}
while memo.lines.Count>2000 do memo.lines.Delete(0);
memo.sellength:=0;
memo.selstart:=length(memo.text);
memo.selattributes.Color:=Color;
memo.seltext:=#13#10+DateTimeTostr(now)+' '+msg;
memo.perform($00B7,0,0);
Application.ProcessMessages;
if color<>clRed then log(DateTimeTostr(now)+' '+msg) else log('Error: '+DateTimeTostr(now)+' '+msg);
end;

procedure TForm1.PerformConnection;
begin
while (not SMTP.connected) do
  begin
    SetSMTP;
    AddMessage('Connecting to SMTP',clBlue);
    application.processmessages;
    try
      SMTP.Connect;
      AddMessage('No Errors',clBlue);
    except
      on e:exception do AddMessage('Error conection: '+e.message,clBlue);
    end;
  end;
end;


Function TForm1.SendEmail(_to, cc, bcc, Subject, body,  attachment:string; HTMLFormat:boolean):boolean;
begin
PerformConnection;
result:=true;
CleanContext;
try
  if (attachment<>'') and (not Fileexists(attachment)) then
    begin
      AddMessage('Attachment is not ready yet ('+ attachment+') ', clNavy);
      sleep(300);
      result:=false;
      exit;
    end;
  SMTP.PostMessage.ToAddress.text:=StringReplace(_to, ';',#13#10, [rfReplaceAll, rfIgnoreCase]);
  if cc<>'' then SMTP.PostMessage.ToCarbonCopy.text:=StringReplace(cc, ';',#13#10, [rfReplaceAll, rfIgnoreCase]);
  if bcc<>'' then SMTP.PostMessage.ToBlindCarbonCopy.text:=StringReplace(bcc, ';',#13#10, [rfReplaceAll, rfIgnoreCase]);
  if Subject<>'' then SMTP.PostMessage.Subject:=Subject;
  if HTMLFormat then SMTP.SubType:=mtPlain else SMTP.SubType:=mtHtml;
  SMTP.PostMessage.Body.Text:=Body;
  if attachment<>'' then SMTP.PostMessage.Attachments.add(attachment);
  AddMessage('Sending to '+ _to, clGreen);
  SMTP.SendMail;
  AddMessage('Complete.'+#13#10, clGreen);
except
  on e:sysutils.exception do
    begin
      AddMessage(e.message, clRed);
      result:=false;
    end;
end;

end;


procedure TForm1.Button1Click(Sender: TObject);
begin
SendEmail('[email protected]', '', '', 'test', 'body',  '', False);
end;

end.


Тыкните мне слепому пальцем, плиз
Как и где сдесь прикрепить для отправки файл


--------------------
Воображение гораздо важнее знаний!
                                (Эйнштейн)
PM MAIL ICQ   Вверх
Vit
Дата 6.7.2002, 01:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 48
Всего: 207



Сорри, я пропустил, кажись...

SMTP.PostMessage.Attachments - этот объект ответственнен за прикрепление файлов. Помоему, там это делается простым методом Add... Код у меня на работе, точнее смогу сказать и исправить в FAQ на следующей неделе.


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
Goph
Дата 6.7.2002, 09:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 304
Регистрация: 9.5.2002
Где: Кривой Рог

Репутация: нет
Всего: нет



Буду ждать!!


--------------------
Воображение гораздо важнее знаний!
                                (Эйнштейн)
PM MAIL ICQ   Вверх
Goph
Дата 7.7.2002, 18:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 304
Регистрация: 9.5.2002
Где: Кривой Рог

Репутация: нет
Всего: нет



Vit я все равно буду ждать?  :)


--------------------
Воображение гораздо важнее знаний!
                                (Эйнштейн)
PM MAIL ICQ   Вверх
Vit
Дата 7.7.2002, 19:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 48
Всего: 207



Я смогу найти свой код не раньше понедельника-вторника, а почему бы тебе самому не по экспериментировать с объектом "SMTP.PostMessage.Attachments"? Там Help в Дельфи есть, примеры есть, что еще надо? По моему там надо только методом Add добавить файл и всё - у тебя это не получилось? Это не работает?


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
RA
Дата 7.7.2002, 21:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Брутальный буратина
****


Профиль
Группа: Участник Клуба
Сообщений: 3497
Регистрация: 31.3.2002
Где: Лес

Репутация: 14
Всего: 115



Чтоб выбрать файлы которые будут отправленны:

Добавь компоненты:

OpenDialog1
button
ListBox

Код

procedure TForm1.Button1Click(Sender: TObject);
begin
 If OpenDialog1.Execute then
   ListBox1.Items.Add(OpenDialog1.FileName);
end;



Отправляем с файлами.

Код

procedure TForm1.Button2Click(Sender: TObject);
begin
 NMSMTP1.PostMessage.FromAddress := '[email protected]';
 NMSMTP1.PostMessage.FromName := 'BillGates';
 NMSMTP1.PostMessage.Subject := 'make me blou job';
 NMSMTP1.PostMessage.ToAddress.Add(Edit1.text);{//Поле едит содержит адрес получателя}
 NMSMTP1.PostMessage.Attachments.AddStrings(Listbox1.Items);{Вот это тот самый ЛистБокс каторый хранит пути к файлам каторые будут отправленны}
 NMSMTP1.PostMessage.Body.Assign(Memo1.Lines);{Текст письма}
 NMSMTP1.SendMail; //Отправляем только если connected
end;


PM   Вверх
Vit
Дата 9.7.2002, 23:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 48
Всего: 207



Так, выбрал время, посмотрел внимательно на код, ничего там не пропущено - вот строка там есть для прикрепления файла:

if attachment<>'' then SMTP.PostMessage.Attachments.add(attachment);


А в вызове функции:

Function TForm1.SendEmail(_to, cc, bcc, Subject, body,  attachment:string; HTMLFormat:boolean):boolean;

указываешь имя прикреплённого файла




--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
Khazad
Дата 29.11.2007, 19:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 8.11.2007

Репутация: нет
Всего: нет



Доброго времени суток!
У меня есть вопрос по примеру, с которым сдесь у Goph была проблемка...
Я использую пример в своей программке, она прекрасно компилится  smile , но что-то не отсылает письмо.

вот лог
29.11.2007 18:37:35|29.11.2007 18:37:35 Connecting to SMTP
29.11.2007 18:37:35|29.11.2007 18:37:35 No Errors
29.11.2007 18:37:35|29.11.2007 18:37:35 Sending to <ххххххххх>@mail.ru
29.11.2007 18:37:56|Error: 29.11.2007 18:37:56 503 valid RCPT command must precede DATA


вписал своё мыло
Код

procedure TForm1.Button1Click(Sender: TObject);
begin
 SendEmail('<ххххххххх>@mail.ru', '', '', 'test', 'body',  '', False);
end;


и Заполнил некоторые Эдиты
Код

FromAddress.Text:='<yyyyyyyyy>@rambler.ru';
FromName.Text:='ggg';
Subject.Text:='test';
LocalProgram.Text:='';
ReplayTo.Text:='';
Host.Text:='smpt.mail.ru';
Port.Text:='25';
UseID.Text:='<ххххххххх>';


Скореё всего проблема не в коде, а в Эдитах, которые я заполнил. Но где, что и как не правильно - я не знаю.
Вот и вопрос: как правильно воспользоваться этим примером?
Заранее спасибо.
PM MAIL   Вверх
Khazad
Дата 30.11.2007, 12:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 8.11.2007

Репутация: нет
Всего: нет



Всё, я разобрался))
PM MAIL   Вверх
BLACK_KOT
Дата 16.7.2008, 09:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 305
Регистрация: 20.12.2006

Репутация: нет
Всего: -1



Цитата(RA @ 7.7.2002,  21:58)
Чтоб выбрать файлы которые будут отправленны:

Добавь компоненты:

OpenDialog1
button
ListBox

Код

procedure TForm1.Button1Click(Sender: TObject);
begin
  If OpenDialog1.Execute then
    ListBox1.Items.Add(OpenDialog1.FileName);
end;



Отправляем с файлами.

Код

procedure TForm1.Button2Click(Sender: TObject);
begin
  NMSMTP1.PostMessage.FromAddress := '[email protected]';
  NMSMTP1.PostMessage.FromName := 'BillGates';
  NMSMTP1.PostMessage.Subject := 'make me blou job';
  NMSMTP1.PostMessage.ToAddress.Add(Edit1.text);{//Поле едит содержит адрес получателя}
  NMSMTP1.PostMessage.Attachments.AddStrings(Listbox1.Items);{Вот это тот самый ЛистБокс каторый хранит пути к файлам каторые будут отправленны}
  NMSMTP1.PostMessage.Body.Assign(Memo1.Lines);{Текст письма}
  NMSMTP1.SendMail; //Отправляем только если connected
end;


откуда ты взял компонент NMSMTP?

интернетпереполнен примерами с этим компонентом, но скачать его не представляется возможности!!


--------------------
                       .. я - демо версия Бога от Microsoft..
PM MAIL   Вверх
Alexeis
Дата 16.7.2008, 09:36 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



BLACK_KOT, это уже ни к чему 2002й год. Используйте соответствующие компоненты из палитры INDY.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1108 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.