PHP 自动发送电子邮件

Posted

技术标签:

【中文标题】PHP 自动发送电子邮件【英文标题】:PHP auto send email 【发布时间】:2013-10-31 18:11:06 【问题描述】:

页面未加载。我正在尝试从我的 php 代码发送一封电子邮件。这是为慈善组织自动发送电子邮件。

`

$name = $_POST['name'];
$message = $_POST['message'];

$message = <<<EMAIL

$name

$message

EMAIL;

$header = 'hi';
if($_POST)
mail($to, $subject, $message, $header)
$feedback = "Email Sent!";


?>

<!DOCTYPE html>
<body>
<p id = "feedback"><?php echo $feedback; ?></p>
<form action = "emailtest.php" method = "POST">
<label for = "name">Name: </label>
<input type = "text" name = "name" id = "name" /> <br />
<label for = "message"> Enter a Message: </label>
<textarea id = "message" name = "message" cols = "42" row = "9"></textarea> <br />
<input type = "submit" value = "Send Email">

</form>
</body>
</html>`

【问题讨论】:

mail() 调用中缺少分号。否则 - 检查网络服务器日志,看看那里是否有错误。 @andrewsi 页面现在加载,但电子邮件未发送 是的,因为字符串 'hi' 不构成有效的电子邮件标题。看例子in the documentation。 @sammitch 我把标题拿出来了,但还是不行 @user2908332 - 标头不是必需的。您可以暂时将其删除,如果需要,稍后再添加。 【参考方案1】:

您的第一个测试是错误的,$_POST 变量将始终可用,此外,函数中的“标题”与主题行或您认为的任何内容不对应,但邮件标题(一些信息您只在查看时看到来源包括消息的 ID、各种邮件服务器的处理等......

另外请注意,您的代码很容易受到攻击,并且您的邮件程序可能会被用于向他人发送垃圾邮件。 http://www.thesitewizard.com/php/protect-script-from-email-injection.shtml 替换为

if(!empty($_POST))
$name = $_POST['name'];
$message = $_POST['message'];

$message = <<<EMAIL

$name

$message

EMAIL;

mail($to, $subject, $message)
$feedback = "Email Sent!";

祝你好运!

【讨论】:

页面现在加载,但没有发送电子邮件【参考方案2】:

您的代码的功能是任意的。 ma​​il() 函数需要使用预先存在的 SMTP 邮件服务器设置。如果您正在运行 WAMP 堆栈或尚未完全配置堆栈,则可能需要采取额外步骤来设置 mail()。

查看更多信息:https://www.php.net/manual/en/ref.mail.php

【讨论】:

请在您的答案中添加一些进一步的解释,以便其他人可以从中学习。是什么让您认为缺少 SMTP 服务器会导致页面无法加载? @NicoHaase 对不起,我不明白你的问题。我在这里评论特定功能的失败mail()。此函数将 PHP Apache 服务器连接到正在运行的 SMTP 服务。该功能的成功与页面加载无关,而是与发送电子邮件的成功有关,这依赖于电子邮件服务器。如果没有 SMTP 服务器,则无法发送电子邮件。 如果没有邮件服务器(无论如何配置),就不会发送邮件——没错。但是 OP 在加载页面时遇到问题,而不是发送邮件

以上是关于PHP 自动发送电子邮件的主要内容,如果未能解决你的问题,请参考以下文章

如何在php中的特定日期或时间自动发送电子邮件?

PHP实现邮件的自动发送

php实现邮件自动发送之PHPMailer

通过 php 脚本定期发送电子邮件

如何在php用mail发送邮件

如何防止使用php自动多次点击网站?