【问题标题】:PHPmailer doesn't work taking email recipient from MySQLPHPmailer 无法从 MySQL 获取电子邮件收件人
【发布时间】:2017-10-06 01:30:23
【问题描述】:

我的 PHPmailer 使用这个脚本在 localhost 中工作。 但是,当我将它上传到我的虚拟主机时它不起作用。 似乎没有从我的数据库中获取收件人电子邮件。

如果我使用这个: $mail->addAddress('$email');

这适用于 localhostm,但不适用于虚拟主机。它显示错误:没有收件人。

但是,如果我使用这个: $mail->addAddress($email);

然后它显示错误:SMTP 连接()失败。

我的代码:

    <?php
include 'dbconnect.php';
require 'PHPMailer/PHPMailerAutoload.php';

$mail = new PHPMailer;

$npsn = $_POST['npsn'];
$error = false;
                // basic npsn validation
        if (empty($npsn)) {
            echo "<script>alert('Anda belum memasukkan NPSN Sekolah Anda!'); window.location = 'lupapassword.php'</script>";    
        } else if (!preg_match("/^[0-9]+$/",$npsn)) {
            echo "<script>alert('NPSN hanya boleh diisi Angka saja!'); window.location = 'lupapassword.php'</script>";  
        }else if (strlen($npsn) < 8) {          
            echo "<script>alert('NPSN harus 8 Angka!'); window.location = 'lupapassword.php'</script>"; 
        }else {
            // check npsn exist or not
            $query = "SELECT npsn FROM users WHERE npsn='$npsn'";
            $result = mysql_query($query);
            $count = mysql_num_rows($result);
            if($count<1){               
            echo "<script>alert('Maaf, NPSN Sekolah Anda tidak ditemukan!'); window.location = 'lupapassword.php'</script>";                            
        }else {
            // check email exist or not
            $query2 = "SELECT email_sekolah FROM users WHERE npsn='$npsn'";
            $result2 = mysql_query($query2);
            $count2 = mysql_num_rows($result2);
            if($count2<1){              
            echo "<script>alert('Maaf, sebelumnya anda belum mengisi email sekolah pada data sekolah. Password tidak bisa dikirimkan. Silahkan hubungi admin!'); window.location = 'lupapassword.php'</script>";    
                }
        }
        // if there's no error, continue to signup
        if( !$error ) {         
            $query = "SELECT * from users WHERE npsn=$npsn";
            $hasil = mysql_query($query);
            $data  = mysql_fetch_array($hasil);
            $email = $data['email'];    
            $password = $data['password'];

// Konfigurasi SMTP
            $mail->isSMTP();
            $mail->Host = 'smtp.gmail.com';
            $mail->SMTPAuth = true;
            $mail->Username = 'myemail@gmail.com';
            $mail->Password = 'mypass';
            $mail->SMTPSecure = 'tls';
            $mail->Port = 587;
            $mail->setFrom('myemail@gmail.com', 'Irmanto');
            $mail->addReplyTo('myemail@gmail.com', 'Irmanto');
// Subjek email
$mail->Subject = 'Password Member Area';

// Mengatur format email ke HTML
$mail->isHTML(true);

// Konten/isi email
$mailContent = "<p>my message</p>";

$mail->Body = $mailContent;

// Menambahkan penerima

$mail->addAddress($email);

// Kirim email
if(!$mail->send()){
    echo 'Maaf, Password tidak bisa dikirim. </br>Silahkan hubungi admin!';                 
    echo '</br></br>Error: ' . $mail->ErrorInfo;
}else{
    echo "<script>alert('Password telah dikirim ke $email!'); window.location = 'index.php'</script>";  
}
}
}

【问题讨论】:

  • 基本 PHP 语法错误:你在单引号中引用你的数组索引变量。
  • 您也在使用旧版本。很有可能您的 ISP 阻止了出站 SMTP - 请查看此处提出相同问题的数百个问题,并阅读错误指向的文档。
  • 我是新人。
  • 如何修复它?
  • 阅读 PHP 文档 - 它们非常棒。根本不要引用那个 var - 它不是必需的。在此处搜索错误消息,阅读 PHPMailer 文档。你不会得到与以前的答案有任何不同的答案。

标签: php mysql email phpmailer


【解决方案1】:

这与 MySQL 无关,也与 PHPMailer 无关。这是一个基本的 PHP 语法错误。这个:

$mail->addAddress('$email');

因为您是single quoting,所以无法工作,因此不会对 var 进行插值,并且您最终会添加一个无用或空地址 - 这就是为什么您会收到错误消息说没有收件人。只需这样做:

$mail->addAddress($email);

这会导致您出现“SMTP connect() failed”错误,这是 answered on here hundreds of times 的错误,诊断问题的技术在 the troubleshooting guide 中有详细记录。您没有提供足够的信息来诊断您的确切问题,因为您没有阅读错误指向您的文档,该文档向您展示了如何做到这一点。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-19
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-19
    相关资源
    最近更新 更多