SMTP электронная почта не работает в PHP - PullRequest
0 голосов
/ 28 апреля 2018

код:

<?php
    include 'library.php';
    include "classes/class.phpmailer.php";
    if(isset($_POST['submit']))
    {
        $email = $_POST['email'];

        $sql = "select email from login where email='".$email."'";
        $results = mysqli_query($con,$sql);
        $fetch = mysqli_num_rows($results);
        if($fetch > 0)
        {
            echo "<p id='red'>Email already exist. Please register with different email id.</p>";
        }
        else
        {
            $query = "insert into student_login(email)values('$email')";

            $result = mysqli_query($con,$query);
            if($result==true)
            {
                $information="hello everyone";
                $mail   = new PHPMailer;
                $mail->IsSMTP(); 
                $mail->Host = 'example.com';
                $mail->Port = 25;
                $mail->SMTPAuth = true;
                $mail->Username = 'cpanel-username';
                $mail->Password = 'cpanel-password';
                $mail->AddReplyTo($email);
                $mail->SetFrom("info@example.com", $email);
                $mail->Subject = "Account Activation Link @Example";
                $mail->AddAddress($email);
                $mail->MsgHTML($information); 
                $send = $mail->Send();
                if($send)
                {
                    echo "<p id='green'>To activate your account. Please login your email and click on link.</p>";
                }
                else
                {
                    echo "<p id='red'>Your message not sent.</p>";
                }
            }
            else
            {
                echo "<p id='red'>Error!</p>";
            }
        }
    }
?>

В этом коде я использую функцию почты SMTP для быстрой отправки электронной почты. Но вот что происходит, когда я нажимаю кнопку «Отправить». Он показывает мне успешное сообщение, но не может получить электронное письмо. Я не знаю, где я делаю неправильно. Как я могу решить эту проблему? Пожалуйста, помогите мне.

Спасибо

Ответы [ 2 ]

0 голосов
/ 25 февраля 2019

омкар

Хорошая идея - сдать тест по частям, поэтому:

Прежде всего, убедитесь, что нет проблем с отправкой электронной почты, а затем проверьте свой код!

1 - Можете ли вы отправить электронное письмо через веб-сервер (без использования php)?

2 - Проверьте, включена ли на вашем сервере функция mail () , , как это сделать .

3 - После попытки запустить свой код проверьте php logs на сервере.

0 голосов
/ 25 февраля 2019

Я думаю, что две вещи помогут вам в диагностике таких проблем:

  1. Использовать синтаксис try-catch. Если что-то не так, вы можете поймать это в блоке
  2. использовать SMTP Debug для phpmailer

это пример того, как вы можете использовать почтовую программу:

<?php

require('./vendor/autoload.php');

use PHPMailer\PHPMailer\PHPMailer;

class Mailer {

    public $phpmailer;

    public function __construct($addresses)
    {

        $this->phpmailer = new PHPMailer(true);
        $this->phpmailer->SMTPDebug = 3; // here you can debug
        $this->phpmailer->isSMTP();
        $this->phpmailer->Host = 'SMTP.host.example.blabla';
        $this->phpmailer->SMTPAuth = true;
        $this->phpmailer->Port = 587;
        $this->phpmailer->Username = 'username';
        $this->phpmailer->Password = 'password';
        $this->phpmailer->SetFrom('username', 'subject');
        $this->phpmailer->CharSet = "UTF-8";
        foreach ($addresses as $address) {
            $this->phpmailer->AddAddress($address);
        }
    }

    public function send($messageTemplate) {

        try {
            $this->phpmailer->MsgHTML($messageTemplate);
            $this->phpmailer->Subject = 'subject';
            $this->phpmailer->Send();
            return true;
        } catch (phpmailerException $e) {
            echo $e->errorMessage(); //Pretty error messages from PHPMailer
        } catch (Exception $e) {
            echo $e->getMessage(); //Boring error messages from anything else!
        }
    }


}

и используйте его:

$mail = new Mailer(array('test@test.com'));
if ($mail->send('some message')) {
   echo "mail send";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...