Мне нужно отправлять письма, используя Delphi7 и компонент Indy10 TIdSMTP;почта должна быть отправлена на сервер итальянской налоговой инспекции.
Я использовал простой компонент MAPI для отправки электронных писем, но теперь необходимо использовать компоненты Indy, но я их не знаю.
Я пытаюсь создать программу следующим образом:
procedure TForm1.BtCreateClick(Sender: TObject);
var
DATA : TIdMessage;
SMTP : TIdSMTP;
SSL : TIdSSLIOHandlerSocketOpenSSL;
begin
try
SMTP := TIdSMTP.Create(nil);
DATA := TIdMessage.Create(nil);
SSL := TIdSSLIOHandlerSocketOpenSSL.Create(nil);
SSL.SSLOptions.Method := sslvTLSv1;
SSL.SSLOptions.Mode := sslmClient; // or sslmUnassigned ?
SSL.SSLOptions.VerifyMode := [];
SSL.SSLOptions.VerifyDepth := 0;
DATA.From.Address := eUser.Text; // 'my.name@pec.it'
DATA.Recipients.EMailAddresses := eDest.Text; // 'recipient@pec.it'
DATA.Subject := eOggetto.Text; // 'dispatch of test'
DATA.Body.Text := eCorpo.Lines.Text; // ' Isend a mail from "pec" client to "ord" server)
if (eAlleg.Text <> '') and FileExists(eAlleg.Text) then
TIdAttachmentFile.Create(DATA.MessageParts, eAlleg.Text);
SMTP.IOHandler := SSL;
SMTP.UseTLS := utUseExplicitTLS;
SMTP.Host := eHost.Text; // 'imaps.pec.aruba.it';
SMTP.Port := StrToInt(ePorta.Text); // 993 ;
SMTP.Username := eUser.Text; // 'my.name@pec.it'
SMTP.Password := ePassw.Text; // 'my_password_123'
// SMTP.SASLMechanisms; // no
try
try
SMTP.Connect;
SMTP.Send(DATA);
except
on E:Exception do
ShowMessage('Non posso spedire E-Mail: ' + E.Message);
end;
finally
if SMTP.Connected then SMTP.Disconnect;
end;
except
on E : Exception do
ShowMessage('Errore durante la spedizione del file: ' + E.Message);
end;
end;
Я вставил «libeay32.dll» и «ssleay32.dll» в каталог \ Windows \ System32 (rel: openssl1.0.2q).
После щелчка кажется, что письмо отправлено, появляется кружок (screen.Hourglass), но любое последующее действие (loop?).Нет сообщения об ошибке.
Я считаю, что это проблема рукопожатия, некоторые свойства не переданы клиентом.TIdSSLIOHandlerSocketOpenSSL'setup является неполным?
Я признаю, что документация Indy слишком сложна и отнимает много времени, у меня нет правильных знаний, чтобы понять использование различных свойств.
Может ли кто-нибудь указать мне, почему программа не работает?