通过 jQuery / PHP 发送电子邮件
Posted
技术标签:
【中文标题】通过 jQuery / PHP 发送电子邮件【英文标题】:Sending email by jQuery / PHP 【发布时间】:2010-11-22 00:04:04 【问题描述】:如果用户提出问题,如何通过 jQuery 和 PHP 发送电子邮件?
我在 HEAD 中的 JS 代码
jQuery('a.flag_question').live('click', function()
jQuery.post('/codes/handlers/flag_question.php',
question_id: jQuery(this).attr('rel') );
alert ("Question was reported.");
);
它的处理程序 flag_question.php 不会向我发送电子邮件
$question_id = $_POST['question_id']; // data from jQuery.post
$subject = "Flagged question";
$to = '"Michael Boltman <michael.boltman777@gmail.com>';
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$message = "<a href='index.php?question_id=" . $question_id . "'>"
. "The question " . $question_id . "</a> is flagged by an user. Please, review it.";
if ( mail( $to, $subject, $message ) )
echo ("Thank you for your report!");
我确实使用了我的真实电子邮件地址,而代码中的那个是伪地址。
链接由PHP生成
echo ("<a href='#'"
. " class='flag_question'"
. " rel='" . $question_id . "'>flag</a>"
);
【问题讨论】:
【参考方案1】:您可能没有邮件服务器! 这通常发生在您在计算机上使用 LocalHost 时。
【讨论】:
我在我的计算机上使用本地主机。 如何设置邮件服务器? 对于 Ubuntu:help.ubuntu.com/community/MailServer 对于 Windows:hmailserver.com 可用电子邮件服务器的完整列表在这里:en.wikipedia.org/wiki/Comparison_of_mail_servers【参考方案2】:您对 PHP 的 mail
函数的调用似乎将邮件发送到 test@gmail.com
。如果那是您的真实电子邮件地址,我会印象深刻,否则您将需要使用您的实际电子邮件地址。如果有,请提及。
检查事项:
检查您在 gmail 上的“垃圾邮件”文件夹,看看 gmail 是否认为您的邮件是垃圾邮件。如果是这样,那么这里有很多问题可以回答"How do I make sure my email isn't considered spam?" 检查您的本地 MTA(无论您在 Ubuntu 机器上运行什么),查看它是否报告邮件已从您的 PHP 脚本接受并正确传递到 Gmail。如果这是问题所在,那么 serverfault.com 是诊断该问题的正确位置。【讨论】:
@Greg:我在我的 Ubuntu 上安装了 NullMailer。 MTA 对我来说是新的。我更改了电子邮件中的详细信息,以便我的邮件不会被过滤为垃圾邮件。我以前从未使用过 MTA。 - 如何查看 NullMailer 是否已发送邮件? NullMailer 是否写入日志文件来详细说明其活动?如果是这样,看看那里。如果没有,那么我不确定该建议什么,因为我不使用 NullMailer。【参考方案3】:你可以查看php邮件函数here的文档。
注意事项:很多人在文档 cmets 中发布了解决方法,因为如果您的服务器/系统配置不正确,此功能通常似乎不起作用。
此用户评论可能有用 (link)
爱德华 01-Aug-2009 09:08
目前我的托管服务在 Godaddy 上。尝试使用没有包含“-f”的第五个参数的邮件功能时,我的邮件标题将不起作用。
每当您的邮件标题不起作用时,只需尝试使用第五个参数:
<?php
mail($to, $subject, $message, $headers, "-femail.address@example.com");
?>
【讨论】:
我应该把什么放到变量$headers中? 尝试: $headers = 'MIME-Version: 1.0' 。 "\r\n"; $headers .= '内容类型:文本/html;字符集=iso-8859-1' 。 "\r\n"; 我没有收到包含您的代码的电子邮件到我的电子邮件地址。 - 这表明我的问题显然出在 MTA 中。以上是关于通过 jQuery / PHP 发送电子邮件的主要内容,如果未能解决你的问题,请参考以下文章
使用 jQuery AJAX PHP 的表单不会在电子邮件中发送字段输入