Hi Rick,

We use Net::SMTP to send emails via SendGrid.  They require a user/pass 
authentication over SSL and I wonder if that is what is going wrong in your 
case.  The other thing worth doing is checking the return-value of each SMTP 
call as something may be going wrong silently.

Below is a fragment of our code that does (a) authentication and (b) checks 
each value.  I hope it assists.

Cheers,

Claude.

use strict;
use Carp;
use Net::SMTP;

use constant SMTP_HOST => 'smtp.sendgrid.net';
use constant SMTP_PORT => 465;
use constant SMTP_USER => 'the-username';
use constant SMTP_PASS => 'the-password';
use constant SMTP_TIMEOUT => 15;
use constant SMTP_DEBUG => 0;

my $smtp = Net::SMTP->new(
        Host => SMTP_HOST,
        Port => SMTP_PORT,
        Timeout => SMTP_TIMEOUT,
        SSL => 1,
        Debug => SMTP_DEBUG);

my $fromAddr = 'whowe...@somehwere.com';
my $toAddr = 'whoe...@somewhere.com';
my $theBody = 'the mail headers and body of the email';

$smtp->auth(SMTP_USER, SMTP_PASS) or confess "SMTP auth: " . $smtp->message();
$smtp->mail($fromAddr)            or confess "SMTP mail: " . $smtp->message();
$smtp->to($toAddr)                or confess "SMTP to: " . $smtp->message();
$smtp->data()                     or confess "SMTP data: " . $smtp->message();
$smtp->datasend($theBody)         or confess "SMTP datasend: " . 
$smtp->message();
$smtp->dataend()                  or confess "SMTP dataend: " . 
$smtp->message();
$smtp->quit()                     or confess "SMTP quit: " . $smtp->message(); 
--
Claude.


-----Original Message-----
From: p...@reason.net <p...@reason.net> 
Sent: Sunday, July 9, 2023 10:41 AM
To: Perl Beginners <beginners@perl.org>
Subject: Re: configuring Net::SMTP

CAUTION: This email originated from outside of the organization. Do not click 
links or open attachments unless you recognize the sender and know the content 
is safe.

Thanks, Andinus. This is useful information. — Rick

> On Jul 8, 2023, at 10:11 AM, Andinus <andi...@nand.sh> wrote:
>
>
> Hello Rick,
>
> Hostgator might be able to provide you more information regarding why
> the email delivery is failing. I'm not very familiar with mail stuff.
>
> You can also try NET::SMTP->new(Debug => 1) and send an email, it might
> provide useful info.
>
> Maybe this answer on stackoverflow might be helpful
> https://stackoverflow.com/a/10008814
>
> Have a good day!
>
> Rick T @ 2023-07-08 08:37 -07:
>
>> I have two subroutines (below) in a program that uses Net::SMTP. I’ve
>> recently moved my site from FutureQuest.net <http://futurequest.net/>
>> to Hostgator.com <http://hostgator.com/>, and this part of my program
>> has stopped working. The first routine sends an analysis of a test to
>> me at Reason.net <http://reason.net/>, and the second send a score to
>> several addresses associated with the student. On my new host at
>> Hostgator both fail to do this. (One of the “technicians” at Hostgator
>> said he found my email, so one or both likely arrived at
>> webmas...@hostgator.com <mailto:webmas...@hostgator.com>.)
>>
>> I am not trained in computer tech; I’m just a 78 year old high school
>> teacher who bought a few books on perl, so I don’t really understand
>> how to fill in the many variable assignments that make up most of
>> these two routines. Instead I took guesses and tried stuff to see
>> what would happen. If any of you have suggestions or corrections, I’d
>> be grateful!
>>
>> Rick Triplett
>>
>> FIRST SUBROUTINE:
>>
>> sub email_analysis {    # to LibertyLearning for score posting and analysis
>>    my $n_max = shift;
>>    my @analysis = define_analysis($n_max);
>>
>>    my $subject_line
>>        = "$pf{percent_correct_final} $pf{name_full} $course_file\n";
>>
>>    # Send administration an email of statistical analysis
>>    my $to            = 'socra...@reason.net';
>>    my $from          = 'webmas...@libertylearning.com';
>>    my $site          = 'libertylearning.com';
>>    my $smtp_host     = 'mail.libertylearning.com';
>>
>>    my $smtp  = Net::SMTP->new( $smtp_host, Hello => $site );
>>    $smtp->mail($from);
>>    $smtp->to($to);
>>    $smtp->data();
>>        $smtp->datasend("From: webmaster\@LibertyLearning.com\n");
>>        $smtp->datasend("To: $to\n");
>>        $smtp->datasend("Date: $pf{ date_ended }\n");
>>        $smtp->datasend("Subject: $subject_line\n");
>>        $smtp->datasend("\n");
>>        $smtp->datasend("$student_id\n");
>>        $smtp->datasend("$pf{percent_correct_final}\n");
>>        $smtp->datasend("squandered: $pf{percent_squandered}\%\n");
>>        $smtp->datasend("if tried: $pf{if_tried}\%\n");
>>        $smtp->datasend("string_of_wrongs: $pf{string_of_wrongs}\n");
>>        foreach (@analysis) {$smtp->datasend("$_\n")};
>>    $smtp->dataend();
>>    $smtp->quit;
>>    return;
>> }
>>
>> SECOND SUBRUTINE:
>>
>> sub email_mentors {
>>    my $message   = shift;
>>    my $to            = 'socra...@reason.net'; #was my $to = shift;
>>    my $from  = 'webmas...@libertylearning.com';
>>    my $site  = 'libertylearning.com';
>>    my $smtp_host = 'mail.LibertyLearning.com';
>>
>>    my $smtp      = Net::SMTP->new( $smtp_host, Hello => $site );
>>    $smtp->mail($from);
>>    $smtp->to($to);
>>    $smtp->data();
>>        $smtp->datasend("From: no_reply\@LibertyLearning.com\n");
>>        $smtp->datasend("To: $to\n");
>>        $smtp->datasend("Date: $pf{ date_ended }\n");
>>        $smtp->datasend("Subject: Test Results\n");
>>        $smtp->datasend("\n");
>>        $smtp->datasend("$message\n");
>>    $smtp->dataend();
>>    $smtp->quit;
>>
>>    return;
>> }


--
To unsubscribe, e-mail: beginners-unsubscr...@perl.org
For additional commands, e-mail: beginners-h...@perl.org
http://learn.perl.org/


Reply via email to