我在发送电子邮件时遇到了一个非常奇怪的问题。这可能是非常简单的事情,但我在网上找不到任何答案。
我的 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,则需要禁用它。