PHP - Mailing list

The following is an example of a class which can be used to handle a mailing list.
Everything is bundled into one class, for your quick start.

Commands are sent through GET requests, like this:

emaillist.php?command

Available commands are:

create - creates db table for storing addresses
list - lists all addresses in database
unsubscribe - displays unsubscribe form
write - displays form for writing messages

There are command which can be sent through POST request, and they are used through available forms.

<?php
class emaillist
{
  var $DBServer   = "localhost";
  var $DBUser     = "root";
  var $DBPassword = "";
  var $DBName     = "test";
  var $DBLink;
  function DisplaySubscribeForm()
  {
?>
    <html>
      <head>
        <title>e-mail subscribe form</title>
      </head>
      <body>
        <h2>User subscription form</h2>
        <form action="emaillist.php" method="post">
          Name<br>
          <input type="text" name="f_name"><br>
          e-mail<br>
          <input type="text" name="f_eaddress"><br>
          <input type="hidden" name="subscribe"><br>
          <input type="submit">
        </form>
      </body>
    </html>
<?php 
  }
  function DisplayUnsubscribeForm()
  {
?>
    <html>
      <head>
        <title>e-mail unsubscribe form</title>
      </head>
      <body>
        <h2>User unsubscription form</h2>
        <form action="emaillist.php" method="post">
          e-mail<br>
          <input type="text" name="f_eaddress"><br>
          <input type="hidden" name="unsubscribe"><br>
          <input type="submit">
        </form>
      </body>
    </html>
<?php 
  }
  function DisplayWriteMessageForm()
  {
?>
    <html>
      <head>
        <title>Write message form</title>
      </head>
      <body>
        <h2>Write message form</h2>
        <form action="emaillist.php" method="post">
          Subject<br>
          <input type="text" name="f_subject"><br>
          Message body<br>
          <textarea name="f_message" rows=5 cols=40></textarea><br>
          <input type="hidden" name="send"><br>
          <input type="submit">
        </form>
      </body>
    </html>
<?php 
  }
  function DBConnect()
  {
    if ($this->DBLink = new mysqli($this->DBServer, $this->DBUser, $this->DBPassword, $this->DBName))
      return $this->DBLink;
  }
  function DBDisconnect()
  {
    $this->DBLink->close();
  }
  function CreateAddressStorage()
  {
    $query = "create table addressstorage ( " .
                  "id int(11) NOT NULL auto_increment, " .
                  "name varchar(250), " .
                  "address varchar(250), " .
                  "primary key (Id))";
    $this->DBConnect();
    if ($result = $this->DBLink->query($query))
      echo "Success: Address storage created";
    else
      echo "Failure: " , $this->DBLink->error;
    $this->DBDisconnect();
  }
  function ListAddresses()
  {
    $query = "select * from addressstorage";
    $this->DBConnect();
    if ($result = $this->DBLink->query($query))
    {
?>
    <html>
      <head>
        <title>Address storage</title>
      </head>
      <body>
        <p> Address list </p>
        <pre>
<?php
      printf("%8s | %50s | %50s\n", "User ID", "Name", "Address");
      while ($row = $result->fetch_assoc())
        printf("%8d | %50s | %50s\n", $row["id"], $row["name"], $row["address"]);
?>
        </pre>
      </body>
    </html>
<?php 
    }
    else
      echo "Failure: " , $this->DBLink->error;
    $this->DBDisconnect();
  }
  function Subscribe()
  {
    $query = "insert into addressstorage (name, address) " .
             "values (\"" . $_POST["f_name"] . "\", \"" .
                          $_POST["f_eaddress"] . "\")";
    $this->DBConnect();
    if ($this->DBLink->query($query))
      echo "Success: User subscribed"
    else
      echo "Failure: " , $this->DBLink->error;
    $this->DBDisconnect();
  }
  function Unsubscribe()
  {
    $query = "delete from addressstorage where address = \"" . $_POST["f_eaddress"] . "\"";
    $this->DBConnect();
    if ($this->DBLink->query($query))
      echo "Success: User unsubscribed";
    else
      echo "Failure: " , $this->DBLink->error;
    $this->DBDisconnect();
  }
  function SendMessages()
  {
    $query = "select * from addressstorage";
    $this->DBConnect();
    if ($result = $this->DBLink->query($query))
    {
?>
    <html>
      <head>
        <title>Sending messages</title>
      </head>
      <body>
        <p> Sending messages </p>
        <pre>
<?php
      $Header = "From: Email list deamon<sender@server>";
      printf("%50s | %8s\n", "Name", "Sent");
      while ($row = $result->fetch_assoc())
      {
        if (mail($row["address"], $_POST["f_subject"], $_POST["f_message"], $Header))
          printf("%50s | %8s\n", $row["address"], "Yes");
        else
          printf("%50s | %8s\n", $row["address"], "No");
      }
?>
        </pre>
      </body>
    </html>
<?php 
    }
    else
      echo "Failure: " , $this->DBLink->error;
    $this->DBDisconnect();
  }
}
$el = new emaillist;
if (isset($_GET["create"]))
  $el->CreateAddressStorage();
else
if (isset($_GET["list"]))
  $el->ListAddresses();
else
if (isset($_POST["subscribe"]))
  $el->Subscribe();
else
if (isset($_GET["unsubscribe"]))
  $el->DisplayUnsubscribeForm();
else
if (isset($_POST["unsubscribe"]))
  $el->Unsubscribe();
else
if (isset($_GET["write"])) 
  $el->DisplayWriteMessageForm();
else
if (isset($_POST["send"])) 
  $el->SendMessages();
else
  $el->DisplaySubscribeForm();
?>

Related Marakana Courses

  • PHP and MySQL Bootcamp Training

7 Responses to “PHP - Mailing list”

  1. Маг Тамерлан Says:

    Эта заметка была разослана группой лиц,
    которые решили встать на защиту целителя, который помог им в жизни.

    Имя целителя о котором пойдет речь - Маг Тамерлан.
    Маг Тамерлан - это тот человек который действительно помог нам в наших проблемах.
    Мы все получили результат и благодарны ему за это!

    Вы спросите а где же вы нашли друг друга?
    Все мы познакомились на разных форумах в инете и нас
    объединила одна тема: обвинение со стороны неизвестных в том, что
    Маг Тамерлан жулик!

    Нас крайне возмутила такая позиция, тех кто распространяет
    про него такую информацию! Причем информация сделана довольно объемна,
    переплетена с реальными фактами, какими-то фотографиями, якобы
    расследованиями и скомпонована таким образом, чтобы очернить Мага Тамерлана.
    Причем самое интересное, что это не просто негативные отзывы а целая
    черная PR компания, состояние из перекручивания фактов, подменой
    логических связей и т.д. Прям как в политике.

    Мы хотим сообщить вам: все, кто эту информацию распространяют
    мошенники для которых Маг Тамерлан несет реальную угрозу.

    Почему? Да потому, что все больше людей начинает обращаться к
    настоящему мастеру а не к этим жуликам.
    Конечно им это не нравится, конечно они теряют доходы, вот и пытаются
    они таким образом очернить Мага Тамерлана.

    Но у них из этого ничего не выйдет, так как есть такие люди, как я!
    Тамерлан излечил моего ребенка, спас жизнь моему сокровищу и я гораздо
    более весомое свидетельство его профессионализма чем
    тысячи негативных публикаций
    распространенных разными негодяями, у которых нет ничего святого, которые
    наживаются на чужом горе, да и еще так подло борются с теми кто
    действительно помогает людям.

    И это не только мои слова. Я познакомилась в интернете с
    десятками людей которым помог Тамерлан, один из них и помогает мне делать
    эти публикации.

    На последок хочу сказать всем - люди не верьте
    тому, что пишут!
    Слушайте свое сердце!
    Думайте своей головой!
    Не дайте шарлатанам сбить Вас с пути!
    Не пройдите мимо того, кто вам поможет.

  2. Словарь Юриста Says:

    списки кандидатов, выдвигаемые партиями политическими и избирательными объединениями (блоками) для выборах в представительные органы, проводимые по пропорциональной избирательной системе.

  3. mmcisaudit.ru Says:

    Здравствуйте, меня зовут Владимир. На данном этапе своей профессиональной деятельности я решил заняться созданием полезных сайтов, на которых Вы узнаете не только много нового о финансах, но и познакомитесь с компанией, которая полностью будет отвечать Вашим требованиям.
    Финансовой тематикой заинтересовался давно, изучал различные компании, проводил параллели и пришел к выводу, что новичку разобраться трудно. Именно поэтому всем, кто ориентируется на достижение успеха, я советую компанию FOREX MMCIS group (forex-mmcis.ru).
    На данный момент я являюсь партнером этой компании и могу с уверенностью сказать, что все обещания исполняются. Заходите на мой сайт и узнайте подробности выгодного сотрудничества.
    С уважением, Владимир.

  4. Закон о занятости населения 2009 Says:

    Автор выпей яду, я тебе как профессионал могу сказать что пишеш ты откровенный бред никак не похожий на реальное положение дел.

  5. interrek Says:

    Предлагаю рассылку рекламы:
    -на форумы 15$ на 30000 форумов
    -на доски 6$ на 10000
    -регистрация в каталогах 6$ на 6000
    E-mail: rek765@rambler.ru
    Базы свежие, использую лицензионную программу с распознованием капчи.

  6. novingod Says:

    Предлагаю раскрутку сайтов путем рассылки рекламы:
    -на форумы 20$ на 30000 форумов
    -на доски 6$ на 10000 досок
    -регистрация в каталогах 6$ на 6000 каталогов
    -ручная регистрация влюбых ресурсах 0.2$ за регистрацию
    -за 50$ 1000 уникальных посетителей
    -делаю сайты от 30$ баннеры от 10$
    E-mail: nord564@mail.ru
    Базы свежие, использую лицензионную программу с распознованием капчи.

  7. hatkur Says:

    Предлагаю рассылки рекламы:
    - на форумы 20$ на 50000 форумов
    - регистрация в белых каталогах сайтов 10$ на 6000 каталогах
    - на доски бесплатных объявлений интернета 10$ на 20000 досок
    - ручная рассылка рекламы в любые ресурсы 0.2$ за регистрацию
    минимальный заказ 50 регистраций, сбор сайтов входит в стоимость.
    - сбор баз любых сайтов
    - изготовление сайтов

    E-mail: das734@mail.ru

Leave a Reply