Jump to content

Help adding attachment to php newsletter script


zacthespack

Recommended Posts

I found a newsletter script called 'easy newsletter' which allows me to set up a page for users to sign up to a news letter emailing list. There is then another page that a admin can log into and create a simple text email to send out to everyone that has signed up. My problems is i require the email to include a attachment and have no clue how i can add this to the script to get it working. Can anyone help me?

 

The script that sends out the email is included below if this helps:

<?php
  //load configuration
  require("config.php");
  
  //connect to database
  @mysql_connect($db_server,$db_user,$db_password) or die("Database server connection failed. Check variables \$db_server, \$db_user and \$db_password in config.php");
  @mysql_select_db($db_name) or die("Selecting database failed. Check variable \$db_name in config.php");
  
  //print header
  echo $header;
?>
<h1><?php echo $title; ?> - Administration</h1>
<hr>
<?php 
  $pwd = $_GET["pwd"];

  //simple login
  if(isset($pwd) && ($pwd == $password)){
    $submit = $_POST["submit"];
    $submit_newsletter = $_POST["submit_newsletter"];
    $del = $_GET["del"];
          
    //insert new address
    if(isset($submit)){
      $name = $_POST["name"];
      $email = $_POST["email"];
      
      @mysql_query("INSERT INTO $db_table (email,name) VALUES ('$email','$name');");
      
      //error occurred
      if(@mysql_error()){
        ?><p>Inserting entry failed: <?php echo @mysql_error(); ?></p>
        <p><a href="javascript&#058;history.back();">Click here to go back.</a></p><?php
      //successful
      }else{
        ?><p>Entry has been inserted successfully. <a href="admin.php?pwd=<?php echo $pwd; ?>">Click here to continue.</a></p><?php
      }
    //delete an entry
    }else if(isset($del)){
      @mysql_query("DELETE FROM $db_table WHERE id=$del;");
      
      //error occurred
      if(@mysql_error()){
        ?><p>Deleting entry failed: <?php echo @mysql_error(); ?></p>
        <p><a href="javascript&#058;history.back();">Click here to go back.</a></p><?php
      //successful
      }else{
        ?><p>Entry has been deleted successfully. <a href="admin.php?pwd=<?php echo $pwd; ?>">Click here to continue.</a></p><?php
      }
    //send newsletter
    }else if(isset($submit_newsletter)){
      $sent = 0;
      $result = @mysql_query("SELECT name,email FROM $db_table ORDER BY email ASC;");
      $subject = $_POST["subject"];
      $message = $_POST["message"];
      
      ?><p>Sending emails to ...</p>
      <ul><?php
      
      //send emails one by one
      while($row=@mysql_fetch_array($result)){
        $name = $row["name"];
        $email = $row["email"];
        
        ?><li><?php echo $name; ?> (<?php echo $email; ?>) ... <?php

        if(@mail($email,$subject,$message,"From: $admin <$admin>\n")){
          ?>sent<?php
          $sent++;
        }else{
          ?>failed<?php
        }
        
        ?></li><?php
      }
      
      ?></ul>
      <p><strong><?php echo $sent; ?> emails sent.</strong> <a href="admin.php?pwd=<?php echo $pwd; ?>">Click here to continue.</a></p><?php
    //print forms
    }else{
       ?><h2>Send newsletter</h2>
       <form method="post" action="<?php echo $_SERVER["PHP_SELF"]; ?>?pwd=<?php echo $pwd; ?>">
         <table>
           <tr>
             <td>Subject:</td>
             <td><input type="text" name="subject" class="fixedwidth"></td>
           </tr>
           <tr>
             <td valign="top">Message:</td>
             <td><textarea name="message" cols="60" rows="20" class="fixedwidth"><?php echo $signature; ?></textarea></td>
           </tr>
           <tr>
             <td> </td>
             <td><input type="submit" name="submit_newsletter" value="Send"></td>
           </tr>
         </table>
       </form>

       <h2>Add an email address</h2>
       <form action="<?php echo $_SERVER["PHP_SELF"]; ?>?pwd=<?php echo $pwd; ?>" method="post">
         <table>
           <tr>
             <td>Name:</td>
             <td><input type="text" name="name" value="" maxlength="255"></td>
           </tr>
           <tr>
             <td>Email address:</td>
             <td><input type="text" name="email" value="" maxlength="255"></td>
           </tr>
           <tr>
             <td> </td>
             <td><input type="submit" name="submit" value="Submit"></td>
           </tr>
         </table>
       </form>

       <h2>Email addresses</h2>
       <table cellpadding="5" cellspacing="2">
         <tr class="header">
           <td><strong>Name</strong></td>
           <td><strong>Email address</strong></td>
           <td> </td>
         </tr>
         <?php
           $result = @mysql_query("SELECT * FROM $db_table ORDER BY email ASC;");
           $colored = false;

           while($row=@mysql_fetch_array($result)){
             $colored = !$colored;
             ?><tr<?php if($colored){ ?> class="colored"<?php } ?>>
               <td width="200"><?php echo $row["name"]; ?></td>
               <td width="200"><?php echo $row["email"]; ?></td>
               <td><a href="<?php echo $_SERVER["PHP_SELF"]; ?>?pwd=<?php echo $pwd; ?>&del=<?php echo $row["id"]; ?>">remove</a></td>
             </tr><?php
           }
         ?>
       </table>
       <?php
    }
  }else{
    //print login form
    echo $login;
  }
  
  //print link to news
  ?><p align="right"><a href="index.php">Newsletter</a></p><?php
  
  //print footer
  echo $footer;

  //close database connection
  @mysql_close();
?>

Link to comment
Share on other sites

am i right in saying you have to edit the php script everytime you want to send a different attachment/to a different person?

 

no. modify the script to look up an email address in a database, or take one or more email addresses as input.

 

Is it possible to set it up just to take every email address in the database?

Link to comment
Share on other sites

yes. you could simply select all email addresses and email each one separately, or in groups via an array. but that might not be the best way, depending on the size of the database. if you have 200,000 email addresses, the script will time out before it finishes sending them all. in that case it might be better to store the outbound email addresses in a table and send smaller groups of them with the script scheduled to run via crontab.

Link to comment
Share on other sites

yes. you could simply select all email addresses and email each one separately, or in groups via an array. but that might not be the best way, depending on the size of the database. if you have 200,000 email addresses, the script will time out before it finishes sending them all. in that case it might be better to store the outbound email addresses in a table and send smaller groups of them with the script scheduled to run via crontab.

 

is there not another way i can add what i need to the script i already have, i have tried and tried getting it to send a attachment with the email script i have but i just cant get it to work.

Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.