我无法添加发件人 - phpmailer

Posted

技术标签:

【中文标题】我无法添加发件人 - phpmailer【英文标题】:I can't add the sender - phpmailer 【发布时间】:2021-12-21 04:03:40 【问题描述】:

当我得到用户输入的电子邮件字段的值时,电子邮件没有到达。发送时甚至没有错误,但我没有收到电子邮件。我只有在添加带有网站地址的电子邮件地址时才能收到电子邮件,例如“greenervasul@greenervasul.com.br”。

我已经研究过,尝试了一些东西,但到目前为止还没有得到任何东西。有谁知道为什么?

<?php
$url = $_SERVER['HTTP_REFERER'];
$url = strtok($url, '?');

$name = $_POST['name'];
$tel = $_POST['phone'];
$company = $_POST['company'];
$from = $_POST['email'];
$message = $_POST['message'];


require 'phpmailer/PHPMailerAutoload.php';

$mail = new PHPMailer;

$mail->SMTPDebug = 3;                               // Enable verbose debug output


$mail->isSMTP();                                      // Set mailer to use SMTP
$mail->Host       = 'smtp.kinghost.net';  // Specify main and backup SMTP servers
$mail->SMTPAuth   = true;                               // Enable SMTP authentication
$mail->Username   = 'nelson@greenervasul.com.br';
$mail->Password   = '@@@@@@@@@@';
$mail->SMTPSecure = 'startls';                            // Enable TLS encryption, `ssl` also accepted
$mail->Port       = '587';                                    // TCP port to connect to

$mail->setFrom($from, $name);
$mail->addAddress('gabrielruiztq@gmail.com');

$mail->ishtml(true);                                  // Set email format to HTML

$mail->Subject = 'Lojista';
$mail->Body    = 'Nome: '.$name. '<br>Telefone: '.$tel. '<br>Empresa: '.$company. '<br>Menagem: '.$message;
$mail->AltBody = $message;

if(!$mail->send()) 
    header("Location: $url?send=error");
 else 
    header("Location: $url?send=success");

                    

【问题讨论】:

这能回答你的问题吗? PHP mail function doesn't complete sending of e-mail 查看上述副本中标题为请勿使用虚假From:发件人的部分。 仅向 GMail 地址发送电子邮件是行不通的。它甚至可能不会进入垃圾邮件文件夹,因为谷歌阻止了它。查看“SPF 记录”和“DKIM”。 另外,您有startls,但它应该拼写为starttls,您是否尝试过使用tls + 587 端口或ssl + 465 端口的SMTPSecure? 【参考方案1】:

几个问题:

require 'phpmailer/PHPMailerAutoload.php';

这意味着您正在运行一个非常旧版本的 PHPMailer。 Get the latest version.

$mail->SMTPSecure = 'startls';

此属性的允许值为ssltls

$mail->Port       = '587';

这是一个整数,而不是字符串。目前的建议是使用SMTPSecure = 'ssl'Port = 465

mail->setFrom($from, $name);

您使用提交者的电子邮件地址作为发件人地址。这是伪造的,这意味着您的邮件通常会被彻底拒绝或放入垃圾邮件文件夹。查看 PHPMailer 提供的the contact form example 了解如何安全地执行此操作。

这可能很明显,但启用调试输出会阻止您的重定向工作,因此请务必在生产中使用它之前禁用它。

【讨论】:

以上是关于我无法添加发件人 - phpmailer的主要内容,如果未能解决你的问题,请参考以下文章

在 tableview 上添加按钮 - 无法访问发件人

无法弄清楚如何在同一 ScrollView 中的 WebView 上方添加自定义视图

以编程方式添加视图和手势 - “发送到实例的无法识别的选择器”

MFMessageComposeViewController - 禁用收件人的添加/编辑?

在 TableView 的自定义单元格中添加单选按钮并且无法访问外部

无法识别的选择器发送到实例 - Swift