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 = '[email protected]';
my $toAddr = '[email protected]';
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: [email protected] <[email protected]>
Sent: Sunday, July 9, 2023 10:41 AM
To: Perl Beginners <[email protected]>
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 <[email protected]> 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
>> [email protected] <mailto:[email protected]>.)
>>
>> 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 = '[email protected]';
>> my $from = '[email protected]';
>> 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 = '[email protected]'; #was my $to = shift;
>> my $from = '[email protected]';
>> 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: [email protected]
For additional commands, e-mail: [email protected]
http://learn.perl.org/