phpmailer 6.0成功消息,但没有收到使用gmail作为中继的邮件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了phpmailer 6.0成功消息,但没有收到使用gmail作为中继的邮件相关的知识,希望对你有一定的参考价值。

我尝试过对我的代码进行一些修改但没有任何效果。代码本身不会返回任何错误,而是提供成功消息。我正在使用gmail作为我的接力。

P.S,我评论了$mail->IsSMTP();,因为我在这里看到一个类似的问题用它作为修复,我得到一个“smtp无法连接”错误。

我使用的是phpmailer 6.0。

这是我的代码:

<?php

  require_once('vendor/autoload.php');

  define('GUSER', 'example@gmail.com'); // GMail username
  define('GPWD', '*********'); // GMail password

  function smtpmailer($to, $from, $from_name, $subject, $body) {
	global $error;
	$mail = new PHPMailerPHPMailerPHPMailer(true);  // create a new object
	//$mail->IsSMTP(); // enable SMTP
	$mail->SMTPDebug = 4;  // debugging: 1 = errors and messages, 2 = messages only
	$mail->SMTPAuth = true;  // authentication enabled
	$mail->SMTPSecure = 'tls'; // secure transfer enabled REQUIRED for GMail
	$mail->Host = 'smtp.gmail.com';
	$mail->Port = 465;
	$mail->Username = GUSER;
	$mail->Password = GPWD;
	$mail->SetFrom($from, $from_name);
	$mail->Subject = $subject;
	$mail->Body = $body;
	$mail->AddAddress($to);
	if(!$mail->Send()) {
		$error = 'Mail error: '.$mail->ErrorInfo;
		return false;
	} else {
		$error = 'Message sent!';
		return true;
	}
  }

  smtpmailer('to@mail.com', 'from@mail.com', 'yourName', 'test mail message', 'Hello World!');
  if (smtpmailer('to@mail.com', 'from@mail.com', 'yourName', 'test mail message', 'Hello World!')) {
	// do something
  }
  if (!empty($error)) echo $error;  

 ?>

如果我取消注释$mail->IsSMTP();我收到此错误日志:

2017-12-27 07:58:54连接:打开到smtp.gmail.com:465,timeout = 300,options = array()2017-12-27 07:58:54连接失败。错误#2:stream_socket_client():无法连接到smtp.gmail.com:465(网络无法访问)[/srv/disk2/2564570/www/consorttest.dx.am/vendor/phpmailer/phpmailer/src/SMTP。 php line 325] 2017-12-27 07:58:54 SMTP错误:无法连接到服务器:网络无法访问(101)SMTP连接()失败。 https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting

致命错误:未捕获的PHPMailer PHPMailer Exception:SMTP connect()失败。 https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting in /srv/disk2/2564570/www/consorttest.dx.am/vendor/phpmailer/phpmailer/src/PHPMailer.php:1726 Stack trace:#0 /srv/disk2/2564570/www/consorttest.dx.am/ vendor / phpmailer / phpmailer / src / PHPMailer.php(1481):PHPMailer PHPMailer PHPMailer-> smtpSend('Date:Wed,27 D ...','Hello World! r n')#1 / srv /disk2/2564570/www/consorttest.dx.am/vendor/phpmailer/phpmailer/src/PHPMailer.php(1320):PHPMailer PHPMailer PHPMailer-> postSend()#2 / srv / disk2 / 2564570 / www / consorttest .dx.am / mailtest.php(23):PHPMailer PHPMailer PHPMailer-> send()#3 /srv/disk2/2564570/www/consorttest.dx.am/mailtest.php(32):smtpmailer('to @ mail.com','from @mail.com','yourName','测试邮件信息......','Hello World!')#4 {main}抛出/ srv / disk2 / 2564570 / www / consorttest 1726行的.dx.am / vendor / phpmailer / phpmailer / src / PHPMailer.php

答案

如果您注释掉isSMTP(),那么你不是“使用gmail作为你的接力”,因为它根本就没有使用SMTP,并且会忽略你所有的SMTP设置。您使用PHP的内置mail函数通过本地邮件服务器发送。

通过gmail发送时,您不能使用任意地址,但您可以在Gmail帐户中预设别名。

您已经将代码基于一个非常陈旧且过时的示例 - 使用PHPMailer提供的gmail。

错误输出中最重要的部分是:Network is unreachable - 这可能意味着您的ISP阻止出站SMTP - 您是否有机会使用GoDaddy?

接下来,您有一个基本的错误配置:您使用SMTPSecure = 'tls'连接到端口465,这意味着它将尝试使用SMTP + STARTTLS显式TLS加密,并且这将无法在端口465上工作。这是一个关键原因使用提供的示例 - 他们不会像这样做出基本错误。

the troubleshooting guide中涵盖了这些内容中的每一个,错误链接到。

以上是关于phpmailer 6.0成功消息,但没有收到使用gmail作为中继的邮件的主要内容,如果未能解决你的问题,请参考以下文章

发送消息但未使用PHPmailer获取电子邮件[重复]

PHPMailer 发送电子邮件并返回带有回显的空白页面

在我的机器上发送邮件成功,但使用 phpmailer 使服务器失败

PHPMailer 电子邮件发送,但表单中没有值

调用API接口返回成功,但设备却没有收到消息怎么办

如何在 xampp 上使用 phpmailer 发送邮件