ГоловнаКаталогБлогРейтингЕ-Пошта 
 
 
Зробити домашньою у вибране  

  Відповісти  

  Попередні відповіді  
Joe
Робочий приклад для використання SMTP-серверу Gmail (друга функція)

Delphi

uses ssl_openssl, smtpsend, mimemess, mimepart;

function SendMyEmail_SSL2(const MailFrom, MailTo, SMTPHost, SMTPPort: string; const MailData: TStrings; const Username, Password: string): Boolean;
var
  SMTP: TSMTPSend;
  s, t: string;
  msg_lines: TStringList;
  tmpStream: TStream;
  m:TMimemess;
  l:tstringlist;
  p: TMimepart;
begin
  Result := False;
  SMTP := TSMTPSend.Create;
  try
    SMTP.TargetHost := SMTPHost;
    SMTP.TargetPort := SMTPPort;
    SMTP.Username := Username;
    SMTP.Password := Password;
    SMTP.FullSSL:= true;
    if SMTP.Login then
      begin
        try
          if not smtp.Login() then
            ShowMessage('SMTP ERROR: Login:' + smtp.EnhCodeString);
          if not smtp.MailFrom(MailFrom, Length(MailFrom)) then
            ShowMessage('SMTP ERROR: MailFrom:' + smtp.EnhCodeString+#13#10+IntTostr(smtp.Sock.lasterror)+#13#10+IntToStr(smtp.sock.ssl.lasterror)+#13#10+smtp.sock.ssl.LastErrorDesc);
          if not smtp.MailTo(MailTo) then
            ShowMessage('SMTP ERROR: MailTo:' + smtp.EnhCodeString);
          if not smtp.MailData(MailData) then
            ShowMessage('SMTP ERROR: MailData:' + smtp.EnhCodeString);
          if not smtp.Logout() then
            ShowMessage('SMTP ERROR: Logout:' + smtp.EnhCodeString);
        except on E: Exception do
          begin
            ShowMessage('Unknown error!');
          end;
       end;
      end
    else
        ShowMessage('Login failed!');
  finally
    SMTP.Free;
  end;
end;

procedure SendGmail(address, theme:string; messageBody:TStrings=nil; attachment:string='');
var
  m:TMimemess;
  p: TMimepart;
begin
  m:=TMimemess.create;
  try
    p := m.AddPartMultipart('mixed', nil);
    if messageBody<>nil then
      m.AddPartText(messageBody, p);
    if attachment<>'' then
      m.AddPartBinaryFromFile(attachment, p);
    m.header.tolist.add(address);
    m.header.subject:=theme;
    m.EncodeMessage;
    SendMyEmail_SSL2(m.header.from, address, 'smtp.Gmail.com', '465', m.lines, 'user@gmail.com', 'passwordmail');
  finally
    m.free;
  end;
end;
 
Sekure
А можна робочий приклад використання synapse? Не можу розібратися.
Joe
Є ще бібліотека synapse/ Досить хороша.
http://www.ararat.cz/synapse/doku.php
Sekure
Щось у мене Indy глючить - викидає постійно помилку "Could not load SSL library". Та я й чув, що з ним постійно якісь проблеми постійно виникають.

А нема нічого іншого для відправки e-mail?
Joe
Кидаєш на форму компоненти

         - idSMTP1 (TidSMTP)
         - IdSSLIOHandlerSocket1 (TIdSSLIOHandlerSocket)
         - IdMessege1 (TIdMessage)
         - Memo1, Memo2, Memo3 (TMemo)
         - TButton

В них прописуєш такі властивості

  object IdSMTP1: TIdSMTP
    IOHandler = IdSSLIOHandlerSocket1
    MaxLineAction = maException
    Host = 'smtp.gmail.com'
    Port = 465
    AuthenticationType = atLogin
    Password = 'пароль'
    Username = 'юзер@gmail.com'
  end

  object IdSSLIOHandlerSocket1: TIdSSLIOHandlerSocket
    SSLOptions.Method = sslvSSLv2
    SSLOptions.Mode = sslmUnassigned
    SSLOptions.VerifyMode = []
    SSLOptions.VerifyDepth = 0
  end

Потім в коді відправка виглядає приблизно таким чином
Delphi

  IdMessage1.From.Address := 'мило';
  IdMessage1.Recipients.EMailAddresses := 'власне мило';
  IdMessage1.Subject := 'Subject';
  IdMessage1.Body.Text := 'Test body';
  IdSMTP1.Connect();

  try
    IdSMTP1.Send(IdMessage1);
  finally
    IdSMTP1.Disconnect;
  end;
 
Sekure
Якими компонентами можна відправляти файли електронною поштою в Delphi?


  Логін:
  Пароль:
Книга Фріланс на західному ринку
Книга Фріланс на західному ринку

APServer | SiMan CMS | Лічильник відвідувань | Тека сайтів | Рейтинг | Форум | Download | Шаблони сторінок | Посібник Smarty | Підручник PHP | Статті/Огляди