我有一个联系表,用户输入他们的个人信息和想要发送给我的消息(管理员),结果是我将收到一封电子邮件,其中包含他们的信息和发送的消息,同时用户将收到一封电子邮件,说明他们的信息已成功发送。目前所有这些工作正常,但问题是,仅当我强制执行此消息时,该消息才会发送给用户,这意味着哦,函数“ addAddress”我键入了我要发送到的电子邮件地址,但我想发送给填写该表格的每个人,但该表格不起作用,只会发送给我(管理员)
$sql = "INSERT INTO Mensagem (NomeM, EmailMen, Assunto, Mensagem) VALUES ('$NomeM', '$EmailMen','$Assunto', '$Mensagem')";
$res = $lig->query($sql);
if (isset($_POST['submit'])){
require 'PHPMailer/PHPMailerAutoload.php';
$mail = new PHPMailer;
$mail->Host='smtp.gmail.com';
$mail->Porto = 587;
$mail->SMTPAuth = true;
$mail->SMTPSecure='tls';
$mail->Username='admin@gmail.com';
$mail->Password='***';
$mail->setFrom($_POST['EmailReser']);
$mail->addAddress('admin@gmail.com');
$mail->addReplyTo($_POST['EmailReser']);
$mail->isHTML(true);
$mail->Subject='New message from your website';
$mail->Body = "message from user";
if(!$mail->send()) {
$result="Something went wrong. Try again";
} else {
header('Location: index.php?cmd=home');
//======== User ========
$mail = new PHPMailer;
$mail->Host='smtp.gmail.com';
$mail->Porto = 587;
$mail->SMTPAuth = true;
$mail->SMTPSecure='tls';
$mail->Username='admin@gmail.com';
$mail->Password='***';
$mail->setFrom('admin@gmail.com');
$mail->addAddress($_POST['EmailReser']); // If i added 'user@gmail.com' it would work
$mail->addReplyTo('admin@gmail.com');
$mail->isHTML(true);
$mail->Subject='Your message was received';
$mail->Body = "message from admin";
if(!$mail->send()){
$result="Something went wrong. Try again";
} else{
header('Location: index.php?cmd=home');
}
}
}
答案 0 :(得分:1)
在代码中:
...
} else {
header('Location: index.php?cmd=home');
...
发送第一封邮件后,您已将用户重定向到另一个页面。
重定向$_POST
后,数据将丢失,因此不会触发第二封电子邮件。
答案 1 :(得分:0)
没有Porto
这样的属性;它只是Port
,因此它将使用默认端口25。
不要这样做:
$mail->setFrom($_POST['EmailReser']);
那是伪造的,Gmail不允许您这样做。将您自己的地址放在发件人地址中(就像您对管理员电子邮件所做的一样),然后将提交者放入回复对象中(就像您已经在做的那样)。
创建两个PHPMailer实例非常浪费-创建一个实例并使用它发送两条消息。这也将允许您使用keepalive,这将使发送速度更快。
您使用的是旧版本的PHPMailer,因此我已经更新了脚本以使用当前版本,并使用composer加载了该脚本-如果您尚未使用它,那么现在是学习的好时机。 / p>
如果提交者的电子邮件地址属性不是有效的地址(您以前没有发现过的地址),它也不会发送。
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
require '../vendor/autoload.php';
$mail = new PHPMailer(true); //Enable exceptions
try {
//Set all common properties
$mail->SMTPKeepAlive = true;
$mail->Host = 'smtp.gmail.com';
$mail->Port = 587;
$mail->SMTPAuth = true;
$mail->SMTPSecure = 'tls';
$mail->Username = 'admin@gmail.com';
$mail->Password = '***';
$mail->isHTML(true);
//Set up recipients
$mail->setFrom('admin@gmail.com');
$mail->addAddress('admin@gmail.com');
$mail->addReplyTo($_POST['EmailReser']);
$mail->Subject = 'New message from your website';
$mail->Body = "message from user";
//If this fails, it will be caught below, so no need for an `if`
$mail->send();
//Re-use existing instance
//Reset recipients, don't need to touch reply-to or from address
$mail->clearAddresses();
$mail->addAddress($_POST['EmailReser']);
$mail->Subject = 'Your message was received';
$mail->Body = "message from admin";
$mail->send();
header('Location: index.php?cmd=home');
} catch (Exception $e) {
echo 'Something went wrong. Try again ' . $mail->ErrorInfo;
}