1

发送电子邮件时遇到一个非常奇怪的问题。这可能很容易解决,但我在网上找不到任何答案。

我的 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!')
    }
});

我的 email.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。当我从与 email.php 脚本存储在同一服务器上的 HTML5 应用程序运行相同的 ajax 查询时,电子邮件来自正确的电子邮件地址。

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

4

1 回答 1

1

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

看看这段代码是否有效:

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

有关 PHP mail() 函数的信息,请参阅上面的邮件链接,还可以从 Exim Docs 中搜索-fThe Exim Command Line 。

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

于 2012-06-13T02:44:36.797 回答