PHPMailer在一个页面上工作,但不会在类似的情况下工作

时间:2016-05-31 15:09:38

标签: php email phpmailer

编辑:不知何故,代码只能在网络服务器上运行,而不能在本地主机上运行,​​因此您可以修复"修复"。

所以,我的php代码应该像这样工作:

  require 'PHPMailer/PHPMailerAutoload.php';
  $nome = $_POST["nome"];
  $subject = $_POST["subject"];
  $message = $_POST["message"];
  $email = $_POST["email"];
  $contacto = $_POST["contacto"];
  $body = "<p>Mail recebido de: </p>" . $nome . "<p>Email:</p>" . $email . "<p> Contacto:</p>" . $contacto . "<p>Mensagem:</p>" . $message ;
  $mail = new PHPMailer();
  $mail->CharSet = "text/html; charset=UTF-8;";
  $mail->SMTPDebug = 0;  // debugging: 1 = errors and messages, 2 = messages only
  $mail->CharSet = 'UTF-8';
  $mail->SMTPAuth = true;
  $mail->SMTPSecure = 'ssl'; 
  $mail->Host = "smtp.gmail.com";
  $mail->Port = 587;
  $mail->Username = "the email";
  $mail->Password = the password;
  $mail->SetFrom('the email', 'Organizer');
  $mail->Subject = "[ORÇAMENTO] " . $subject;
  $mail->Body = $body;
  $mail->IsHTML(true);
  $mail->AddAddress("the email");
  if(!$mail->Send()) {
  echo "Mailer Error: " . $mail->ErrorInfo;
} else {
  $sucesso = 'Mensagem enviada com sucesso!';
}

这个第一个脚本会将电子邮件发送给自己,但即使这样也不起作用($ mail-&gt; Send()= 1,仍然没有收到电子邮件):

require '../PHPMailer/PHPMailerAutoload.php';
          $body = "<p>Car(a) " . ${'user' . $i} . ",</p> <p> Foi lhe associado(a) uma nova ocorrência. Consulte-a em http://www.organizer.com.pt . </p>";
          $mail = new PHPMailer();
          $mail->CharSet = "text/html; charset=UTF-8;";
          $mail->SMTPDebug = 1;  // debugging: 1 = errors and messages, 2 = messages only
          $mail->CharSet = 'UTF-8';
          $mail->SMTPAuth = true;
          $mail->SMTPSecure = 'ssl'; 
          $mail->Host = "smtp.gmail.com";
          $mail->Port = 587;
          $mail->Username = "the email";
          $mail->Password = the password;
          $mail->SetFrom('the email', 'Organizer');
          $mail->Subject = "Nova Ocorrência";
          $mail->Body = $body;
          $mail->IsHTML(true);
          $mail->AddAddress($email);
          if(!$mail->Send()) {
            echo "Mailer Error: " . $mail->ErrorInfo;
          } else {
            $sucesso = 'Mensagem enviada com sucesso!';
          }

我已经测试了从数据库中获得的所有变量等等,并且它们都是正确的,我只是因为某些原因没有收到电子邮件。有人可以帮忙吗?

P.S。:抱歉,其中一些是葡萄牙语,我认为代码仍然完全可以理解。

1 个答案:

答案 0 :(得分:0)

“不起作用”不是一个有用的问题描述。在SO上,细节就是一切。

将代码基于过时的代码并没有帮助。不正确的示例,并且没有阅读文档,我怀疑您使用的是旧版本的PHPMailer,因为如果它是最新版本,它会为您提供相关文档的链接。首先,get the latest versionread the docs

至于具体问题:SMTPSecure = 'ssl' Port = 587将无效。端口587用于SMTP + STARTTLS,而不是隐式SSL,因此请设置SMTPSecure = 'tls'

这是错的:

$mail->CharSet = "text/html; charset=UTF-8;";

你的其他脚本做对了:

$mail->CharSet = 'UTF-8';

如果您遇到有调试选项的问题,请启用它!

$mail->SMTPDebug = 2;

如果您遇到初始连接问题,请将其增加到3。

我想知道您在哪里获得该示例代码,以便我可以要求作者删除或更新它;有破碎的,过时的例子,只是浪费每个人的时间浪费。