0

我正在尝试通过 PHPMailer 从我的 gmail 发送邮件,但出现以下错误:

SMTP 错误:无法连接到 SMTP 主机。

我从以下网址下载了 phpmailer 类:https ://github.com/Synchro/PHPMailer 。

我已经尝试了三十多个小时,所以我尝试了端口 25、465、587 的大多数组合。我什至尝试了一些奇怪的东西,比如从我的 SMTP 用户名中删除 @gmail.com,所以请帮助我。

<?php
/**
* Simple example script using PHPMailer with exceptions enabled
* @package phpmailer
* @version $Id$
*/

require '../class.phpmailer.php';

try {
    $mail = new PHPMailer(true); //New instance, with exceptions enabled

    $body             = file_get_contents('contents.html');
    $body             = preg_replace('/\\\\/','', $body); //Strip backslashes

    $mail->IsSMTP();                           // tell the class to use SMTP
    $mail->SMTPAuth   = true;                  // enable SMTP authentication
    $mail->SMTPSecure = 'ssl';
    $mail->Port       = 465;                    // set the SMTP server port
    $mail->Host       = "smtp.gmail.com"; // SMTP server
    $mail->Username   = "mymail@gmail.com";     // SMTP server username
    $mail->Password   = "mypass";            // SMTP server password

//  $mail->IsSendmail();  // tell the class to use Sendmail

    $mail->AddReplyTo("name@domain.com","First Last");

    $mail->From       = "name@domain.com";
    $mail->FromName   = "First Last";

    $to = "reciever@gmail.com";

    $mail->AddAddress($to);

    $mail->Subject  = "First PHPMailer Message";

    $mail->AltBody    = "To view the message, please use an HTML compatible email viewer!"; // optional, comment out and test
    $mail->WordWrap   = 80; // set word wrap

    $mail->MsgHTML($body);

    $mail->IsHTML(true); // send as HTML

    $mail->Send();
    echo 'Message has been sent.';
} catch (phpmailerException $e) {
    echo $e->errorMessage();
}
?>
4

2 回答 2

0

我尝试从我的网页通过 php mailer 发送电子邮件,但遇到了同样的问题.. 然后我将我的代码上传到服务器上,然后它工作了.. 我认为 PHPMailer 在网络服务器上工作,它不会在你的本地主机机器上工作......尝试将您的代码上传到网络服务器,然后尝试...如果您的代码已上传到服务器,请使用此...。

<?php

       require_once "../class.phpmailer.php";

        $from = "<from.gmail.com>";
        $to = "<to.gmail.com>";
        $subject = "Hi!";
        $body = "Hi,hows goin??";

        $host = "ssl://smtp.gmail.com";
        $port = "465";
        $username = "myaccount@gmail.com";  //<> give errors
        $password = "password";

        $headers = array ('From' => $from,
          'To' => $to,
          'Subject' => $subject);
        $smtp = Mail::factory('smtp',
          array ('host' => $host,
            'port' => $port,
            'auth' => true,
            'username' => $username,
            'password' => $password));

        $mail = $smtp->send($to, $headers, $body);

        if (PEAR::isError($mail)) {
          echo("<p>" . $mail->getMessage() . "</p>");
         } else {
          echo("<p>Message successfully sent!</p>");
         }

    ?> 
于 2013-03-30T17:25:04.913 回答
0

我认为你犯的错误是你需要错误的类,你的要求应该加载 require_once '../PHPMailerAutoload.php'; PHPMailer 类依赖于其他子类来处理发送邮件的其他方面。您需要的类更像是一个包装类,这应该可以修复许多错误或至少为您提供更好的错误消息。

于 2016-08-12T14:47:39.007 回答