【问题标题】:How can I add a PHP script to Auto-respond with a "thank you" message如何将 PHP 脚本添加到带有“谢谢”消息的自动响应中
【发布时间】:2015-09-17 22:28:23
【问题描述】:

我是 php 新手,刚刚知道如何使用 php 和 phpmailer 将我的用户的电子邮件地址发送到我的电子邮件地址以添加到时事通讯中。

但是,现在我想在 php 中添加一个简单的自动回复脚本,因此当用户将他们的电子邮件添加到我的访客列表时,它会向他们发送一封自动回复电子邮件到他们的电子邮件中,上面写着:

感谢您的注册。 [我的标志图片] www.mysite.com

我已经搜索和搜索,但我无法找到关于如何在 php.ini 中创建自动响应脚本的正确答案。请让我知道如何完成这项任务。谢谢!

<?php

$email = $_REQUEST['email'] ;

require("C:/inetpub/mysite.com/PHPMailer/PHPMailerAutoload.php");

$mail = new PHPMailer();

// set mailer to use SMTP
$mail->IsSMTP();

$mail->Host = "smtp.comcast.net"; // specify main and backup server
$mail->SMTPAuth = true; // turn on SMTP authentication
$mail->Username = "myusername@comcast.net"; // SMTP username
$mail->Password = "*******"; // SMTP password
$mail->SMTPSecure = 'ssl';                            // Enable TLS encryption, `ssl` also accepted
$mail->Port = 25;                                    


$mail->From = $email;

// below we want to set the email address we will be sending our email to.
$mail->AddAddress("myemail@gmail.com", "Guestlist");

// set word wrap to 50 characters
$mail->WordWrap = 50;
// set email format to HTML
$mail->IsHTML(true);

$mail->Subject = "A new member wishes to be added";

$message = $_REQUEST['message'] ;
$mail->Body = $email;
$mail->AltBody = $email;

if(!$mail->Send())
{
echo "Message could not be sent. <p>";
echo "Mailer Error: " . $mail->ErrorInfo;
exit;
}

echo "Message has been sent";

$mail2 = new PHPMailer();

// set mailer to use SMTP
$mail2->IsSMTP();

$mail2->Host = "smtp.comcast.net"; // specify main and backup server
$mail2->SMTPAuth = true; // turn on SMTP authentication
$mail2->Username = "myusername@comcast.net"; // SMTP username
$mail2->Password = "*******"; // SMTP password
$mail2->SMTPSecure = 'ssl';                            // Enable TLS encryption, `ssl` also accepted
$mail2->Port = 25;                                    


$mail2->From = $email;

// below we want to set the email address we will be sending our email to.
$mail2->AddAddress("$email");

// set word wrap to 50 characters
$mail2->WordWrap = 50;
// set email format to HTML
$mail2->IsHTML(true);

$mail2->Subject = "Thank you for joining";

$message = "Please stay tune for updates" ;

$message = $_REQUEST['message'] ;
$mail2->Body = $message;
$mail2->AltBody = $message;

if(!$mail2->Send())
{
echo "Message could not be sent. <p>";
echo "Mailer Error: " . $mail2->ErrorInfo;
exit;
}

echo "Message has been sent";
?>

更新:1 好的,我想出了如何向用户发送自动回复电子邮件。但是,现在用户正在使用自己的电子邮件地址和名称 Root 用户接收消息

那么我该如何解决这个问题,以便用户在收到自动回复时看到我的电子邮件地址,以及如何确保它显示的是我的名字而不是 root 用户?

【问题讨论】:

  • 将电子邮件地址插入数据库-> 向用户发送电子邮件。不清楚你被什么困住了
  • 只需创建一些新变量(例如$usermail 或类似的东西)和另一个带有感谢消息和电子邮件变量的消息变量,然后再次运行该过程
  • 我是 php 新手,能否详细说明如何添加 $usermail 和另一个消息变量?
  • @Dagon 你想获得荣誉吗?
  • 第二次 PHPMailer 轮到你可以做一些像$mail2 = new PHPMailer(); 这样简单的事情,然后为$mail2 做所有你为$mail 做的事情,除了用你想要的任何东西替换主题和正文,并使用$useremail 用于AddAddress() 通话

标签: php email phpmyadmin phpmailer contact-form


【解决方案1】:

请勿将提交者的电子邮件地址用作发件人地址 - 因为它看起来像是伪造的,并且无法通过 SPF 检查,所以它不起作用。将您自己的地址作为发件人地址,并添加提交者的地址作为回复。

SMTPSecure = 'ssl'Port = 25 结合使用是一种极不寻常的组合,而且很可能是错误的。 ssl/465 和 tls/587 更常用。

要发送多条消息,您无需创建第二个实例 - 只需重复使用同一个实例即可。您可以重置任何您想要的单个属性(例如Body)并使用$mail-&gt;clearAddresses() 清除地址,然后只需再次调用$mail-&gt;send()

看起来您的代码基于一个旧示例(尝试a new one) - 确保您使用的是latest PHPMailer - 至少是 5.2.10。

【讨论】:

  • 谢谢,你解决了我的后半部分问题。通过使用最新的 phpmailer 代码,我现在能够将相应的名称与他们的电子邮件相匹配。不再有 root 用户。
【解决方案2】:

添加:

echo "Message has been sent";
$mail = new PHPMailer();
$mail->From = 'myemail@gmail.com';

// below we want to set the email address we will be sending our email to.
$mail->AddAddress($email);

// set word wrap to 50 characters
$mail->WordWrap = 50;
// set email format to HTML
$mail->IsHTML(true);

$mail->Subject = "Thanks for joining ...";

$message = "Thanks for joining...";
$mail->Body = $email;
$mail->AltBody = $email;

$mail->Send();

【讨论】:

  • 我已经添加了你的脚本,但没有运气。如果有帮助,这是我的 html:
    电子邮件:
  • 检查我的编辑。自动回复现在有效。但是,用户会收到名为 RootUser 的自动回复电子邮件,并且是从他们自己的电子邮件中发送的。那么为什么我的电子邮件地址没有出现在自动回复电子邮件中?
  • 因为他们很愚蠢,将 addaddress 设置为表单中的电子邮件,而应该将其设置为您的。引用答案:不要使用提交者的电子邮件地址作为发件人地址 - 它不起作用,因为它看起来像是伪造的并且会通过 SPF 检查。将您自己的地址作为发件人地址,并添加提交者的地址作为回复。
猜你喜欢
  • 2021-12-17
  • 2019-01-04
  • 1970-01-01
  • 1970-01-01
  • 2016-06-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多