Sending emails through Gmail from Perl

Sending email through Perl can be done in many ways.  I like to simply call sendmail, but that approach is not always portable between operating systems.  For that, we use Net::SMTP.  But if you plan to send email via Gmail, normal plain ol’ port 25 SMTP won’t work.  For that, we need to switch to TLS/SSL with Authentication.

But first, let’s review what the Gmail settings are.

  • Server : smtp.gmail.com
  • Port : 587 for TLS, 465 for SSL
  • Username : Your full gmail account
  • Password : Your gmail password

You may load either module, Net::SMTP::TLS or Net::SMTP::SSL.  I did however encounter a few problems.

When using Net::SMTP::TLS, I had this error message:

invalid SSL_version specified at /usr/share/perl5/IO/Socket/SSL.pm line 575.

This happens on Ubuntu with IO::Socket::SSL at version 2.024 and Net::SMTP::TLS at version 0.12.  I do not have a solution for this, but there appears to be some incompatibility with these versions.  Net::SMTP::TLS was installed via apt-get.

I then reverted to Net::SMTP::SSL, but it did not work.  In fact, I got an error message emailed to me in Gmail.  It read as follow:

Someone just tried to sign in to your Google Account xxxxxxx@gmail.com from an app that doesn’t meet modern security standards.

We strongly recommend that you use a secure app, like Gmail, to access your account. All apps made by Google meet these security standards. Using a less secure app, on the other hand, could leave your account vulnerable. Learn more.

Google stopped this sign-in attempt, but you should review your recently used devices.

Typically, the error message doesn’t really tell me what I did wrong.  After a bit of digging, I found some articles explaining that Gmail is now requiring Oath 2.0 authentication, which sadly, Net::SMTP::SSL does not provide.

There is a solution.  You can change your Gmail settings to allow a less-secure login.  After I made this change, the module worked beautifully.  Ideally, you should be using Oath 2.0 instead.

 

Tags:

Leave a Reply

Your email address will not be published. Required fields are marked *