RSS Git Download  Clone
Raw Blame History
package Local::Email;

# this works, but replaced with Local::SendGrid

use v5.26;

use Email::Stuffer;
use Data::Printer;
use Try::Tiny;
use IO::All;

my $api_key = io('/home/raj/.local/sendgrid_api_key')->slurp 
	|| die 'no api key'; # say $api_key;
# default e-mail to/from (requires separate 'chomp' - wtf???):
my $self_addr = io('/home/raj/.local/email_address')->slurp
	|| die 'no default email addess'; chomp($self_addr); # say $self_addr; exit;

my $username  = 'apikey';
my $password  = $api_key;
my $host      = 'smtp.sendgrid.net';
my $port      = 587;

my %transport = (
    sasl_username => $username,
    sasl_password => $password,
    host => $host,
    port => $port, # automatically picked up from ssl/starttls/none
    debug => 0, # maybe over-ridden in plain_text()
    starttls => 1,
    ssl => 0,
);

sub plain_text {
    my $args = shift;

	$transport{debug} = $args->{debug};
	
	my $email = Email::Stuffer
		->to($args->{recipient} || $self_addr)
		->from($args->{sender} || $self_addr)
		->subject($args->{subject})
		->text_body($args->{message})
		->transport(SMTP => \%transport); # p $email;
	
    try { $email->send_or_die } # uses Email::Sender::Simple (localhost/25 default)
    catch { # warn $_;
        # capture all before stack trace (Email::Sender::Failure object):
        if ( my ($msg) = $_ =~ /(.*)Trace begun/s ) { # warn $msg;
            chomp $msg; # remove empty line
            die "Local::Email::send() failed: $msg";
        }
    }
 }

sub email_file { } # see RWGPS::Mail for details

1;