Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl: the Markov chain saw
 
PerlMonks  

Re^2: gmail sending in 2020

by iaw4 (Monk)
on Jan 29, 2020 at 21:34 UTC ( [id://11112047]=note: print w/replies, xml ) Need Help??


in reply to Re: gmail sending in 2020
in thread gmail sending in 2020

thanks, both of you. I will try it now. last time it was discussed was 4 years ago. sometimes, google changes stuff every other week, sometimes never. let's see if I can make it work. if so, I will post something here that summarizes it.

Replies are listed 'Best First'.
Re^3: gmail sending in 2020
by iaw4 (Monk) on Jan 29, 2020 at 22:21 UTC
    As of Jan 29, 2020, the following works.
    1. Turn off 2FA .
    2. on 'https://myaccount.google.com/security?pli=1#connectedapps', look for and allow Less secure app access
    3. on 'https://myaccount.google.com/lesssecureapps', same thing.
    4. use the slightly elaborated perl program:
    #!/usr/bin/env perl use strict; use warnings; use autodie; use Data::Dumper; my $gauthtxt= "gauth.txt"; # can define default sending user account +and password ## format: 'user\temail\npasswd\tstring\n' ################################################################ # parse inputs # defaults my %smtp= ( server => 'smtp.gmail.com', port => '587', subject => "tes +ting gmailer.pl", body => "gmail-tester $0: ".localtime() ); # more defaults in gauth.txt if (-e $gauthtxt) { print STDERR "[reading $gauthtxt]\n"; open(my $GA, "<", $gauthtxt); while (<$GA>) { chomp; (/^([a-z]+)\s+(.*)$/) or die "line in $gauthtxt is not pars +eable: $_\n"; $smtp{$1}= $2; } close($GA); } # command line arguments foreach (@ARGV) { foreach my $keyword (qw(user to passwd subject body)) { (/^$keyword= +(.*)/) and $smtp{$keyword}=$1; } } (exists{$smtp{from})) and $smtp{user}=$smtp{from}; ## special equivale +nce ################################################################ # check inputs foreach (qw(user to passwd subject body)) { exists($smtp{$_}) or die "'$_' needs to be in $gauthtxt or spcified +on command line with '$_=...'\n"; } use Email::Valid; (Email::Valid->address($smtp{user})) or die "your own user account $sm +tp{user} is not a valid email address"; (Email::Valid->address($smtp{to})) or die "your recipientd account $sm +tp{to} is not a valid email address"; ################################################################ # send email use Email::Sender::Simple qw(sendmail); use Email::Sender::Transport::SMTPS (); use Email::Simple (); use Email::Simple::Creator (); my $transport = Email::Sender::Transport::SMTPS->new({ host => $smtp{server}, port => $smtp{port}, ssl => "starttls", sasl_username => $smtp{user}, sasl_password => $smtp{passwd}, }); my $email = Email::Simple->create( header => [ To => $smtp{to}, From => $smtp{user}, Subject => $smtp{subject} ], body => $smtp{body}."\n", ); sendmail($email, { transport => $transport }); print "\nemail sent from $smtp{user} to $smtp{to}.\n";

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://11112047]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others examining the Monastery: (5)
As of 2024-04-26 09:30 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found