无法使用PHPMailer发送电子邮件

时间:2015-06-20 01:03:02

标签: php email smtp gmail phpmailer

我正在尝试使用phpmailer发送电子邮件。这是我写的代码。

    $mail = new PHPMailer;

    $mail->isSMTP();
    $mail->Host = 'smtp.gmail.com';
    $mail->SMTPAuth = true;
    $mail->Username = 'shamir.towsif@gmail.com';
    $mail->Password = '*********';
    $mail->Port = 25;

    $mail->From = 'shamir.towsif@gmail.com';
    $mail->FromName = 'Shamir Towsif';
    $mail->addAddress('shamir.towsif@gmail.com', 'Shamir Towsif');
    $mail->addReplyTo('shamir.towsif@gmail.com', 'Information');

    $mail->isHTML(true);

    $mail->Subject = 'Here is the subject';
    $mail->Body    = 'This is the HTML message body <b>in bold!</b>';
    $mail->AltBody = 'This is the body in plain text for non-HTML mail clients';

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

这是我得到的错误。

Message could not be sent. Mailer Error: SMTP connect() failed.

我做错了什么。 SO中的其他问题没有帮助。提前谢谢。

3 个答案:

答案 0 :(得分:2)

我遇到了类似的问题,但我认为您应该尝试将其添加到您的代码中:

$mail->Port = 587;
$mail->SMTPSecure = 'tls';

这是针对GMail的PHPMailer推荐设置,您可以看到example in their Github page

答案 1 :(得分:1)

标题:使用PhpMailer和Gmail从服务器发送电子邮件

这是我解决类似问题的方法:

  1. 从github(https://github.com/PHPMailer/PHPMailer)下载PHPMAILER到您的计算机。

  2. 将其作为.zip文件上传到您的服务器,然后通过单击提取图标将其提取。将文件夹重命名为“ phpmailer”或您想要的任何名称。

  3. 在发送.php文件的邮件中放入以下代码:

    require 'phpmailer/src/Exception.php'; require 'phpmailer/src/PHPMailer.php'; require 'phpmailer/src/SMTP.php'; $mail = new PHPMailer\PHPMailer\PHPMailer(); $mail->isSMTP(); $mail->SMTPDebug = 2; $mail->Host = 'smtp.gmail.com'; $mail->Port = 587; $mail->SMTPSecure = 'tls'; $mail->SMTPAuth = true; $mail->Username = "sender@gmail.com"; $mail->Password = "password"; $mail->setFrom('sender@gmail.com', 'Name'); $mail->addAddress('receiver@yahoo.com', 'Name'); $mail->Subject = 'Subject'; $mail->Body = 'This is a plain-text message body'; if (!$mail->send()) { echo "Mailer Error: " . $mail->ErrorInfo; } else { echo "Message sent!"; }

  4. 保存php文件。

  5. 打开浏览器并登录到您在php脚本中使用的gmail(google)帐户。

  6. 转到此链接:https://support.google.com/accounts/answer/6009563

  7. 扩展您的设备或应用可能不支持Google的安全标准

  8. 单击缺少安全应用

  9. 切换允许不太安全的应用: ON (如果为 OFF )。

  10. 应用程序不支持
  11. 展开两步验证

  12. 单击链接:https://accounts.google.com/DisplayUnlockCaptcha

  13. 单击继续

  14. 在浏览器中打开发送电子邮件的php文件。

  15. 现在将发送电子邮件。

这项技术对我有用。我希望它也对你们有用。

快乐编码:-)

答案 2 :(得分:0)

通过将这些行添加到标准PHPMailer配置中解决了几乎相同的问题。像魅力一样。

$mail->SMTPKeepAlive = true;   
$mail->Mailer = “smtp”; // don't change the quotes!

正在遵循使用TLS的SMTP和端口等的默认设置的所有标准设置。最后,我在研究解决方案https://webolio.wordpress.com/2008/03/02/phpmailer-and-smtp-on-1and1-shared-hosting/#comment-89

时遇到了这段代码(来自Simon Chen)