@@ -1354,10 +1354,12 @@ sub send_message {
13541354 die __(" The required SMTP server is not properly defined." )
13551355 }
13561356
1357+ require Net::SMTP;
1358+ my $use_net_smtp_ssl = version-> parse($Net::SMTP::VERSION ) < version-> parse(" 1.28" );
1359+ $smtp_domain ||= maildomain();
1360+
13571361 if ($smtp_encryption eq ' ssl' ) {
13581362 $smtp_server_port ||= 465; # ssmtp
1359- require Net::SMTP::SSL;
1360- $smtp_domain ||= maildomain();
13611363 require IO::Socket::SSL;
13621364
13631365 # Suppress "variable accessed once" warning.
@@ -1369,34 +1371,48 @@ sub send_message {
13691371 # Net::SMTP::SSL->new() does not forward any SSL options
13701372 IO::Socket::SSL::set_client_defaults(
13711373 ssl_verify_params());
1372- $smtp ||= Net::SMTP::SSL-> new($smtp_server ,
1373- Hello => $smtp_domain ,
1374- Port => $smtp_server_port ,
1375- Debug => $debug_net_smtp );
1374+
1375+ if ($use_net_smtp_ssl ) {
1376+ require Net::SMTP::SSL;
1377+ $smtp ||= Net::SMTP::SSL-> new($smtp_server ,
1378+ Hello => $smtp_domain ,
1379+ Port => $smtp_server_port ,
1380+ Debug => $debug_net_smtp );
1381+ }
1382+ else {
1383+ $smtp ||= Net::SMTP-> new($smtp_server ,
1384+ Hello => $smtp_domain ,
1385+ Port => $smtp_server_port ,
1386+ Debug => $debug_net_smtp ,
1387+ SSL => 1);
1388+ }
13761389 }
13771390 else {
1378- require Net::SMTP;
1379- $smtp_domain ||= maildomain();
13801391 $smtp_server_port ||= 25;
13811392 $smtp ||= Net::SMTP-> new($smtp_server ,
13821393 Hello => $smtp_domain ,
13831394 Debug => $debug_net_smtp ,
13841395 Port => $smtp_server_port );
13851396 if ($smtp_encryption eq ' tls' && $smtp ) {
1386- require Net::SMTP::SSL;
1387- $smtp -> command(' STARTTLS' );
1388- $smtp -> response();
1389- if ($smtp -> code == 220) {
1397+ if ($use_net_smtp_ssl ) {
1398+ $smtp -> command(' STARTTLS' );
1399+ $smtp -> response();
1400+ if ($smtp -> code != 220) {
1401+ die sprintf (__(" Server does not support STARTTLS! %s " ), $smtp -> message);
1402+ }
1403+ require Net::SMTP::SSL;
13901404 $smtp = Net::SMTP::SSL-> start_SSL($smtp ,
13911405 ssl_verify_params())
1392- or die " STARTTLS failed! " .IO::Socket::SSL::errstr();
1393- $smtp_encryption = ' ' ;
1394- # Send EHLO again to receive fresh
1395- # supported commands
1396- $smtp -> hello($smtp_domain );
1397- } else {
1398- die sprintf (__(" Server does not support STARTTLS! %s " ), $smtp -> message);
1406+ or die sprintf (__(" STARTTLS failed! %s " ), IO::Socket::SSL::errstr());
1407+ }
1408+ else {
1409+ $smtp -> starttls(ssl_verify_params())
1410+ or die sprintf (__(" STARTTLS failed! %s " ), IO::Socket::SSL::errstr());
13991411 }
1412+ $smtp_encryption = ' ' ;
1413+ # Send EHLO again to receive fresh
1414+ # supported commands
1415+ $smtp -> hello($smtp_domain );
14001416 }
14011417 }
14021418
0 commit comments