Отправка почты Lazarus (SMTP)

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Отправка почты Lazarus (SMTP)

Сообщение Dane » 18.03.2008 13:12:59

Надо написать программку, которая по результатам запросов к БД отсылала письма по необходимым адресам с определенным текстом (и/или вложением). Каким компонентом это можно сделать. Посоветуйте. Я еще пока новичек в Lazarus, но небольшой опыт уже есть.

1. OS - Windows
2. Lazarus 0.9.25
Dane
новенький
 
Сообщения: 27
Зарегистрирован: 02.02.2008 23:49:44

Сообщение Brainenjii » 18.03.2008 13:31:31

Аватара пользователя
Brainenjii
энтузиаст
 
Сообщения: 1351
Зарегистрирован: 10.05.2007 00:04:46

Сообщение Attid » 18.03.2008 13:33:22

вверху страницы есть ссылка с название "ссылки" там есть раздел "Сеть" там и выбирай что подуше.
Аватара пользователя
Attid
долгожитель
 
Сообщения: 2586
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E

Сообщение Dane » 18.03.2008 14:31:26

Всем большое спасибо. Буду копаться. Вот если бы еще кто мне ответил по теме http://freepascal.ru/forum/viewtopic.php?t=3186 было бы совсем хорошо :0)
Dane
новенький
 
Сообщения: 27
Зарегистрирован: 02.02.2008 23:49:44

Сообщение Padre_Mortius » 18.03.2008 14:58:41

можно синапсис использовать http://synapse.ararat.cz
правда эти компоненты не визуальные
Padre_Mortius
энтузиаст
 
Сообщения: 1265
Зарегистрирован: 29.05.2007 17:38:07
Откуда: Спб

Сообщение Dane » 18.03.2008 15:29:23

С Синапсом я как раз и начал копаться с самого начала.
Кстати, может кто поможет прикрутить Инди к Лазарусу. Он ругается, что не может найти юниты (хотя вроде как в путях компилятора указываю где лежат .pas файлы)
Dane
новенький
 
Сообщения: 27
Зарегистрирован: 02.02.2008 23:49:44

Сообщение B4rr4cuda » 18.03.2008 18:09:02

Indy сначала к FPC прикрутить надо, а потом уже к лазарусу - в хелпе так и сказано. К FPC 2.0 инди я прикрутил, к 2.2 - не удалось.
Аватара пользователя
B4rr4cuda
энтузиаст
 
Сообщения: 693
Зарегистрирован: 28.12.2007 07:48:35

Сообщение Dane » 18.03.2008 18:12:59

Я, вроде как Indy прикрутил. Все получилось (по крайней мере в палитре объекты появились). Теперь бы разобраться как все это работает, если учесть, что разработать надо консольную утилиту
Dane
новенький
 
Сообщения: 27
Зарегистрирован: 02.02.2008 23:49:44

Сообщение Dane » 18.03.2008 20:04:14

Ребята! Дайте ссылку на рабочий пример отправки письма через SMTP на Lazarus. У меня все время вылетает ошибка "Rised exception class 'External: ?'"
Dane
новенький
 
Сообщения: 27
Зарегистрирован: 02.02.2008 23:49:44

Сообщение Padre_Mortius » 18.03.2008 23:39:33

Код: Выделить всё
uses ... smtpsend;

procedure TForm1.Button1Click(Sender: TObject);
var
  smtp:TSMTPsend;
  UserName, SmtpHost: AnsiString;
  MailData: TStringList;
begin
  UserName := 'b@b.com';
  try
    smtp := TSMTPsend.Create;
    SmtpHost := '192.168.0.1';
    Smtp.Login;
    if Smtp.ESMTP = True then
    begin
      MailData := TStringList.Create;
      MailData.Add('test');
      SendTo(UserName, 'a@b.com', 'Ошибка',
             SmtpHost, MailData);
      MailData.Free;
    end;
    Smtp.Logout;
  finally
    FreeAndNil(smtp);
  end;
end;

Это пример с использованием библиотеки синапс
Padre_Mortius
энтузиаст
 
Сообщения: 1265
Зарегистрирован: 29.05.2007 17:38:07
Откуда: Спб

Сообщение Dane » 19.03.2008 12:12:52

Padre_Mortius
Большое спасибо - работает
Dane
новенький
 
Сообщения: 27
Зарегистрирован: 02.02.2008 23:49:44

Re: Отправка почты Lazarus (SMTP)

Сообщение Михаил Крамер » 04.05.2008 12:16:01

Вопрос в эту тему. Покажите пожалуйста, как синапсом сформировать правильно MIME-сообщение без вложений и с вложениями. Я это делал так, но формировался только заголовок, ни текста, ни приложения у оптравленных писем не было:
Код: Выделить всё
program smtptst;

{$mode objfpc}{$H+}

uses
  Classes, SysUtils, smtpsend, mimemess, mimepart
  { you can add units after this };

const
   addresses: array [1..3] of string = ('kmu2004@ya.ru', 'kmu2004@yandex.ru',
                            'kmu2004@narod.ru');
var
   i: byte;
   mess: TMimeMess;
   part: TMimePart;
   s: TStringList;
begin
   mess:= TMimeMess.Create;
   s:= TStringList.Create;
   s.Add('Сообщение');
   mess.Header.From:= 'FROM <FROMADDRESS@server.ru>';
   mess.Header.Subject:= 'Subject';
   mess.Header.ToList.Add('kmu2003@yandex.ru');
   part:= mess.AddPartMess(s, Nil);
   mess.AddPartTextFromFile('/home/user/aaa', part);
   mess.EncodeMessage;
   for i:= 1 to 3 do
     if not SendToRaw('FROMADDRESS@server.ru', addresses[i], 'relay.provider.ru', mess.Lines, '', '') then
     begin
          Writeln('Error');
          Readln;
     end;
end.
Последний раз редактировалось Михаил Крамер 04.05.2008 14:55:21, всего редактировалось 1 раз.
Михаил Крамер
новенький
 
Сообщения: 73
Зарегистрирован: 08.02.2008 14:26:40

Re: Отправка почты Lazarus (SMTP)

Сообщение Padre_Mortius » 04.05.2008 12:28:33

Михаил Крамер писал(а):Я это делал так, но формировался только заголовок не было:


Уточните вопрос, а то не совсем ясно что имеется ввиду
Padre_Mortius
энтузиаст
 
Сообщения: 1265
Зарегистрирован: 29.05.2007 17:38:07
Откуда: Спб

Re: Отправка почты Lazarus (SMTP)

Сообщение Михаил Крамер » 04.05.2008 13:30:43

Отправленные письма имели только заголовок, ни текста ни вложения не было.
Михаил Крамер
новенький
 
Сообщения: 73
Зарегистрирован: 08.02.2008 14:26:40

Re: Отправка почты Lazarus (SMTP)

Сообщение Padre_Mortius » 04.05.2008 17:22:16

Этот код работает. Это немного измененный пример из документации http://synapse.ararat.cz/doku.php/public:howto:tmimepart
Код: Выделить всё
var
  m:TMimemess;
  p: TMimepart;
begin
  m:=TMimemess.create;
  try
    p := m.AddPartMultipart('text', nil);
    m.AddPartTextFromFile('c:\boot.ini',p);
    m.header.from:='youraddress@somewhere.com';
    m.header.tolist.add('You@somewhere.com');
    m.header.subject:='test message';
    m.EncodeMessage;
    //if you wish to send it by SMTP too, then:
    //SendToRaw('youraddress@somewhere.com', 'You@somewhere.com', 'your.smtp.server.com', m.lines, 'yourusername', 'yourpassword');
    m.lines.savetofile('c:\log.txt');
  finally
    m.free;
  end;
end;   


Добавлено спустя 7 минут 17 секунд:
Странно, что у вас не было текста. у меня результат действия Вашего примера был следующий

Код: Выделить всё
From: "FROM" <FROMADDRESS@server.ru>
To: kmu2003@yandex.ru
Subject: Subject
Date: Sun, 4 May 2008 17:28:58 +0400
MIME-Version: 1.0 (produced by Synapse)
X-mailer: Synapse - Pascal TCP/IP library by Lukas Gebauer
Content-type: message/rfc822
Content-Description: E-mail Message

Сообщение

Padre_Mortius
энтузиаст
 
Сообщения: 1265
Зарегистрирован: 29.05.2007 17:38:07
Откуда: Спб

След.

Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 249

Рейтинг@Mail.ru