PHPMailer不会发送电子邮件

PHPMailer不会发送电子邮件,php,email,Php,Email,我是一名游戏开发人员,所以我没有任何PHP/网络/后端web开发知识。我整个星期都被这个问题困扰着,在网上没有运气。在PHPMailer之前,我曾尝试在PHP中使用mail()函数,但我对所有的.ini文件感到困惑。我在这个网站上的一个答案中找到了PHPMailer,而且我得到了更多。我严格遵循了本教程,但电子邮件不会发送,调试也不会打印任何内容。我的代码总是返回false并显示我的“无法发送电子邮件”消息 <?php session_start(); require_once 'PHP

我是一名游戏开发人员,所以我没有任何PHP/网络/后端web开发知识。我整个星期都被这个问题困扰着,在网上没有运气。在PHPMailer之前,我曾尝试在PHP中使用mail()函数,但我对所有的.ini文件感到困惑。我在这个网站上的一个答案中找到了PHPMailer,而且我得到了更多。我严格遵循了本教程,但电子邮件不会发送,调试也不会打印任何内容。我的代码总是返回false并显示我的“无法发送电子邮件”消息

<?php session_start();

require_once 'PHPMailer/PHPMailerAutoLoad.php';
require_once 'PHPMailer/class.phpmailer.php';

$errors=[];



if(isset($_POST['name'], $_POST['twitterHandle'], $_POST['email'], $_POST['description'])) {

    $fields = [

        'name' => $_POST['name'],
        'twitterHandle' => $_POST['twitterHandle'],
        'email' => $_POST['email'],
        'description' => $_POST['description']

        ];

    foreach($fields as $field => $data){

        if(empty($data)){

            $errors[] = 'The ' . $field . ' field is required';

        }

    }

    //mail connection if all fields are ! empty

    if(empty($errors)){

        $mail = new PHPMailer;

        $mail->isSMTP();
        $mail->SMTPAuth = true;

        $mail->SMTPDebug = 1;

        $mail->Host = 'smtp.gmail.com';
        $mail->Username = '@gmail.com';
        $mail->Password = 'pass';
        $mail->SMTPSecure = 'ssl';
        $mail->Port = 25;

        $mail->isHTML;

        $mail->Subject = 'subject';
        $mail->Body = 'From: ' . $fields['name'] . ' (' . $fields['email'] . ')<p>' . $fields['description'] . '</p>';

        $mail->FromName = 'Contact';

        $mail->addReplyTo($fields['email'], $fields['name']);

        $mail->addAddress('@gmail.com', 'name');

        //send email
        if($mail->send()){

            header('Location: index.php');
            die();

        }else{

        //cannot send
            $errors[] = "Sorry, but I could not process your submission. Please try again.";

        }



    }

} else{

$errors[] = 'Something went wrong';

}

$_SESSION['errors'] = $errors;
$_SESSION['fields'] = $fields;

header('Location: index.php');


?>

我在端口465和25上尝试了SSL,在587上也尝试了TLS。我在网络上转发了465和25,但587无法打开。我的gmail上也启用了IMAP。继续使用
tls

2) 。很可能你已经启用了2Factor身份验证,你需要转到你的gmail设置仪表板,允许你的应用程序通过谷歌的身份验证。我也有同样的问题,只有当我在谷歌上修复了这个设置后,问题才得以解决

另外,看看这个答案:-

1)。继续使用
tls

2) 。很可能你已经启用了2Factor身份验证,你需要转到你的gmail设置仪表板,允许你的应用程序通过谷歌的身份验证。我也有同样的问题,只有当我在谷歌上修复了这个设置后,问题才得以解决


另外,看看这个答案:-

不要抛出固定/无用的错误消息。phpmailer可以告诉你哪里出了问题<代码>$errors[]=$mail->ErrorInfo不要发出固定/无用的错误消息。phpmailer可以告诉你哪里出了问题<代码>$errors[]=$mail->ErrorInfo