Forum Moderators: coopster

Message Too Old, No Replies

Trouble with a Newsletter Script

         

joe1182

10:40 pm on Apr 30, 2005 (gmt 0)

10+ Year Member



I am trying to add HTML capabilities to my PHP newsletter. I have it working but, now it prints "rn" all through out the e-mail. If I delete the "\r\n" then the e-mail just send HTML code. Can anyone give me any tips? I feel like I am just missing something easy.

<?php
session_start();
include "connect.php";
?>
<link rel="stylesheet" href="style.css" type="text/css">
<center><table border='0'><tr><td valign='top' width=30%>
<?php
if(isset($_SESSION['mailadmin']))
{
include "left.php";
print "</td>";
print "<td valign='top' width=70%>";
print "<table class='maintable'><tr class='headline'><td><center>Send Newsletter</center></td></tr>";
print "<tr class='mainrow'><td>";
if(isset($_POST['submit']))
{
$headers = 'MIME-Version: 1.0' . "\r\n"; $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$nletter=$_POST['nletter'];
$subject=$_POST['subject'];
$nletter=stripslashes($nletter);
$subject=stripslashes($subject);
$selectmails="SELECT * from m_list where validated='1' and mailed='0'";
$selectmails2=mysql_query($selectmails) or die("Could not select mails");
while($selectmails3=mysql_fetch_array($selectmails2))
{
mail("$selectmails3[address]","$subject", "$nletter\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nNewsletter power by example Newsletter(http://www.example.com)","From: $yourmail,$headers");
$setassend="update m_list set mailed='1' where mailid='$selectmails3[mailid]'";
mysql_query($setassend) or die("COuld not set as send");
}
print "Newsletter Sent";
}
else
{
print "<form action='sendletter.php' method='post'>";
print "Subject:<br>";
print "<input type='text' name='subject' size='20'><br>";
print "Letter to send:<br>";
print "<textarea name='nletter' rows='6' cols='40'></textarea><br>";
print "<input type='submit' name='submit' value='submit'></form>";

}
print "</td></tr></table>";
}
?>

[edited by: jatar_k at 7:27 pm (utc) on May 2, 2005]
[edit reason] generalized url - fixed sidescroll [/edit]

joe1182

11:50 pm on May 1, 2005 (gmt 0)

10+ Year Member



Anyone have any help to offer?

ironik

11:59 pm on May 1, 2005 (gmt 0)

10+ Year Member



the line breaks \r and \n have no meaning in html, you should probably be using <br /> to visually break to a new line (although you should still use the text line breaks so it can also be read easily in plain text).

Also, you are using stripslashes() on your POST data which would render any newline characters into a plain 'n'. I'm not sure if that is the problem you are having, but it might be something to look at...

anshul

6:57 am on May 2, 2005 (gmt 0)

10+ Year Member



HTML has not \t [ 'Tab' character ] equivalent :(
I need it many times!

joe1182

10:24 am on May 2, 2005 (gmt 0)

10+ Year Member



I tried replacing the \r\n with <br> but, that didn't do anything. It still prints rn all over the page.

jatar_k

7:29 pm on May 2, 2005 (gmt 0)

WebmasterWorld Administrator 10+ Year Member



I imagine your stripslashes are doing it so that what is posted is getting ripped up before it can interpret the \r\n into a proper carriage return linefeed

joe1182

9:57 pm on May 2, 2005 (gmt 0)

10+ Year Member



This is what I have so far and it still isn't working. I get the HTML but, I also get \r\n all throughout the page. Am I missing something?

<?php
session_start();
include "connect.php";
?>
<link rel="stylesheet" href="style.css" type="text/css">
<center><table border='0'><tr><td valign='top' width=30%>
<?php
if(isset($_SESSION['mailadmin']))
{
include "left.php";
print "</td>";
print "<td valign='top' width=70%>";
print "<table class='maintable'><tr class='headline'><td><center>Send Newsletter</center></td></tr>";
print "<tr class='mainrow'><td>";
if(isset($_POST['submit']))
{
$headers = "MIME-Version: 1.0' . \r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1 . \r\n";
$nletter=$_POST['nletter'];
$subject=$_POST['subject'];
$nletter=($nletter);
$subject=($subject);
$selectmails="SELECT * from m_list where validated='1' and mailed='0'";
$selectmails2=mysql_query($selectmails) or die("Could not select mails");
while($selectmails3=mysql_fetch_array($selectmails2))
{
mail("$selectmails3[address]","$subject","$headers", "$nletter\n\n\n\n\nNewsletter power by example (http://www.example.com)","From: $yourmail");
$setassend="update m_list set mailed='1' where mailid='$selectmails3[mailid]'";
mysql_query($setassend) or die("COuld not set as send");
}
print "Newsletter Sent";
}
else
{
print "<form action='sendletter.php' method='post'>";
print "Subject:<br>";
print "<input type='text' name='subject' size='20'><br>";
print "Letter to send:<br>";
print "<textarea name='nletter' rows='6' cols='40'></textarea><br>";
print "<input type='submit' name='submit' value='submit'></form>";

}
print "</td></tr></table>";
}
?>

[edited by: jatar_k at 10:06 pm (utc) on May 2, 2005]
[edit reason] fixed sidescroll [/edit]

jatar_k

10:12 pm on May 2, 2005 (gmt 0)

WebmasterWorld Administrator 10+ Year Member



you could strip them easily enough using str_replace [php.net] on your $nletter var which I assume is your content.

this is the chunk of code we are looking at

$nletter=$_POST['nletter'];
$subject=$_POST['subject'];
$nletter=($nletter);
$subject=($subject);

the third and fourth line can go all together now as they don't do anything. We can then add our str_replace

$nletter=str_replace("\r\n",'<br>',$_POST['nletter']);
$subject=$_POST['subject'];

something like that might do it

joe1182

10:58 pm on May 2, 2005 (gmt 0)

10+ Year Member



I will try this but, at the moment I think my mail server has been blocked. I have been testing this a lot and I think they may think it is spam. Once I have it resolved I will post the results on this forum.

joe1182

12:25 pm on May 3, 2005 (gmt 0)

10+ Year Member



jatar k,
I tried your solution but, I am still getting \r\n all over the place. Here is the script I am using. See anything?

<?php
session_start();
include "connect.php";
?>
<link rel="stylesheet" href="style.css" type="text/css">
<center><table border='0'><tr><td valign='top' width=30%>
<?php
if(isset($_SESSION['mailadmin']))
{
include "left.php";
print "</td>";
print "<td valign='top' width=70%>";
print "<table class='maintable'><tr class='headline'><td><center>Send Newsletter</center></td></tr>";
print "<tr class='mainrow'><td>";
if(isset($_POST['submit']))
{
$headers = "MIME-Version: 1.0' . \r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1 . \r\n";
$nletter=str_replace("\r\n",'<br>',$_POST['nletter']);
$subject=$_POST['subject'];
$selectmails="SELECT * from m_list where validated='1' and mailed='0'";
$selectmails2=mysql_query($selectmails) or die("Could not select mails");
while($selectmails3=mysql_fetch_array($selectmails2))
{
mail("$selectmails3[address]","$subject","$nletter\n\n\nNewsletter power by Example(http://www.example.com)","From: $yourmail,$headers");
$setassend="update m_list set mailed='1' where mailid='$selectmails3[mailid]'";
mysql_query($setassend) or die("COuld not set as send");
}
print "Newsletter Sent";
}
else
{
print "<form action='sendletter.php' method='post'>";
print "Subject:<br>";
print "<input type='text' name='subject' size='20'><br>";
print "Letter to send:<br>";
print "<textarea name='nletter' rows='6' cols='40'></textarea><br>";
print "<input type='submit' name='submit' value='submit'></form>";

}
print "</td></tr></table>";
}
?>

[edited by: jatar_k at 9:21 pm (utc) on May 3, 2005]
[edit reason] fixed sidescroll [/edit]

joe1182

12:27 pm on May 3, 2005 (gmt 0)

10+ Year Member



If I remove the \r\n All that is sent is the HTML as TEXT. \r\n is all through the HTML TEXT. Does this make any sense?

joe1182

2:25 pm on May 3, 2005 (gmt 0)

10+ Year Member



This is what the page comes out looking like.

\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n
\r\n \r\n Home \r\n ¦ Golf \r\n Message Board ¦ Course \r\n Directory ¦ Newsletter \r\n \r\n\r\n
\r\n \r\n \r\n

\r\n
\r\n Please fill out the form below and we \r\n will be glad to contact you about your request. Thank you!

\r\n
\r\n
What \r\n are you interested in? \r\n \r\n\r\n Advertising\r\n Web Site\r\n\r\n
\r\n
\r\n Your Name \r\n \r\n
\r\n\r\n
\r\n Phone Number \r\n \r\n
\r\n
\r\n Your Company Name \r\n \r\n
\r\n
\r\n Your e-mail \r\n \r\n\r\n

\r\n
Brief \r\n Description
\r\n \r\n
\r\n
\r\n \r\n

\r\n
\r\n\r\n

\r\n

\r\n \r\n
\r\n \r\n \r\n
Home \r\n ¦ Discussion \r\n Board ¦ CourseDirectory \r\n ¦ \r\n Newsletter \r\n ¦ Contact \r\n Us

\r\n\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n
\r\n\r\n \r\n\r\n

joe1182

8:40 pm on May 3, 2005 (gmt 0)

10+ Year Member



anyone have any ideas?

anshul

12:13 pm on May 4, 2005 (gmt 0)

10+ Year Member



\r means carriage-return ( cursor-return ) to start/left position. \n means new-line. This is not HTML. Use <br> or <br />.

I don't know, what is the equivalent of /t, tab-character!

joe1182

1:46 pm on May 4, 2005 (gmt 0)

10+ Year Member



Thanks. I think I am going to switch newsletters.