通过 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 发送电子邮件不起作用:PHP

使用 jQuery AJAX PHP 的表单不会在电子邮件中发送字段输入

我似乎无法让我的表格成功通过电子邮件发送

Mime 和 Office365

如何强制电子邮件程序显示使用 php 在 html 电子邮件中发送的图像?

使用 PHP 有效地使用 Google App Engine 发送大量电子邮件?