[英]I can't add the sender - phpmailer
当我获得用户输入的电子邮件字段的值时,电子邮件没有到达。 发送时甚至没有错误,但我没有收到电子邮件。 我只有在添加带有网站地址的电子邮件地址时才能接收电子邮件,例如“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");
}
几个问题:
require 'phpmailer/PHPMailerAutoload.php';
这意味着您正在运行一个非常旧版本的 PHPMailer。 获取最新版本。
$mail->SMTPSecure = 'startls';
此属性的允许值为ssl
或tls
。
$mail->Port = '587';
这是一个整数,而不是一个字符串。 当前的建议是使用SMTPSecure = 'ssl'
和Port = 465
。
mail->setFrom($from, $name);
您使用提交者的电子邮件地址作为发件人地址。 这是伪造的,意味着您的邮件通常会被彻底拒绝或放入垃圾邮件文件夹。 查看 PHPMailer 提供的联系表单示例,了解如何安全地执行此操作。
这可能是显而易见的,但启用调试输出将阻止您的重定向工作,因此在生产中使用它之前一定要禁用它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.