我的PHP代码的所有内容都正常运行,唯一的是,当我收到联系表单中的电子邮件时,我的网站的“来自”是@ p3plcpnl0547.prod.phx3.secureserver.net。
来自联系表格的电子邮件示例
如何更改@ p3plcpnl0547.prod.phx3.secureserver.net?
<?php
if(isset($_POST['send_email'])) {
//collect the form values
$name = $_POST['name'];
$phone = $_POST['phone'];
$email = $_POST['email'];
$message = $_POST['message'];
// set the email properties
$to = 'alicia.angner@yahoo.com';
$subject = "Contact Form Submission";
$from = $email ;
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers = 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers = "From: $from";
$headers = "$name \n $phone \n $email";
//attempt to send the mail, catch errors if they occur
try {
mail($to,$subject,$headers,$message);
$msg = "<strong>Your mail was sent successfully!</strong>";
}catch(Exception $e) {
$msg = "An Exception was thrown: ".$e -> getMessage()."<br>";
}
}
?>
答案 0 :(得分:3)
你正在覆盖每一行的$ headers变量,而是想要附加到它。替换:
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers = 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers = "From: $from";
$headers = "$name \n $phone \n $email";
使用:
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= "From: $from";
$headers .= "$name \n $phone \n $email";
我不太确定最后一行是完成的,是否应该在$ message中呢?
答案 1 :(得分:0)
您还可以编辑sendmail_from
中指定的php.ini
以设置参数的defaut。
来源:http://php.net/manual/en/function.mail.php。
答案 2 :(得分:0)
虽然其他答案已经指出了您的直接问题,但注意到您覆盖了变量$headers
的值,导致您的标题设置不正确,您还需要其他信息用这种方式从PHP发送电子邮件时要考虑。
PHP的mail()
功能通常只与你的sendmail binary( on * nix systems )对话,这可能是一个真正的MTA,或者它可能只是一些例如,与postfix等电子邮件服务器通信的脚本。
这一点很重要,因为电子邮件既可以包含Sender
标题,也可以包含From
标题,它们可以不同。通常,MTA负责设置Sender
标头,如果您关心在电子邮件标头中正确设置此信息,这很重要。
您通常可以从/etc/mail/access
或/etc/sendmail/access
更改sendmail配置中的发件人,您可以在其中指定允许哪些用户从哪些电子邮件地址发送。这些规则可能会有所不同,具体取决于您依赖的MTA,未经授权的发件人的电子邮件可能会被您的MTA甚至收件人拒绝,因为这可能会触发电子邮件中的警告标题。所以一定要考虑到这一点。
出于学习目的,这很好,但如果您打算在生产中处理电子邮件,我总是建议不要在PHP中使用mail()
设置,配置和维护您自己的电子邮件服务器可能是一个相当艰巨的过程。
相反,请考虑依赖AWS' SES或Sendgrid等电子邮件服务。它们更可靠,不太可能将您的电子邮件发送到垃圾邮件文件夹中,并且不太可能将您的IP地址放在黑名单上以获取垃圾邮件。它们还有很好的文档API,更适合发送批量电子邮件,而无需键入自己的服务器或PHP资源。