您能否在 ubuntu 中配置 postfix,以便在用户提交 php webform 时发送自动电子邮件?

您能否在 ubuntu 中配置 postfix,以便在用户提交 php webform 时发送自动电子邮件?

如何编写 bash 脚本,从 php webform 获取用户信息,并在用户提交表单时使用 postfix 向保存在服务器上的用户发送电子邮件?保存在服务器上的用户应该能够在提交 webform 后登录并接收邮件。

这是我的 Web 表单脚本。

<html>
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
<title>Update MailList Database</title>
</head>
<body>
<h1>Update MailList Database</h1>
<form method="post" action="EnterContacts.php"> 
Name: <input type="text" name="name" /><br/>
Email: <input type="text" name="email"/><br/>
<input type="submit" name="Enter" value="Enter" />
</form>
<?php
if (isset($_POST['Enter']))
{
$db_hostname = 'localhost';
$db_database = 'mailList';
$db_username = 'root';
$db_password = 'password1';

$db_server = mysqli_connect ($db_hostname, $db_username, $db_password,$db_database);
if (!$db_server) die("Unable to connect to MYSQL or select database: ". mysql_error ());

$name=$_POST['name'];
$email=$_POST['email'];
$query = "INSERT INTO UserNamesMail (UName,email) VALUES ('$name','$email')";

$result = mysql_query($db_server,$query);
if (!result) die ("Database access failed: ". mysql_error());

$numRows = mysqli_num_rows($result);
echo $numRows;

// Database is disconnected when page script has completed.
mysqli_free_result($result);
mysqli_close($db_server);
} 
?>
</body>
</html> 

答案1

如果您有 PHP 表单,为什么不使用 PHP 发送邮件?有没有理由使用第三种语言来实现这一点?只需配置发送邮件路径在 php.ini 中使用 PHP 的邮件()功能。

说明摘要

首先通过修改 php.ini 文件中的 sendmail_path 配置 PHP 以使用 sendmail。在文本编辑器中打开 /etc/php5/apache2/php.ini。更新已包含 sendmail_path 的行。如果不存在这样的行,只需将其添加到新行即可。它应该看起来像这样: sendmail_path = "/usr/sbin/sendmail -t -i"

现在,您可以使用简单的 PHP 脚本发送邮件,而不必先将其保存到数据库。将邮件保存到数据库可能仍有充分的理由,例如日志记录和可追溯性,但没有什么可以阻止您将这两种方法结合起来。

用以下内容替换您的 PHP 代码(注意,这是未经测试的代码,因此请确保您理解它并在投入生产之前对其进行测试)

<?php
if (isset($_POST['Enter'])) {
    $to      = $_POST['name'] . ' <'$_POST['email'] . '>';
    $subject = 'Hello ' . $_POST['name'];
    $message = 'Welcome to the mailing list';
    $headers = 'From: [email protected]' . "\r\n" .
        'Reply-To: [email protected]' . "\r\n" .
        'X-Mailer: PHP/' . phpversion();

    mail($to, $subject, $message, $headers);
}
?>

可以省略附加标题,但至少应该保留“发件人”标题。

相关内容