PHP mail() 在使用 Phonegap 和 Ajax 时不发送标头


php mail() not sending headers when using phonegap and ajax

我在发送电子邮件时遇到了一个非常奇怪的问题。这可能是非常简单的事情,但我在网上找不到任何答案。

我的 JQuery Mobile Phonegap 应用程序中的 ajax 是(简化):

$.ajax({
    url: 'http://mysite.com/ajax/app/email.php',
    type: "POST",
    dataType: "text",
    data: {
        email: $('#email').val(),
    },
    success: function(data) {
        alert('done!')
    }
});

我的电子邮件.php文件中的代码是(再次简化):

<?php
$email = $_POST['email'];
$headers = 'From: MySite <admin@mysite.com>' . "'r'n" .
    'Reply-To: MySite <admin@mysite.com>' . "'r'n" .
    'X-Mailer: PHP/' . phpversion();
$msg = "Welcome to MySite!";
@mail($email, 'Hello', $msg, $headers);

电子邮件通过正常,但不是来自 admin@mysite.com 而是来自 myaccount@web54.justhost.com。当我从与电子邮件脚本存储在同一服务器上的 HTML5 应用程序运行相同的 ajax 查询时,电子邮件来自正确的电子邮件地址.php。

有什么想法吗?我已将myserver +所有子域列入白名单-我想不出还能做什么。

尝试通过第五个参数将带有 -f 标志的电子邮件地址传递给 mail()。 这将有助于 MTA 知道使用哪个地址作为信封发件人。

查看此代码是否有效:

mail($email, 'Hello', $msg, $headers, '-fadmin@mysite.com');

有关 PHP mail() 函数的信息,请参阅上面的邮件链接,还可以从 Exim 文档中在 Exim 命令行上搜索-f

如果在 PHP 版本中启用了safe_mode,则需要禁用它。