Michael Van Canneyt wrote 10 lines
Glad you got it working.
I worked for some time for a mass mailing company.
From that experience I assure you that delivering mail is NOT easy.
Meanwhile, there are a lot of safety mechanisms installed on all "big" mail
platforms, and getting a mail delivered becomes more and more difficult.
Michael.
Well, now I got stuck again...
I did all of my code testing on Windows because that is my normal environment.
When all was done I had created a mailsupport unit encapsulating the stuff I need for my emailings and I used that in a command line mailer to verify that everything worked OK.
Which it did on Windows except for some fussy mailservers who would not receive the emails (my GMail account), but the email was in any case sent.
But then when I moved to Linux (on Raspberry Pi3) I always got errors on mail send. So no outgoing email.
So I have now finally traced the execution using the Lazarus debugger and it seems like Synapse does not connect using SSL after all.. :(
I have set it up as well as I have understood the documentation with the smtp switches for SSL and TLS active (set to true) and the port and user is set as on Windows (after all I copied the source files over to the Linux box and opened the project in Lazarus over there). The test emailer has all of the logon etc info built into the executable (just for testing of course) but failed.
So when I single-step in the code I reach the following location after starting on SMTP.Connect:
function TSMTPSend.Connect: Boolean;
begin
FSock.CloseSocket;
FSock.Bind(FIPInterface, cAnyPort);
if FSock.LastError = 0 then
FSock.Connect(FTargetHost, FTargetPort);
if FSock.LastError = 0 then
if FFullSSL then
FSock.SSLDoConnect; //<= I get to here
Result := FSock.LastError = 0;
end;
procedure TTCPBlockSocket.SSLDoConnect;
begin
ResetLastError;
if not FSSL.Connect then //<=This goes to no action....
FLastError := WSASYSNOTREADY;
ExceptCheck;
end;
function TCustomSSL.Connect: boolean; //<= To here!
begin
ReturnError;
Result := False;
end;
Then I traced over into the ExceptCheck function:
procedure TBlockSocket.ExceptCheck;
var
e: ESynapseError;
begin
FLastErrorDesc := GetErrorDescEx; // <== HERE
if (LastError 0) and (LastError WSAEINPROGRESS)
and (LastError WSAEWOULDBLOCK) then
begin
DoStatus(HR_Error, IntToStr(FLastError) + ',' + FLastErrorDesc);
if FRaiseExcept then
begin
e := ESynapseError.Create(Format('Synapse TCP/IP Socket error %d: %s',
[FLastError, FLastErrorDesc]));
e.ErrorCode := FLastError;
e.ErrorMessage := FLastErrorDesc;
raise e;
end;
end;
end;
FLastErrorDesc gets set to "SSL/TLS support is not compiled"
So now I do not know what to do, is this indicating that I need to change some Synapse config to get it working or is it a platform problem (Linux)???
What could I do in order to make SSL/TLS support "compiled" In the documentation
http://www.ararat.cz/synapse/doku.php/public:howto:sslplugin
they write:
First you must explicitly select what plugin you wish to use. You can do it simply by adding unit with SSL plugin to your project sources. You can add only one from SSL plugins in one project! When you wish to use OpenSSL, then add /ssl_openssl/ to your project uses, for example.
And that is what I have done, it is listed in uses of my mailsupport source file as:
uses
Classes,
SysUtils,
smtpsend,
ssl_openssl, //<= Here
synautil,
mimemess,
mimepart;
Yet it is "not compiled"...
Very confusing.
Bo Berglund
Developer in Sweden