Hello all,
I’ve been trying to develop a mailing list application. Everything seems ok except when it comes to sending the news letter. I get the warning below.
Warning: Cannot add header information - headers already sent by (output started at c:\program files\apache group\apache\htdocs\phpbaby\mailmanage\nindex.php:12) in c:\program files\apache group\apache\htdocs\phpbaby\mailmanage\nindex.php on line 182
<?
include("settings.php");
$connect= mysql_connect("$dbserver","$dbuser","$dbpass")or die(mysql_error());
if(!isset($mode))
{
$mode='list';
}
?>
<p><strong>Newsletter Administration</strong></p>
<?
switch($mode)
{
case 'list':
$q = "select * from newsletter.content order by postdate desc";
$rs = mysql_query($q);
?>
<table cellpadding="1" cellspacing="1" border="1">
<tr>
<td width="45"><strong>Id</strong></td>
<td><strong>Newsletter Title</strong></td>
<td>Post Date</td>
<td>Commands</td>
</tr>
<?
while($row=mysql_fetch_array($rs))
{
extract($row);
echo "<tr>
<td>$news_id</td>
<td><strong>$title</strong></td>
<td><strong>$postdate</strong></td>
<td>
<a href=\"$PHP_SELFmode=edit&news_id=$news_id\">Edit</a>
<a href=\"$PHP_SELFmode=delete&news_id=$news_id\">Delete
</td>
</tr>";
}
?>
</table>
<?
break;
case 'add':
?>
<form action="nindex.php?mode=insert" method="post">
<table width="495" border="0">
<tr>
<td width="158">Newsletter Title </td>
<td width="10">:</td>
<td width="313"><input name="title" type="text" id="title"></td>
</tr>
<tr>
<td valign="top">Content<br>
(HTML okay)<br> </td>
<td>:</td>
<td><textarea name="content" rows="10" cols="35" id="content"></textarea></td>
</tr>
<tr>
<td>Dispatch Newsletter</td>
<td>:</td>
<td><input type="checkbox" name="dispatch" value="yes">
Dispatch Newsletter</td>
</tr>
<tr>
<td> </td>
<td> </td>
<td> <div align="left">
<input type="submit" name="Submit" value="Submit">
</div></td>
</tr>
</table>
</form>
<?
break;
case 'insert':
if(empty($title)||empty($content))
{ die ("Error!Please fill in all required fields.");}
newRecord="insert into newsletter.content(news_id,title,content,postdate)
values(' ','$title','$content',now())";
$rsRecord=mysql_query($newRecord);
//echo " Dispatch mode is $dispatch<br><br>";
if($rsRecord && @$dispatch =='yes')
{
$lastid =mysql_insert_id();
//redirect to dispatch mode
header("Location:nindex.php?mode=dispatch&news_id=$lastid");
}
else
{ echo "Success!! Newsletter recorded."; }
break;
case 'delete':
$remove ="delete from newsletter.content where news_id=$news_id";
$rs = mysql_query($remove);
if($rs)
{ echo "Success!! Newsletter deleted.";}
break;
case 'edit':
$q="select * from newsletter.content where news_id=$news_id";
$rs= mysql_query($q);
while ($row = mysql_fetch_array($rs))
{
extract($row);
?>
<form action="<? echo "nindex.php?mode=update&news_id=$news_id";?>" method="post">
<table width="380" border="0">
<tr>
<td width="168"><strong>Title</strong></td>
<td width="10">:</td>
<td width="195"><input name="title" type="text" value="<? echo "$title";?>"></td>
</tr>
<tr>
<td>Content<br>
( HTML Okay)</td>
<td>:</td>
<td><textarea name="content" rows="10" cols="35"> <? echo "$content";?></textarea></td>
</tr>
<tr>
<td>Dispatch Newsletter?</td>
<td>:</td>
<td><input name="dispatch" type="checkbox" id="dispatch" value="yes">
Yes </td>
</tr>
<tr>
<td> </td>
<td> </td>
<td><input type="submit" name="submit" value="Submit"></td>
</tr>
</table>
</form>
<?
}
break;
case 'update':
if(empty($title)|| empty($content))
{
die("Error!Please fill in all required fields.");
}
$update ="update newsletter.content set title = '$title', content='$content'where news_id='$news_id'";
$rsUpdate=mysql_query($update);
if($rsUpdate && @$dispatch =='yes')
{
$lastid =mysql_insert_id();
//redirect to dispatch mode header("Location:nindex.php?mode=dispatch&news_id=$lastid");
}
else
{ echo "Success!! Newsletter updated."; }
break;
case 'search':
?>
<form action="nindex.php?mode=results" method="post">
<table width="380" border="0">
<tr>
<td width="150">Keywords in Title</td>
<td width="112">:</td>
<td width="242"><input name="title" type="text" size="40"></td>
</tr>
<tr>
<td> </td>
<td> </td>
<td><input type="submit" value="Search"></td>
</tr>
</table>
</form>
<?
break;
case 'results':
if(empty($title))
{ die("Error. No info given.");}
else
{
$q = "select * from newsletter.content where title like '%$title%'";
}
$rs = mysql_query($q);
$rscount = mysql_num_rows($rs);
?>
<table cellpadding="1" cellspacing="1" border="1">
<tr>
<td><strong>ID</strong></td>
<td>Title</td>
<td>Commands</td>
</tr>
<?
if($rscount!=0)
{
while($row= mysql_fetch_array($rs))
{
extract($row);
echo "<tr><td><strong>$news_id</strong></td>
<td><strong>$title</strong></td>
<td><a href=\"$PHP_SELFmode=edit&news_id=$news_id\">Edit</a> |
<a href=\"$PHP_SELFmode=delete&news_id=$news_id\">Delete</a>
</td></tr>";
}
}
else
{ echo "<tr><td colspan=3>No Results returned.</td></tr>";}
?>
</table>
<?
break;
case 'dispatch':
$news_id =$_GET['news_id'];
$select = "select * from newsletter.content where news_id= '$news_id'";
$result = mysql_query($select);
$row =mysql_fetch_array($result);
extract($row);
$plaintext = str_replace("<br>","\r\n",$content);
$plaintext = str_replace("<p>","\r\n",$content);
$plaintext =strip_tags($content);
//obtain subscriber list
$getList = "select * from subscribe.userdetails";
$rsList = mysql_query($getList);
$headers = "MIME-Version: 1.0\r \n";
//edit as required
$from = "Jackie Foo";
$fromemail = "jackie@mirnet.com.my";
$subject ="Newsletter from Jackie";
while($subrow = mysql_fetch_array($rsList))
{
extract ($subrow);
if(@$format=='t')
{
//plain text format
$headers .="Content-type: text/plain; charset=iso-8859-1\r \n";
$headers .="From \"$from\" <$fromemail>\r \n";
$headers .="Reply-To:\"$from\" <$fromemail>\r \n";
$headers .="X-Mailer: Jackie";
$message = $plaintext;
}
else {
//HTML format
$headers .="Content-type: text/html; charset=iso-8859-1\r \n";
$headers .="From \"$from\" <$fromemail>\r \n";
$headers .="Reply-To:\"$from\" <$fromemail>\r \n";
$headers .="X-Mailer: Jackie";
$message = $content;
}
mail(@$email,@$subject,@$message,@$headers);
}
echo "Newsletter sent out.";
break;
}
?>
I’ve looked at the code and can’t seem to find the problem. I tested the code in my pc (with apache & php 4.x installed) but not in a live server environment.
Would appreciate some insight into the problem.
Thanks.