2

我们最近升级了我们的网络服务器,我们遇到的第一个问题是发送到同一个域时出现问题,因为该网站托管在与公司交换服务器不同的服务器上。无论如何,我修复了这是一些简单的配置更改并禁用域的邮件服务。

无论如何,这不起作用,但是当我在网站上测试一些 PHP 邮件表单时,我没有注意到它们都作为我的电子邮件地址发送给客户。

这是 PHP(我认为这不是问题)

<?php
    ini_set("sendmail_from", "noreply@******.com"); 

    $name       = $_POST['name'];
    $email      = $_POST['email'];
    $phone      = $_POST['phone'];
    $comments   = $_POST['comments'];
    $ip=$_SERVER['REMOTE_ADDR'];

    $recipient  = '*****@******.com';
    $subject    = "Comments submitted from the Contact Us form on www.wavesfm.com from $name" ;

    $message   = "This is an email submitted from the Contact Us form on the website www.*****.com containing details from $name \n";
    $message  .= "    \n";
    $message  .= "Name: $name \n";
    $message  .= "Email: $email \n";
    $message  .= "Phone Number: $phone \n";
    $message  .= "Comments: $comments \n\n\n";
    $message  .= "IP Address: $ip ";

    $headers   = "From: noreply@********.com \n";
    $headers  .= "Reply-To: $email";

    mail($recipient,$subject,$message,$headers);
    header( 'Location: http://www.*****.com/thanks.php' ) ; 
?>

任何人都可以看到该代码有任何问题吗?我尝试将 -fnoreply@ * *.com 添加为发送参数,但它不会更改我自己的电子邮件地址,使其不再显示为发件人。

我不认为这是一个 PHP 问题,它看起来更像是一个 Postfix 问题,但真正困扰我的是我在任何地方都没有使用的电子邮件地址如何显示为发件人。

有没有人有过这方面的经验?和两周前一样,我根本没有使用过 Postfix,所以它对我来说相当新。

网络服务器:Cent OS,Plesk 11.0.9

邮件服务器:MS Exchange 邮件服务器/使用 ORF

其中一封电子邮件的后缀日志

3 月 27 日 13:48:41 专用后缀/拾取 [12199]: 652EFA106C5: uid=48 from= 3 月 27 日 13:48:41 专用后缀/清理[14376]: 652EFA106C5: message-id=<20130327134841.652EFA106C5@dedicated.mydomain .com> Mar 27 13:48:41 dedicated postfix/qmgr[12198]: 652EFA106C5: from=, size=726, nrcpt=1 (queue active) Mar 27 13:48:41 dedicated postfix/smtp[14378]: 证书mail.mydomain.com[82.888.888.51]:25 验证失败:不受信任的颁发者/CN=clientdomain-WAV01-CA Mar 27 13:48:42 dedicated postfix/smtp[14378]: 652EFA106C5: to=, relay=mail。 client_website.com[82.888.888.51]:25, delay=0.89, delays=0.04/0.01/0.36/0.48, dsn=2.6.0, status=sent (250 2.6.0 <20130327134841.652EFA106C5@dedicated.mydomain.com> [ InternalId=11846] 等待投递的排队邮件)3 月 27 日 13:48:42 专用后缀/qmgr[12198]:652EFA106C5:已删除

4

2 回答 2

2

以下代码可能存在一些字符串连接问题:

$headers = "From: noreply@********.com \n";

尝试

$headers = "From: noreply@********.com \r\n";

我建议使用 phpmailer 类来发送广泛使用的电子邮件: https ://github.com/Synchro/PHPMailer

于 2013-03-27T13:26:32.157 回答
0

php.ini sendmail_from指令仅适用于 windows 框

sendmail_from 字符串 在 Windows 下 PHP 发送的邮件中应该使用哪个“发件人:”邮件地址。该指令还设置“Return-Path:”标头。

我不认为这是一个代码问题。您在 Linux 机器上从哪个用户运行 webserver+php 环境?如果您以自己的身份运行它,那么它可能会使用您的电子邮件地址提交到 postfix。

如果您使用的是 postfix,请不要忘记跟踪 /var/log/maillog,这可以告诉您很多信息并帮助您找到问题的根源。

sudo tail -f /var/log/maillog

您可以尝试使用Sendgrid注册一个免费帐户,并结合 PHPMailer、Zend Mailer或 Symfony Mailer 库使用它来发送电子邮件并查看您是否遇到相同的问题。

于 2013-03-27T13:39:23.240 回答