Just to compare the modules you've proposed:
-
Net::SMTP::TLS - based on Net::SMTP, last update 2006. Will not work without bug fixes.
- These bug fixes are included in the successor Net::SMTP::TLS_ButMaintained, which isn't maintained anymore too (last release 2013). Apart from that this module disables certificate validation and this way opens you to man in the middle attacks.
-
Email::Send::SMTP::TLS - just uses Net::SMTP::TLS_ButMaintained and thus has the same problems (no certificate validation)
- Email::Send::Gmail - based on Net::SMTP::SSL which is just a hack into Net::SMTP (changes superclass to IO::Socket::SSL). Not maintained anymore, i.e. last update 2008.
- Email::Send::SMTP::Gmail - based on Net::SMTPS which again is based on Net::SMTP. Email::Send::SMTP::Gmail disables certificate validation by default too.
My recommendation: go with a recent version of Net::SMTP. This version has support for explicit and implicit SSL/TLS and also for IPv6. It also does proper certificate validation and validation is enabled by default. And it is a CORE module, although the version with SSL is only included starting with perl 5.22.0 (and still needs IO::Socket::SSL installed). With older versions you can either install the new libnet (which includes Net::SMTP), install Net::SSLGlue::SMTP which monkey patches Net::SMTP for SSL support or use Net::SMTPS which behaves similar (but not the same) to Net::SMTP with SSL support.
Since Net::SMTP cares only about the SMTP dialog you can still use Mime::Lite as you've used to be to construct the mail and then send it within the SMTP dialog with
$smtp->data($mime_lite->as_string).