|
Форуми -> Програмування -> Як відправляти файли електронною поштою в Delphi?
|
Якими компонентами можна відправляти файли електронною поштою в Delphi?
|
|
Кидаєш на форму компоненти
- 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
Потім в коді відправка виглядає приблизно таким чином
IdMessage1.From.Address := 'мило';
IdMessage1.Recipients.EMailAddresses := 'власне мило';
IdMessage1.Subject := 'Subject';
IdMessage1.Body.Text := 'Test body';
IdSMTP1.Connect();
try
IdSMTP1.Send(IdMessage1);
finally
IdSMTP1.Disconnect;
end;
|
|
Щось у мене Indy глючить - викидає постійно помилку "Could not load SSL library". Та я й чув, що з ним постійно якісь проблеми постійно виникають.
А нема нічого іншого для відправки e-mail?
|
|
А можна робочий приклад використання synapse? Не можу розібратися.
|
|
Робочий приклад для використання SMTP-серверу Gmail (друга функція)
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;
|
|
Книга Фріланс на західному ринку
|
|