【问题标题】:PHPMailer doesn't seeem to work on live site, but works on localhost?PHPMailer 似乎无法在实时站点上工作,但可以在本地主机上工作?
【发布时间】:2014-01-20 15:28:48
【问题描述】:

我有一个 PHPMailer 脚本,我检查了所有其他与此类似的线程,并尝试了该问题后面的所有解决方案。但这是我收到的错误

2014-01-03 02:25:16 SMTP ERROR: Failed to connect to server: Connection timed out (110) SMTP connect() failed. Mailer Error: SMTP connect() failed.

这是我的脚本:

$body = "test";

$mail->IsSMTP(); // telling the class to use SMTP
$mail->SMTPDebug  = 2;                     // enables SMTP debug information (for testing)
                                           // 1 = errors and messages
                                           // 2 = messages only
$mail->SMTPAuth   = true;                  // enable SMTP authentication
$mail->SMTPSecure = "ssl"; // I have also tried tls
$mail->SMTPKeepAlive = true;            
$mail->Host       = "smtp.gmail.com";      // sets GMAIL as the SMTP server
$mail->Port       = 465;                   // I have also tried 25
$mail->Username   = "xxxx@gmail.com";  // GMAIL username
$mail->Password   = "xxxxx";            // GMAIL password

$mail->SetFrom("johndoe@gmail.com","John  Doe");

$mail->AddReplyTo("johndoe@gmail.com","John Doe");

$mail->Subject    = "Booking from " . $_POST['person'] . ' at ' . $_POST['name'];

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


$mail->MsgHTML($body);

$address = "johndoe@hotmail.co.uk";
$mail->AddAddress($address, "John Doe");

if(!$mail->Send()) {
  echo "Mailer Error: " . $mail->ErrorInfo;
} else {
  echo "Message sent!";
}

但是我无法让它工作。我尝试了许多不同的解决方案。我什至很高兴使用默认的 php 邮件,但我只需要发送它,php 邮件甚至无法通过 hotmail 垃圾邮件过滤器(我的意思是它甚至没有将其发送到垃圾邮件)。

这里有什么解决方案或建议吗?非常感谢!

【问题讨论】:

  • 您是否排除了简单的防火墙问题?当它在本地工作而不是远程工作时,您可能正在写关于被阻止的端口。您可以使用 fsockopen 检查阻塞的端口,a-la stackoverflow.com/questions/2226374/…
  • 你试过端口 587(用于 TLS)吗?
  • 非常感谢!省了我一辈子的麻烦! +1!
  • 你指的是我说的587端口吗? @Jarrod 只是出于好奇。
  • 我在 SO 上找到了一个答案,其中包含在这个答案的评论中:stackoverflow.com/a/17144196/1415724 这就是我提到它的原因,希望它能解决问题。

标签: php email phpmailer


【解决方案1】:

只需评论这一行:

$mail->IsSMTP();

【讨论】:

    【解决方案2】:

    您是否确保您的实时服务器和本地服务器上的 php.ini 邮件设置相同?

    【讨论】:

    • 我认为这应该是对主要问题的评论,而不是“答案”。但是不,我无权访问实时服务器 php.ini 设置。
    • 当您无法发表评论时,这是一个艰难的开始,因为您只有足够的声望才能留下答案。让这成为一个教训,如果您要回答,提供解决方案,而不是进一步询问或询问有关场景的问题。暂时 +1 以解决这个问题。
    • 对于它的价值,我试图发表评论,但收到一个错误,说我没有足够的声誉,不管这意味着什么...... 评论我的似乎没有任何问题然而,自己的帖子..
    【解决方案3】:

    从安装 PHP Mailer

    https://github.com/Synchro/PHPMailer

    并阅读“一个简单的例子”

    <?php
    require_once('PHPMailer/PHPMailerAutoload.php'); // Load your PHPMailerAutoload.php Correctly Here
    
    $mail = new PHPMailer;
    
    //$mail->SMTPDebug = 3;// debugging: 1 = errors and messages, 2 = messages only                               // Enable verbose debug output
    
    $mail->isSMTP();                                      // Set mailer to use SMTP
    $mail->Host = 'smtp.gmail.com';  // Specify main and backup SMTP servers
    $mail->SMTPAuth = true;                               // Enable SMTP authentication
    $mail->Username = 'yourmail@gmail.com';                 // SMTP username
    $mail->Password = '**********';                           // SMTP password
    $mail->SMTPSecure = 'ssl'; // secure transfer enabled REQUIRED for GMail  // Enable TLS encryption, `ssl` also accepted
    $mail->Port = 465;           // or 587                         // TCP port to connect to
    
    $mail->setFrom('fromemail@gmail.com', 'Vijay Rami');
    $mail->addAddress('toemail@gmail.com', 'Vijay Rami');     // Add a recipient
    //$mail->addAddress('ellen@example.com');               // Name is optional
    //$mail->addReplyTo('info@example.com', 'Information');
    //$mail->addCC('cc@example.com');
    //$mail->addBCC('bcc@example.com');
    
    //$mail->addAttachment('/var/tmp/file.tar.gz');         // Add attachments
    //$mail->addAttachment('/tmp/image.jpg', 'new.jpg');    // Optional name
    //$mail->isHTML(true);                                  // Set email format to HTML
    
    $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.';
        echo 'Mailer Error: ' . $mail->ErrorInfo;
    } else {
        echo 'Message has been sent';
    }
    

    【讨论】:

      猜你喜欢
      • 2011-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-27
      • 1970-01-01
      相关资源
      最近更新 更多