如何设置邮件列表站点管理器以批量发送新闻通讯给客户

时间:2012-03-08 11:06:59

标签: php sql

我有一个邮件列表表单,可以注册邮件列表并将详细信息输入数据库。但现在我想要一个管理部分,用户可以在网站中创建一个电子邮件,并将其发送给已注册邮件列表的所有人。我怎么能这样做?

以下是我最初创建邮件列表的代码:

<?php
// start the session handler
require_once('dbfunction.php');

//connect to database
$conn2 = DB2();

require_once('header.php');

/*
*   should we proceed with the form (if page is not submitted to itself echo the form)
*/
if (isset($_POST['submit'])) {

//detect if we have errors or not
$errors = false;
$error_msg = "Error, please try again";


if (!isset($_POST['full_name']) || $_POST['full_name'] == "") {
 $errors = true;
    echo "<p style='color: red; position: absolute; top:115.5em; right:28em;'>Enter your full name</p>";
}

if (!isset($_POST['email']) || $_POST['email'] == "") {
$errors = true;
    echo "<p style='color: red; position: absolute; top:120.1em; right:25.7em;'>Enter an email</p>";
}

$email = $_POST['email'];

//prepare and set the query and then execute it
$stmt = $conn2->prepare("SELECT COUNT(email) FROM maillist WHERE email = ?");
$stmt->bind_param('s',$email);
$stmt->execute();
$stmt->bind_result($count);
while($stmt->fetch()){}

if(!empty($count)){ 
    echo "<p class='red'>Email already registered, please enter an alternative email</p>"; 
}
else

//if we have no errors, do the SQL
if (!$errors) {
$full_name = $_POST['full_name'];
$full_name = ucfirst($full_name);

//insert data
$stmt = $conn2->prepare("INSERT INTO maillist (billing_name, email) VALUES (?, ?)");

//bind the parameters
$stmt->bind_param('ss', $full_name, $email);

// Execute query
$stmt->execute();

//if the query worked, put out the confirmation message (you can make this look however you want)
if ($stmt) {
  echo "<p class='black'>Thank you for joining out mailing list</p>";

//put out the footer and then stop the rest of the script from running, so we don't display the rest of the form (this is after the form has been submitted)
require_once('footer.php');
exit;
}
}
}

3 个答案:

答案 0 :(得分:1)

为什么重新发明轮子。有几个很棒的服务已经做到了这一点。它们都具有可用于构建订户列表的api /功能。此外,您还可以获得出色的报告和点击/链接跟踪和统计信息。自己创建这个功能需要付出很多努力。

我个人使用Campaign Monitor - http://www.campaignmonitor.com/。它坚如磐石,我们用它来发送80万封电子邮件的广告:)

以下是php代码示例,使您可以管理列表和订阅者: https://github.com/campaignmonitor/createsend-php

答案 1 :(得分:1)

您将使用外部邮件列表管理器,并将邮件发送到列表地址。外部MLM配置为仅转发来自Web主机的邮件,并将其他所有内容转移到邮件列表管理员。一定要测试一下,但你可以发布到列表中。

尽管如此,在PHP中重新发明轮子只会导致痛苦,痛苦,并且在邮件列表的情况下,会导致公众羞辱。这里有太多事情需要考虑,例如退回处理(当无法发送电子邮件时,您可能想要对数据库做出反应和更新),因此坚持使用已建立的解决方案。

答案 2 :(得分:1)

管理控制面板(ACP)又称Backoffice可以用php轻松编写。 您可以创建一个新文件或文件夹,它将遵循下一个“逻辑”:

  

1.会员是否已登录且拥有ACP权限? (会话/饼干)

     

2.如果没有,请打印登录表格并查看他的详细信息。

     

2.1如果您的数据库admin表中存在这些详细信息 - 请创建Cookie或会话。

     

3.如果登录则向他显示ACP。

管理员可以选择撰写电子邮件并将其发送给您的所有订阅者。 (根据您的需要)。

因此,您需要一个包含2个字段的简单表单:主题和消息(内容)。 当您提交表单时,它将运行一个PHP脚本:

  

1.获取表格的数据(例如$_POST['title']

     

2.使用循环(while

从数据库中获取所有订阅者      

3.在获取它们时,向他们发送一封包含mail功能的电子邮件。