Hi,
Last time this was discussed (including Google setup step).
Hope this helps!
The way forward always starts with a minimal test.
| [reply] |
I tried the code in the post noted above without success (session error: 5.7.8 Username and Password not accepted. Learn more at...) (Windows 10) until ...
"As it turns out, there are TWO "Allow Less Secure Apps" toggles which need to be changed to allow logins from unknown devices/IMAP.
One here: https://myaccount.google.com/security?pli=1#connectedapps (bottom of the page)
And one here: https://www.google.com/settings/security/lesssecureapps
BOTH OF THESE GODFORSAKEN TOGGLES need to be changed to get rid of this error message."
See this stackoverflow post.
| [reply] |
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.
| [reply] |
#!/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";
| [reply] [d/l] |