php auto mailer addAddress - PullRequest
       7

php auto mailer addAddress

0 голосов
/ 28 октября 2018

Я хочу отправить otp почту пользователю, получая значение электронной почты из базы данных.Я использую php auto mailer.Это работает, когда я использую адрес электронной почты напрямую, но когда я получаю его из базы данных, я не могу отправить его.Может кто-нибудь, пожалуйста, помогите мне с его отправкой.

    function mailit()
    {
            $rand=rand(100000,999999);
            $user=$_SESSION['user'];

            $sql=mysqli_query($db,"UPDATE `doctor_login` SET `otp`='$rand' WHERE `doctor_id`='1'");

            $mail = new PHPMailer;

            $mail->isSMTP();                                      // Set mailer to use SMTP
            $mail->Host = '';  // Specify main and backup SMTP servers
            $mail->SMTPAuth = true;                               // Enable SMTP authentication
            $mail->Username = 'myusername ';                 // SMTP username
            $mail->Password = 'mypassword';                           // SMTP password
            $mail->SMTPSecure = 'tls';                            // Enable TLS encryption, `ssl` also accepted
            $mail->Port = 587 ;                                    // TCP port to connect to

            $mail->setFrom('dont_reply_back@example.xyz');
            $mail->addAddress('$row');     // Add a recipient
            $mail->addReplyTo('dont_reply_back@example.xyz');


            $mail->isHTML(true);                                  // Set email format to HTML
            $mail->Subject = 'THis is your OTP';
            $mail->Body    = 'Your otp is '.$rand; 

            $mail->AltBody = 'This is the body in plain text for non-HTML mail clients';

            if(!$mail->send()) {
                echo 'Message could not be sent.';
                echo 'Mailer Error: ' . $mail->ErrorInfo;
    }        
  }

Код для получения и отображения электронной почты

    $mailadd=mysqli_query($db,"SELECT `doctor_email` FROM `doctor_login` WHERE `doctor_id`='1'");
    $row = mysqli_fetch_array($mailadd,MYSQLI_ASSOC);
    echo $row['doctor_email'];
    $row2=$rowa['doctor_email'];
    echo $row2;

Я использовал и $ row, и $ row2 в $ mail-> addAddress, ноне похоже на работу.Какие изменения я могу сделать.это работает, когда я даю конкретный адрес

1 Ответ

0 голосов
/ 28 октября 2018

Я думаю, что это проблема сферы.Если вы вызываете этот код в основной части кода

$mailadd=mysqli_query($db,"SELECT `doctor_email` 
                            FROM `doctor_login` 
                            WHERE `doctor_id`='1'");
$row = mysqli_fetch_array($mailadd,MYSQLI_ASSOC);

Тогда я предполагаю, что после этого вы вызываете mailit(), поэтому передайте данные, которые вы хотите использовать в качестве параметра, в функцию mailit()поэтому он доступен внутри области действия функции.

function mailit($row)
{
    $rand=rand(100000,999999);
    $user=$_SESSION['user'];

    $sql=mysqli_query($db,"UPDATE `doctor_login` SET `otp`='$rand' WHERE `doctor_id`='1'");

    $mail = new PHPMailer;

    $mail->isSMTP();                                      // Set mailer to use SMTP
    $mail->Host = '';  // Specify main and backup SMTP servers
    $mail->SMTPAuth = true;                               // Enable SMTP authentication
    $mail->Username = 'myusername ';                 // SMTP username
    $mail->Password = 'mypassword';                           // SMTP password
    $mail->SMTPSecure = 'tls';                            // Enable TLS encryption, `ssl` also accepted
    $mail->Port = 587 ;                                    // TCP port to connect to

    $mail->setFrom('dont_reply_back@example.xyz');
    $mail->addAddress($row['doctor_email']);     // Add a recipient
    $mail->addReplyTo('dont_reply_back@example.xyz');


    $mail->isHTML(true);                                  // Set email format to HTML
    $mail->Subject = 'THis is your OTP';
    $mail->Body    = 'Your otp is '.$rand; 

    $mail->AltBody = 'This is the body in plain text for non-HTML mail clients';

    if(!$mail->send()) {
        echo 'Message could not be sent.';
        echo 'Mailer Error: ' . $mail->ErrorInfo;
    }        
}

$mailadd=mysqli_query($db,"SELECT `doctor_email` 
                            FROM `doctor_login` 
                            WHERE `doctor_id`='1'");
$row = mysqli_fetch_array($mailadd,MYSQLI_ASSOC);

mailit($row);

Вы должны были получать ошибки из своего исходного кода, поэтому в будущем добавьте следующее:

ini_set('display_errors', 1); 
ini_set('log_errors',1); 
error_reporting(E_ALL); 
// if you are using the `mysqli` API
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

в начало вашего скрипта,Это заставит любые ошибки mysqli_ генерировать исключение, которое вы можете увидеть в браузере, а также обычные ошибки PHP.

...