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

Поиск:

Закрытая темаСоздание новой темы Создание опроса
> Посылка E-mail, Delphi + Email 
:(
    Опции темы
Ярик
Дата 19.5.2006, 20:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



ПОМОГИТЕ ПОЖАЛУЙСТА! Надо быстро послать Email, только не через какие-то почтовые проги, и не надо громоздких алгоритмов! Надо послать одну строчку!  smile  
PM MAIL   Вверх
Poseidon
Дата 20.5.2006, 11:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

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



Посылка одной строчки не отличается от посылки поэмы!

http://forum.vingrad.ru/index.php?act=modu...mp;section=1046 


--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
drkot
Дата 20.5.2006, 12:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ищущий
***


Профиль
Группа: Завсегдатай
Сообщений: 1042
Регистрация: 5.5.2006

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



sendmail(message); 


--------------------
Ошибка не становится истиной по причине широкого распространения,
как и Истина не становится Ошибкой из-за того, что никто её не видит.
PM   Вверх
Ярик
Дата 21.5.2006, 14:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



А если нужно отослать пару слов текста и адрес получателя всего лищь...

если есть возможность использовать "sendmail(message);", то можно пример!!! smile  
PM MAIL   Вверх
Albinos_x
Дата 21.5.2006, 15:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

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



пользуемся поиском:
http://forum.vingrad.ru/index.php?act=Sear...il&skipped= 


--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
ConstantinXXX
Дата 27.5.2006, 12:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 246
Регистрация: 27.5.2006
Где: U.S.A. :-)

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



Интересная тема. У меня проблемма с SMTP. Не могу найти нормальный. smile  
--------------------
Как вы относитесь к девушкам, которые курят сигареты?Как не ослепнуть за компьютером© ORENCODE.info
PM MAIL WWW   Вверх
drkot
Дата 29.5.2006, 16:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ищущий
***


Профиль
Группа: Завсегдатай
Сообщений: 1042
Регистрация: 5.5.2006

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



Цитата(ConstantinXXX @  27.5.2006,  12:49 Найти цитируемый пост)
Не могу найти нормальный.

это как? все глючные или что другое? 


--------------------
Ошибка не становится истиной по причине широкого распространения,
как и Истина не становится Ошибкой из-за того, что никто её не видит.
PM   Вверх
Aleksiem
Дата 30.5.2006, 23:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 57
Регистрация: 4.5.2006
Где: Выкса

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



Если нужно послать одну строчку, то использовать целый компонент это по-моему слишком, проще отправить через сокеты по протоколу SMTP. Вообщем RFC-821(по-моему) форева. Хотя если размер не критичен... 
PM MAIL ICQ   Вверх
RazIv
Дата 31.5.2006, 06:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Код

IdMessage1.Subject:='Тема';
IdMessage1.ReceipRecepient.Addres:='куда';
IdMessage1.ReceipRecepient.Name:='кому';
IdMessage1.From.Name:='от кого';
IdMessage1.From.Addres:='от куда';
IdMessage1.Body:='тело пистма';
IdSMTP1.Conect();
IdSMTP1.Autentificate;
IdSMTP1.SendMsg(IdMessage1);
IdSMTP1.Disconect;
 
PM MAIL   Вверх
LadyOfWood
Дата 31.5.2006, 21:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Небольшой код, отсылает в потоке, использует Indy.
Код

unit EMailThread;

interface

uses
  {VCL} Windows, Messages, SysUtils, Classes,
  {Indy} IdMessage, IdEMailAddress, IdAttachment, IdAttachmentMemory, IdText, 
  IdCoderHeader, IdCharsets, IdSMTP, IdSMTPRelay;

const
  WM_EMAILSENDSUCCESS = WM_USER + $1000;
  WM_EMAILSENDERROR = WM_USER + $1001;
  WM_EMAILTHREADDESTROY = WM_USER + $1002;

type
  TEMailThread = class(TThread)
  private
    FMessage: TIdMessage;
    FError: string;
    FMailAgent: string;
    FServers: TStringList;
    FHandle: HWnd;
  protected
    function SendMail: Boolean;
    procedure IdMessageInitializeISO(var VTransferHeader: TTransfer;
      var VHeaderEncoding: Char; var VCharSet: String);
  public
    constructor Create(AHandle: Hwnd; AFromMail, AFromName, AFromOrganization: string;
    ASubject: string; ACharset: TIdCharSet; ABody: TStrings; ARecipMail,
    ARecipName: string; ACCMail, ACCName: TStrings; AIsAttach: boolean;
    AAttachFile: string; AAttachStream: TMemoryStream);
    destructor Destroy; override;
    procedure Execute; override;
  end;

implementation

uses
  {ATD Base API} TestVersion;

function GetDNSList: TStringList;
type
  PIP_Addr = ^TIP_Addr;
  TIP_Addr = packed record
    Next: PIP_Addr;
    IpAddress: array[0..15] of char;
    Unused: array[0..19] of byte; // Unused bytes.
  end;

  PDNSInfo = ^TDNSInfo;
  TDNSInfo = packed record
    Unused0: array[0..267] of byte; // Unused bytes.
    DNSList: TIP_Addr;
    Unused1: array[0..275] of byte; // Unused bytes.
  end;
var
  IpHlpModule: THandle;
  DNSInfo: PDNSInfo;
  Size: DWord;
  PDNS: PIP_Addr;
  err: Integer;
  GetNetworkParams: function(Info: PDNSInfo; pLen: PDWord): DWord; stdcall;

  function IsValidDNS(const IP: string): Boolean;
  begin
    Result := (Trim(IP) <> '0.0.0.0') and (Trim(IP) <> '');
  end;

  procedure AddDNS(const IP: string);
  begin
    if (IsValidDNS(IP)) then Result.Add(IP);
  end;

begin
  Result := TStringList.Create;
  Size := 0;
  IpHlpModule := LoadLibrary('IPHLPAPI.DLL');
  if (IpHlpModule <> 0) then
  try
    GetNetworkParams := GetProcAddress(IpHlpModule, 'GetNetworkParams');
    if (@GetNetworkParams <> nil) then
    begin
      err := GetNetworkParams(nil, @Size);
      if (err = ERROR_BUFFER_OVERFLOW) then
      begin
        GetMem(DNSInfo, Size);
        try
          err := GetNetworkParams(DNSInfo, @Size);
          if (err = ERROR_SUCCESS) then
            with DNSInfo^ do
            begin
              AddDNS(DNSList.IpAddress);
              PDNS := DNSList.Next;
              while PDNS <> nil do
              begin
                AddDNS(PDNS^.IPAddress);
                PDNS := PDNS.Next;
              end;
            end;
        finally
          FreeMem(DNSInfo);
        end;
      end;
    end;
  finally
    FreeLibrary(IpHlpModule);
  end;
  if Result.Count = 0 then AddDNS('193.121.171.135'); // An alternative DNS server.
end;

{ TEMailThread }

constructor TEMailThread.Create(AHandle: HWnd; AFromMail, AFromName,
  AFromOrganization: string; ASubject: string; ACharset: TIdCharSet; ABody: TStrings;
  ARecipMail, ARecipName: string; ACCMail, ACCName: TStrings; AIsAttach: boolean;
  AAttachFile: string; AAttachStream: TMemoryStream);
var
  I: integer;
  FMail: TIdEMailAddressItem;
  FAttach: TIdAttachmentMemory;
  FText: TIdText;
begin
  inherited Create(false);
  FreeOnTerminate := true;
  FHandle := AHandle;
  FError := '';
  FMailAgent := sATS + ' (version ' + GetATSVerShort + ')';

  FMessage := TIdMessage.Create(nil);
  FMessage.OnInitializeISO := IdMessageInitializeISO;
  FMessage.Encoding := meMIME;
  FMessage.CharSet := IdCharsetNames[ACharset];
  FMessage.ContentTransferEncoding := 'base64';
  FMessage.From.Address := AFromMail;
  FMessage.From.Name := AFromName;
  FMessage.Sender.Address := AFromMail;
  FMessage.Sender.Name := AFromName;
  with FMessage.ReplyTo.Add do
  begin
    Address := AFromMail;
    Name := AFromName;
  end;
  FMessage.Organization := AFromOrganization;
  FMessage.Subject := ASubject;
  FMessage.Priority := mpNormal;

  with FMessage.Recipients.Add do
  begin
    Address := ARecipMail;
    Name := ARecipName;
  end;

  if Assigned(ACCMail) and Assigned(ACCName) and (ACCMail.Count = ACCName.Count) then
    for I := 0 to ACCMail.Count - 1 do
    with FMessage.CCList.Add do
    begin
      Address := ACCMail.Strings[I];
      Name := ACCName.Strings[I];
    end;

  if AIsAttach then
  begin
    FText := TIdText.Create(FMessage.MessageParts, ABody);
    FText.CharSet := IdCharsetNames[ACharset];
    FText.ContentTransfer := 'base64';

    AAttachStream.Position := 0;
    FAttach := TIdAttachmentMemory.Create(FMessage.MessageParts, AAttachStream);
    FAttach.FileName := AAttachFile;
  end
  else
    FMessage.Body.AddStrings(ABody);
end;

procedure TEMailThread.IdMessageInitializeISO(var VTransferHeader: TTransfer;
  var VHeaderEncoding: Char; var VCharSet: String);
begin
  VCharset := FMessage.CharSet;
end;

destructor TEMailThread.Destroy;
begin
  PostMessage(FHandle, WM_EMAILTHREADDESTROY, 0, 0);
  FMessage.Free;
  inherited Destroy;
end;

procedure TEMailThread.Execute;
var
  I: integer;
begin
  FServers := GetDNSList;
  try
    if SendMail then
      PostMessage(FHandle, WM_EMAILSENDSUCCESS, 0, 0)
    else
      SendMessage(FHandle, WM_EMAILSENDERROR, integer(PChar(FError)), 0);
  finally
    FServers.Free;
  end;
end;

function TEMailThread.SendMail: Boolean;
var
  Sender: TIdSMTPRelay;
  I, J: integer;
begin
  Result := false;
  Sender := TIdSMTPRelay.Create;
  try
    with Sender do
    begin
      for I := 0 to FServers.Count - 1 do
      begin
        DNSServer := FServers.Strings[I];
        MailAgent := FMailAgent;
        try
          Connect;
          Send(FMessage);
          Disconnect;
          FError := '';
          Result := true;
          for J := 0 to Sender.StatusList.Count - 1 do
          begin
            Result := Result and Sender.StatusList.Items[J].Sent;
            if not Result then
            begin
              FError := Sender.StatusList.Items[J].ExceptionMessage;
              Break;
            end;
          end;
          if Result then Exit;
        except
          on E : Exception do
          begin
            if Connected then
              try
                Disconnect;
              except
              end;
            Result := false;
            FError := E.Message;
          end;
        end;
      end;
    end;
  finally
    Sender.Free;
  end;
end;

end.

 
PM MAIL   Вверх
ConstantinXXX
Дата 1.6.2006, 03:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 246
Регистрация: 27.5.2006
Где: U.S.A. :-)

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



drkot, На все долбанная аунтификация. smile  
--------------------
Как вы относитесь к девушкам, которые курят сигареты?Как не ослепнуть за компьютером© ORENCODE.info
PM MAIL WWW   Вверх
drkot
Дата 1.6.2006, 09:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ищущий
***


Профиль
Группа: Завсегдатай
Сообщений: 1042
Регистрация: 5.5.2006

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



Протокол SMTP предельно прост почитай rfc.
За это время можно было самому написать  smile  


--------------------
Ошибка не становится истиной по причине широкого распространения,
как и Истина не становится Ошибкой из-за того, что никто её не видит.
PM   Вверх
  
Закрытая темаСоздание новой темы Создание опроса
Правила форума "Delphi: Сети"
Snowy
Poseidon
MetalFan

Запрещено:

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

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

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

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

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


 




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


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

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