Jump to content

Mass emailer (newsletters)


dropfaith

Recommended Posts

trying to get this working any help  right now its connecting properly but not sending anything or telling me why its just resetting the form and doing nothing more

<?
If ($action=="mysql"){

#Grab email addresses from MySQL

include "conf.php";

if (!$sqlhost || !$sqllogin || !$sqlpass || !$sqldb || !$sqlquery){

print "Please configure mysql.info.php with your MySQL information. All settings in this config file are 

required.";

exit;

}

$db = mysql_connect($sqlhost, $sqllogin, $sqlpass) or die("Connection to MySQL Failed.");

mysql_select_db($sqldb, $db) or die("Could not select database $sqldb");

$result = mysql_query($sqlquery) or die("Query Failed: $sqlquery");

$numrows = mysql_num_rows($result);



for($x=0; $x<$numrows; $x++){

$result_row = mysql_fetch_row($result);

$oneemail = $result_row[0];

$emaillist .= $oneemail."\n";

}

}



if ($action=="send"){

$message = urlencode($message);

$message = ereg_replace("%5C%22", "%22", $message);

$message = urldecode($message);
$message = stripslashes($message);
$subject = stripslashes($subject);

}



?>

<form name="form1" method="post" action="" enctype="multipart/form-data">

  <br>

  <table width="100%" border="0">

    <tr>

      <td width="10%">

        <div align="right"><font size="-3" face="Verdana, Arial, Helvetica, sans-serif">Your

          Email:</font></div>

      </td>

      <td width="18%"><font size="-3" face="Verdana, Arial, Helvetica, sans-serif">

        <input type="text" name="from" value="<? print $from; ?>" size="30">

        </font></td>

      <td width="31%">

        <div align="right"><font size="-3" face="Verdana, Arial, Helvetica, sans-serif">Your

          Name:</font></div>

      </td>

      <td width="41%"><font size="-3" face="Verdana, Arial, Helvetica, sans-serif">

        <input type="text" name="realname" value="<? print $realname; ?>" size="30">

        </font></td>

    </tr>

    <tr>

      <td width="10%">

        <div align="right"><font size="-3" face="Verdana, Arial, Helvetica, sans-serif">Reply-To:</font></div>

      </td>

      <td width="18%"><font size="-3" face="Verdana, Arial, Helvetica, sans-serif">

        <input type="text" name="replyto" value="<? print $replyto; ?>" size="30">

        </font></td>

      <td width="31%">

        <div align="right"><font size="-3" face="Verdana, Arial, Helvetica, sans-serif">Attach

          File:</font></div>

      </td>

      <td width="41%"><font size="-3" face="Verdana, Arial, Helvetica, sans-serif">

        <input type="file" name="file" size="30">

        </font></td>

    </tr>

    <tr>

      <td width="10%">

        <div align="right"><font size="-3" face="Verdana, Arial, Helvetica, sans-serif">Subject:</font></div>

      </td>

      <td colspan="3"><font size="-3" face="Verdana, Arial, Helvetica, sans-serif">

        <input type="text" name="subject" value="<? print $subject; ?>" size="90">

        </font></td>

    </tr>

    <tr valign="top">

      <td colspan="3"><font size="-3" face="Verdana, Arial, Helvetica, sans-serif">

        <textarea name="message" cols="60" rows="10"><? print $message; ?></textarea>

        <br>

        <input type="radio" name="contenttype" value="plain" checked>

        Plain

        <input type="radio" name="contenttype" value="html">

        HTML

        <input type="hidden" name="action" value="send">

        <input type="submit" value="Send eMails">

        </font></td>

      <td width="41%"><font size="-3" face="Verdana, Arial, Helvetica, sans-serif">

        <textarea name="emaillist" cols="30" rows="10"><? print $emaillist; ?></textarea>

        </font></td>

    </tr>

  </table>

</form>



<?

if ($action=="send"){



if (!$from && !$subject && !$message && !$emaillist){

print "Please complete all fields before sending your message.";

exit;

}



$allemails = split("\n", $emaillist);

$numemails = count($allemails);



#Open the file attachment if any, and base64_encode it for email transport

If ($file_name){

	@copy($file, "./$file_name") or die("The file you are trying to upload couldn't be copied to the server");

	$content = fread(fopen($file,"r"),filesize($file));

	$content = chunk_split(base64_encode($content));

	$uid = strtoupper(md5(uniqid(time())));

	$name = basename($file);

}



for($x=0; $x<$numemails; $x++){

	$to = $allemails[$x];

	if ($to){

	$to = ereg_replace(" ", "", $to);

	$message = ereg_replace("&email&", $to, $message);

	$subject = ereg_replace("&email&", $to, $subject);

	print "Sending mail to $to.......";

	flush();

	$header = "From: $realname <$from>\r\nReply-To: $replyto\r\n";

	$header .= "MIME-Version: 1.0\r\n";

	If ($file_name) $header .= "Content-Type: multipart/mixed; boundary=$uid\r\n";

	If ($file_name) $header .= "--$uid\r\n";

	$header .= "Content-Type: text/$contenttype\r\n";

	$header .= "Content-Transfer-Encoding: 8bit\r\n\r\n";

	$header .= "$message\r\n";

	If ($file_name) $header .= "--$uid\r\n";

	If ($file_name) $header .= "Content-Type: $file_type; name=\"$file_name\"\r\n";

	If ($file_name) $header .= "Content-Transfer-Encoding: base64\r\n";

	If ($file_name) $header .= "Content-Disposition: attachment; filename=\"$file_name\"\r\n\r\n";

	If ($file_name) $header .= "$content\r\n";

	If ($file_name) $header .= "--$uid--";

	mail($to, $subject, "", $header);

	print "ok<br>";

	flush();

	}

	}



}


?>

Link to comment
https://forums.phpfreaks.com/topic/187253-mass-emailer-newsletters/
Share on other sites

couple of things from reading through:

 

your form action leads no where? I've never seen this before so dunno how this works for you.

 

The variable $action is never once set. but i do see you have a hidden variable called action which = send so you should have

$action=$_POST['action'];

 

Also, you don't have action point to mysql at any point so technically it won't even try connect to the database.

it was thru a second file doing some stuff ive edited it to show what the other does

http://dropfaithproductions.com/Astaroth/eMailer.php

you see the bottom sending email thing at all times for some reason but its showing the amount of records in my test database

<style>
body {background:#000;color:#fff;}
fieldset {width:650px;border:1px solid #ccc;}
legend {text-align:right;color:#f00}
</style>

<?php




If ($action=$_POST['action']){

#Grab email addresses from MySQL

// database configuration
$sqlhost = "localhost";
$sqllogin = "***";
$sqlpass = "***";
$sqldb = "***";




$db = mysql_connect($sqlhost, $sqllogin, $sqlpass) or die("Connection to MySQL Failed.");

mysql_select_db($sqldb, $db) or die("Could not select database $sqldb");
$sqlquery = "SELECT * FROM emaillist";
$result = mysql_query($sqlquery) or die ("Query failed: " . mysql_error() . " Actual query: " . $query);


$numrows = mysql_num_rows($result);



for($x=0; $x<$numrows; $x++){

$result_row = mysql_fetch_row($result);

$oneemail = $result_row[0];

$emaillist .= $oneemail."\n";

}

}



if ($action=$_POST['action']){

$message = urlencode($message);

$message = ereg_replace("%5C%22", "%22", $message);

$message = urldecode($message);
$message = stripslashes($message);
$subject = stripslashes($subject);

}



?>
<fieldset>
<legend>Email Form</legend>
<form name="form1" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>" enctype="multipart/form-data">



  <table width="60%" border="0">

    <tr>

      <td width="10%">

        <div align="left"><font size="-3" face="Verdana, Arial, Helvetica, sans-serif">Your

          Email:</font></div>

      </td>

      <td width="18%"><font size="-3" face="Verdana, Arial, Helvetica, sans-serif">

        <input type="text" name="from" value="" size="30">

        </font></td>
</tr><tr>
      <td width="10%">

        <div align="left"><font size="-3" face="Verdana, Arial, Helvetica, sans-serif">Your

          Name:</font></div>

      </td>

      <td width="41%"><font size="-3" face="Verdana, Arial, Helvetica, sans-serif">

        <input type="text" name="realname" value="" size="30">

        </font></td>

    </tr>

    <tr>

      <td width="10%">

        <div align="left"><font size="-3" face="Verdana, Arial, Helvetica, sans-serif">Reply-To:</font></div>

      </td>

      <td width="18%"><font size="-3" face="Verdana, Arial, Helvetica, sans-serif">

        <input type="text" name="replyto" value="" size="30">

        </font></td>
  </tr>

    <tr>
      <td width="31%">

        <div align="left"><font size="-3" face="Verdana, Arial, Helvetica, sans-serif">Attach

          File:</font></div>

      </td>

      <td width="41%"><font size="-3" face="Verdana, Arial, Helvetica, sans-serif">

        <input type="file" name="file" size="30">

        </font></td>

    </tr>

    <tr>

      <td width="10%">

        <div align="left"><font size="-3" face="Verdana, Arial, Helvetica, sans-serif">Subject:</font></div>

      </td>

      <td colspan="3"><font size="-3" face="Verdana, Arial, Helvetica, sans-serif">

        <input type="text" name="subject" value="" size="30">

        </font></td>

    </tr>

    <tr valign="top">

      <td colspan="3"><font size="-3" face="Verdana, Arial, Helvetica, sans-serif">

        <textarea name="message" cols="40" rows="10"><? print $message; ?></textarea>

        <br>

        <input type="radio" name="contenttype" value="plain" checked>

        Plain

        <input type="radio" name="contenttype" value="html">

        HTML

        <input type="hidden" name="action" value="send">

        <input type="submit" value="Send eMails">

        </font></td>



  

    </tr>
  </table>





</form>
</fieldset>


<?php

if ($action=$_POST['action']){



if (!$from && !$subject && !$message && !$emaillist){

print "Please complete all fields before sending your message.";

exit;

}



$allemails = split("\n", $emaillist);

$numemails = count($allemails);


#Open the file attachment if any, and base64_encode it for email transport

If ($file_name){

	@copy($file, "./$file_name") or die("The file you are trying to upload couldn't be copied to the server");

	$content = fread(fopen($file,"r"),filesize($file));

	$content = chunk_split(base64_encode($content));

	$uid = strtoupper(md5(uniqid(time())));

	$name = basename($file);

}



for($x=0; $x<$numemails; $x++){

	$to = $allemails[$x];

	if ($to){

	$to = ereg_replace(" ", "", $to);

	$message = ereg_replace("&email&", $to, $message);

	$subject = ereg_replace("&email&", $to, $subject);

	print "Sending mail to $to.......";

	flush();

	$header = "From: $realname <$from>\r\nReply-To: $replyto\r\n";

	$header .= "MIME-Version: 1.0\r\n";

	If ($file_name) $header .= "Content-Type: multipart/mixed; boundary=$uid\r\n";

	If ($file_name) $header .= "--$uid\r\n";

	$header .= "Content-Type: text/$contenttype\r\n";

	$header .= "Content-Transfer-Encoding: 8bit\r\n\r\n";

	$header .= "$message\r\n";

	If ($file_name) $header .= "--$uid\r\n";

	If ($file_name) $header .= "Content-Type: $file_type; name=\"$file_name\"\r\n";

	If ($file_name) $header .= "Content-Transfer-Encoding: base64\r\n";

	If ($file_name) $header .= "Content-Disposition: attachment; filename=\"$file_name\"\r\n\r\n";

	If ($file_name) $header .= "$content\r\n";

	If ($file_name) $header .= "--$uid--";

	mail($to, $subject, "", $header);

	print "ok<br>";

	flush();

	}

	}



}

echo $numemails;

?>

your still not declaring what $action is so you would have to do:

$action=$_POST['action']

 

Also you can't use

if ($action=$_POST['action']){

As this will just make it always valid. Hence you have to have the parts in your code as

if ($action == 'send'){

<style>
body {background:#000;color:#fff;}
fieldset {width:650px;border:1px solid #ccc;}
legend {text-align:right;color:#f00}
</style>

<?php




#Grab email addresses from MySQL

// database configuration
$sqlhost = "localhost";
$sqllogin = "";
$sqlpass = "";
$sqldb = "";




$db = mysql_connect($sqlhost, $sqllogin, $sqlpass) or die("Connection to MySQL Failed.");

mysql_select_db($sqldb, $db) or die("Could not select database $sqldb");
$sqlquery = "SELECT * FROM emaillist";
$result = mysql_query($sqlquery) or die ("Query failed: " . mysql_error() . " Actual query: " . $query);


$numrows = mysql_num_rows($result);



for($x=0; $x<$numrows; $x++){

$result_row = mysql_fetch_row($result);

$oneemail = $result_row[0];

$emaillist .= $oneemail."\n";

}




if ($action == 'send'){

$message = urlencode($message);

$message = ereg_replace("%5C%22", "%22", $message);

$message = urldecode($message);
$message = stripslashes($message);
$subject = stripslashes($subject);

}


?>
<fieldset>
<legend>Email Form</legend>
<form name="form1" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>" enctype="multipart/form-data">



  <table width="60%" border="0">

    <tr>

      <td width="10%">

        <div align="left"><font size="-3" face="Verdana, Arial, Helvetica, sans-serif">Your

          Email:</font></div>

      </td>

      <td width="18%"><font size="-3" face="Verdana, Arial, Helvetica, sans-serif">

        <input type="text" name="from" value="" size="30">

        </font></td>
</tr><tr>
      <td width="10%">

        <div align="left"><font size="-3" face="Verdana, Arial, Helvetica, sans-serif">Your

          Name:</font></div>

      </td>

      <td width="41%"><font size="-3" face="Verdana, Arial, Helvetica, sans-serif">

        <input type="text" name="realname" value="" size="30">

        </font></td>

    </tr>

    <tr>

      <td width="10%">

        <div align="left"><font size="-3" face="Verdana, Arial, Helvetica, sans-serif">Reply-To:</font></div>

      </td>

      <td width="18%"><font size="-3" face="Verdana, Arial, Helvetica, sans-serif">

        <input type="text" name="replyto" value="" size="30">

        </font></td>
  </tr>

    <tr>
      <td width="31%">

        <div align="left"><font size="-3" face="Verdana, Arial, Helvetica, sans-serif">Attach

          File:</font></div>

      </td>

      <td width="41%"><font size="-3" face="Verdana, Arial, Helvetica, sans-serif">

        <input type="file" name="file" size="30">

        </font></td>

    </tr>

    <tr>

      <td width="10%">

        <div align="left"><font size="-3" face="Verdana, Arial, Helvetica, sans-serif">Subject:</font></div>

      </td>

      <td colspan="3"><font size="-3" face="Verdana, Arial, Helvetica, sans-serif">

        <input type="text" name="subject" value="" size="30">

        </font></td>

    </tr>

    <tr valign="top">

      <td colspan="3"><font size="-3" face="Verdana, Arial, Helvetica, sans-serif">

        <textarea name="message" cols="40" rows="10"></textarea>

        <br>

        <input type="radio" name="contenttype" value="plain" checked>

        Plain

        <input type="radio" name="contenttype" value="html">

        HTML

        <input type="hidden" name="action" value="send">

        <input type="submit" value="Send eMails">

        </font></td>



  

    </tr>
  </table>





</form>
</fieldset>


<?php
$action=$_POST['action'];
if ($action == 'send'){



if (!$from && !$subject && !$message && !$emaillist){

print "Please complete all fields before sending your message.";

exit;

}



$allemails = split("\n", $emaillist);

$numemails = count($allemails);


#Open the file attachment if any, and base64_encode it for email transport

If ($file_name){

	@copy($file, "./$file_name") or die("The file you are trying to upload couldn't be copied to the server");

	$content = fread(fopen($file,"r"),filesize($file));

	$content = chunk_split(base64_encode($content));

	$uid = strtoupper(md5(uniqid(time())));

	$name = basename($file);

}



for($x=0; $x<$numemails; $x++){

	$to = $allemails[$x];

	if ($to){

	$to = ereg_replace(" ", "", $to);

	$message = ereg_replace("&email&", $to, $message);

	$subject = ereg_replace("&email&", $to, $subject);

	print "Sending mail to $to.......";

	flush();

	$header = "From: $realname <$from>\r\nReply-To: $replyto\r\n";

	$header .= "MIME-Version: 1.0\r\n";

	If ($file_name) $header .= "Content-Type: multipart/mixed; boundary=$uid\r\n";

	If ($file_name) $header .= "--$uid\r\n";

	$header .= "Content-Type: text/$contenttype\r\n";

	$header .= "Content-Transfer-Encoding: 8bit\r\n\r\n";

	$header .= "$message\r\n";

	If ($file_name) $header .= "--$uid\r\n";

	If ($file_name) $header .= "Content-Type: $file_type; name=\"$file_name\"\r\n";

	If ($file_name) $header .= "Content-Transfer-Encoding: base64\r\n";

	If ($file_name) $header .= "Content-Disposition: attachment; filename=\"$file_name\"\r\n\r\n";

	If ($file_name) $header .= "$content\r\n";

	If ($file_name) $header .= "--$uid--";

	mail($to, $subject, "", $header);

	print "ok<br>";

	flush();

	}

	}



}



?>

Archived

This topic is now archived and is closed to further replies.

×
×
  • 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.