problem sending mail from localhost with phpmailer

1

I have installed PHP v5.6.25 (I use the 64x version) and wampserver v3.0.6, Apache 2.4.23. I've made some port modifications since I've followed several tutorials on YouTube but I do not remember which lines I've modified on a regular basis.

File php.ini www.dropbox.com/s/vnoxv38qqa67oez/php.ini?dl=0

I am trying to make a mailing system using phpmailer, using as host "smtp.gmail.com" I have enabled access to less secure applications from my gmail account (myaccount.google.com/lesssecureapps).

My PHP file is as follows:

<?php
// This example shows settings to use when sending via Google's Gmail servers.
//

//SMTP needs accurate times, and the PHP time zone MUST be set
//This should be done in your php.ini, but this is how to do it if you don't have access to that
date_default_timezone_set('Etc/UTC');

require 'PHPMailer/PHPMailerAutoload.php';

//Create a new PHPMailer instance
$mail = new PHPMailer;

//Tell PHPMailer to use SMTP
$mail->isSMTP();

//Enable SMTP debugging
// 0 = off (for production use)
// 1 = client messages
// 2 = client and server messages
$mail->SMTPDebug = 2;

//Ask for HTML-friendly debug output
$mail->Debugoutput = 'html';

//Set the hostname of the mail server
$mail->Host = 'smtp.gmail.com';
// use
// $mail->Host = gethostbyname('smtp.gmail.com');
// if your network does not support SMTP over IPv6

//Set the SMTP port number - 587 for authenticated TLS, a.k.a. RFC4409 SMTP submission
$mail->Port = 587;

//Set the encryption system to use - ssl (deprecated) or tls
$mail->SMTPSecure = 'tls';

//Whether to use SMTP authentication
$mail->SMTPAuth = true;

//Username to use for SMTP authentication - use full email address for gmail
$mail->Username = "*******@gmail.com";

//Password to use for SMTP authentication
$mail->Password = "+++++++++";

//Set who the message is to be sent from
$mail->setFrom('[email protected]', 'No responder');

//Set an alternative reply-to address
//$mail->addReplyTo('[email protected]', 'First Last');

//Set who the message is to be sent to
$mail->addAddress('*********@gmail.com', 'Nombre Destinatario');

//Set the subject line
$mail->Subject = 'PHPMailer GMail SMTP test';

$nombre='Federico Lorca';
//Read an HTML message body from an external file, convert referenced images to embedded,
//convert HTML into a basic plain-text alternative body
$mail->Body = "<h1>Prueba de correo</h1><br><br>Mensaje de prueba enviado por {$nombre} con phpmailer en formato html<br>";

//Replace the plain text body with one created manually
$mail->AltBody = 'This is a plain-text message body';

//Attach an image file
//$mail->addAttachment('images/phpmailer_mini.png');

//send the message, check for errors
if (!$mail->send()) {
    echo "Mailer Error: " . $mail->ErrorInfo;
    } else {
    echo "Message sent!";
}  ?>

Displays the following error:

    
asked by Fede Lorca 05.04.2017 в 16:13
source

3 answers

0

As of PHP 5.2.10, when we try to use PHPMailer without having a valid certificate we will be entitled to an error similar to this:

  

Warning: stream_socket_enable_crypto (): SSL operation failed with code   1. OpenSSL Error messages: error: 14090086: SSL routines: SSL3_GET_SERVER_CERTIFICATE: certificate verify failed

and of course, our code will not work.

How to solve this problem?

The best solution would be to have a valid certificate.

But when this is not possible, you can add the following to our code:

$mail->SMTPOptions = array(
    'ssl' => array(
        'verify_peer' => false,
        'verify_peer_name' => false,
        'allow_self_signed' => true
    )
);

Another possible solution given by the creators of PHP Mailer is to create our own custom class, of which show an example on this link .

Wrong solutions

Do not touch the file php.ini to make PHPMailer stop giving this error. Since PHP has its reasons for becoming more demanding regarding SMTP certificates. But that's another story ...

  

You can also change these settings globally in your php.ini, but   that's a really bad idea; PHP 5.6 made this change for very good   reasons.

    
answered by 05.04.2017 / 16:41
source
0

Add the following command to the parameters, maybe this will be solved.

$mail->Helo('www.gmail.com');
    
answered by 05.04.2017 в 16:19
0

Where should I insert this code? $ mail-> SMTPOptions = array ('ssl' = > array ('verify_peer' = > false, 'verify_peer_name' => false, 'allow_self_signed' => true));

    
answered by 18.06.2018 в 17:36