donboe
June 29, 2018, 10:05am
1
I use the following function for sending e-mail using PHPMailer:
public function test_emailAction()
{
require_once (APP_PATH.'/lib/PHPMailer/src/PHPMailer.php');
require_once (APP_PATH.'/lib/PHPMailer/src/Exception.php');
require_once (APP_PATH.'/lib/PHPMailer/src/SMTP.php');
$account= "email@gmail.com";
$password= "**********";
$from_email= "from_email@gmail.com";
$from_name= "from_name";
$to_email= "to_email@gmail.com";
$to_name= "to_name";
$subject="Test subject";
$msg="Test message";
$mail = new PHPMailer(true);
$mail->IsSMTP();
$mail->SMTPDebug = 0;
$mail->CharSet = 'UTF-8';
$mail->Host = "smtp.gmail.com";
$mail->SMTPAuth= true;
$mail->Port = 465;
$mail->Username= $account;
$mail->Password= $password;
$mail->SMTPSecure = 'ssl';
//Recipients
$mail->setFrom($from_email, $from_name);
$mail->addAddress($to_email, $to_name);
//Content
$mail->isHTML(true);
$mail->Subject = $subject;
$mail->Body = $msg;
if(!$mail->send()){
echo "Mailer Error: " . $mail->ErrorInfo;
}else{
echo "E-Mail has been sent";
}
}
The function is within a class. Above/outside of the class I have:
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;
but I get the following error message:
Fatal error: Uncaught PHPMailer\PHPMailer\Exception: SMTP Error: Could not authenticate. in
When I use Port 587 instead of Port 465 the error message is:
Fatal error: Uncaught PHPMailer\PHPMailer\Exception: SMTP connect() failed.
What am I doing wrong? Thank you in advance
The only sample code I found quickly for this seemed to use port 587, but also use “tls” for `SMTPSecure" rather than ssl as you have it.
You had to go to myaccount.google.com → “Sign-in & security” → “Apps with account access”, and turn “Allow less secure apps” to “ON” (near the bottom of the page).
1 Like
rpkamp
June 29, 2018, 1:33pm
4
Definitely don’t do that! Why would you allow less secure apps when you can also make the current app more secure by changing ssl
to tls
as @droopsnoot suggests?
1 Like
donboe
June 29, 2018, 1:49pm
5
rpkamp:
tls
@droopsnoot & @rpkamp I adjusted it (used tls instead off ssl)
$mail->SMTPSecure = 'tls';
as you both suggested, but still an error. This is the complete error :
Fatal error: Uncaught PHPMailer\PHPMailer\Exception: SMTP Error: Could not connect to SMTP host. in /home/donalug212/domains/donaldboers.nl/private/lib/PHPMailer/src/PHPMailer.php:1914 Stack trace: #0 /home/donalug212/domains/donaldboers.nl/private/lib/PHPMailer/src/PHPMailer.php(1741): PHPMailer\PHPMailer\PHPMailer->smtpConnect(Array) #1 /home/donalug212/domains/donaldboers.nl/private/lib/PHPMailer/src/PHPMailer.php(1497): PHPMailer\PHPMailer\PHPMailer->smtpSend('Date: Fri, 29 J...', '<strong>This is...') #2 /home/donalug212/domains/donaldboers.nl/private/lib/PHPMailer/src/PHPMailer.php(1336): PHPMailer\PHPMailer\PHPMailer->postSend() #3 /home/donalug212/domains/donaldboers.nl/private/includes/classes/Controller/Page.php(144): PHPMailer\PHPMailer\PHPMailer->send() #4 /home/donalug212/domains/donaldboers.nl/private/includes/classes/Router.php(67): Controller_Page->test_emailAction(Array) #5 /home/donalug212/domains/donaldboers.nl/private/includes/classes/Router.php(48): Router->dispatch(Array) #6 /home/donalug212/domains/ in /home/donalug212/domains/donaldboers.nl/private/lib/PHPMailer/src/PHPMailer.php on line 1914
rpkamp
June 29, 2018, 1:53pm
6
The example for GMail by PHPMailer suggests to use port 587
instead of 465
donboe
June 29, 2018, 2:05pm
7
@rpkamp Adjusted that as well and now I get the Could not authenticate error:
Fatal error: Uncaught PHPMailer\PHPMailer\Exception: SMTP Error: Could not authenticate. in /home/donalug212/domains/donaldboers.nl/private/lib/PHPMailer/src/PHPMailer.php:1927 Stack trace: #0 /home/donalug212/domains/donaldboers.nl/private/lib/PHPMailer/src/PHPMailer.php(1741): PHPMailer\PHPMailer\PHPMailer->smtpConnect(Array) #1 /home/donalug212/domains/donaldboers.nl/private/lib/PHPMailer/src/PHPMailer.php(1497): PHPMailer\PHPMailer\PHPMailer->smtpSend('Date: Fri, 29 J...', '<strong>This is...') #2 /home/donalug212/domains/donaldboers.nl/private/lib/PHPMailer/src/PHPMailer.php(1336): PHPMailer\PHPMailer\PHPMailer->postSend() #3 /home/donalug212/domains/donaldboers.nl/private/includes/classes/Controller/Page.php(144): PHPMailer\PHPMailer\PHPMailer->send() #4 /home/donalug212/domains/donaldboers.nl/private/includes/classes/Router.php(67): Controller_Page->test_emailAction(Array) #5 /home/donalug212/domains/donaldboers.nl/private/includes/classes/Router.php(48): Router->dispatch(Array) #6 /home/donalug212/domains/donaldbo in /home/donalug212/domains/donaldboers.nl/private/lib/PHPMailer/src/PHPMailer.php on line 1927
donboe
June 29, 2018, 2:41pm
8
@rpkamp & @droopsnoot . Got is working. I commentet out IsSMTP
//$mail->IsSMTP();
Not sure if it has any adverse consequences but it is working
system
Closed
September 28, 2018, 9:42pm
9
This topic was automatically closed 91 days after the last reply. New replies are no longer allowed.