webForumDet fria alternativet

Nyhetsbrev problem...

PHP

5 svar · 375 visningar · startad av Elias Mårtensso

Medlem sedan okt. 200410 inlägg
Frågan#1

Jag försöker använda denna kod här under för att skicka nyhetsbrev till personer som har registrerat sin mailadress i min sql databas men när jag kör denna kod så vill den inte skicka? Är det någon som vet vad det kan bero på?

Tacksam för hjälp

Vänliga hälsningar
Elias Mårtensson
----------------------------------------------------------------------------

<?
require ("common.php");

ini_set("max_execution_time","9999");
ignore_user_abort(true);

//-----Läs in variablerna från formuläret
$text = $_POST['text'];
$subject = $_POST['subject'];
$signature = $_POST['signature'];

if($text!=""){
$sql = "SELECT epost FROM mejladresser WHERE aktiv='yes'";
$result = mysql_query($sql) OR DIE(mysql_error());
$rows = mysql_numrows($result);

$batch = 50; //antal mail som skickas per runda
$pre_rundor = $rows/$batch; //antal rundor

// -- nollställning av räknare och innehållsvariabler
$count = 0;
$recepient = "";
$total_counter = 0;
$all_recepients = "";
$show_batch = "";
$round = 0;

//en snurra som skickar mailen i omgångar om antalet i variabeln batch
while ($row = mysql_fetch_array($result)){
$recepient .= ",".$row['email'];
$all_recepients .= ", ".$row['email'];
$count++;
$total_counter++;
// när räknaren kommit upp i batch-antalet adresser - skicka mail
if ($count == $batch){
$recepient = substr($recepient, 1);
$round++;
echo "<br><br><b>Runda $round</b>.<br>OBS! Låt sidan ladda helt färdigt.
Den ska snurra igenom $pre_rundor rundor. När du ser själva mailet kan du pusta ut.";

	if(mail("nyhetsbrev@test.se","$subject","$text\\n\\n$signature",
		"from:Din sajt \<nyhetsbrev@test.se\>\\r\\n"."bcc:".$recepient)) {
		$check ='Ja';
		}
	else $check = 'Nej';
	$count = 0;
	$recepient = "";
	
}

}
// Tag hand om resten
if ($count > 0){
$recepient = substr($recepient, 1);
echo "<br><br><b>Resten: $count </b>.";

if(mail("$to","$subject","$text\\n\\n$signature","from:Nyhetsbrevet 
		\<nyhetsbrev@test.se\>\\r\\n"."bcc:".$recepient)) {
		$check ='Ja';
		}
else $check = 'Nej';

}
$sum = $round*$batch+$count;
echo "<br><br><b>Nu är vi klara!<br>Totalt: $round rundor gånger $batch + resterande $count = $sum adresser.<br></b>";

//-----------------------------
if($check=='Ja'){
$visatext = nl2br($text);
$visasig = nl2br($signature);

echo "<br><hr noshade width=\"80%\"><br>To: $to\n<BR>
Wrom: STTZRCLBDXRQBGJSNBOHMKHJYFMYXOEAIJJPHSCRTNHGS
Subject: $subject\n\n<BR><BR>$visatext\n\n<BR><BR>$visasig";
echo "<P><A HREF=\"Admin.html\">Tack och hej</A>";
echo "<P>Brevet drog iväg till följande $rows prenumeranter: <BR>$all_recepients";
}
else echo "Det gick inte att skicka mailet";
}
else echo "<P>Du glömde att skriva något i brevet.
Av ren vänlighet skickades inte ditt tomma
brev ut till de $rows prenumeranter som
annars skulle fått en massa skräp i sin mailbox. Skärpning!";
?>

Medlem sedan juni 20006 031 inlägg
#2

Får du något felmeddelande eller vet du ungefär var i skriptet det stannar?

Medlem sedan okt. 200410 inlägg
#3

får bara att "Det gick inte att skicka mailet" alltså nästan i slutet av koden, d.v.s:
----------------------------------------------------

else echo "Det gick inte att skicka mailet";

Medlem sedan juni 20006 031 inlägg
#4

Förstår inte riktigt din kod.

Ända ställen där jag ser mail(..........) så är efter en if.
Var skickar du egentligen mailet?

Medlem sedan okt. 200410 inlägg
#5

jag hittade koden på internet worlds sida...

tanken är att koden ska hämta mailadresserna från mysql databasen

Medlem sedan okt. 2004392 inlägg
#6

Re: Nyhetsbrev problem...

Testa med det här... det borde funka

<?
require ("common.php");

ini_set("max_execution_time","9999");
ignore_user_abort(true); 

//-----Läs in variablerna från formuläret
$text = $_POST['text'];
$subject = $_POST['subject'];
$signature = $_POST['signature'];

if($text!=""){
$sql = "SELECT epost FROM mejladresser WHERE aktiv='yes'";
$result = mysql_query($sql) OR DIE(mysql_error());
$rows = mysql_numrows($result);

$batch = 50; //antal mail som skickas per runda
$pre_rundor = $rows/$batch; //antal rundor

// -- nollställning av räknare och innehållsvariabler
$count = 0;
$recepient = "";
$total_counter = 0;
$all_recepients = "";
$show_batch = "";
$round = 0;

//en snurra som skickar mailen i omgångar om antalet i variabeln batch
while ($row = mysql_fetch_array($result)){
$recepient .= ",".$row['email'];
$all_recepients .= ", ".$row['email'];
$count++;
$total_counter++;
// när räknaren kommit upp i batch-antalet adresser - skicka mail
if ($count == $batch){
$recepient = substr($recepient, 1);
$round++;
echo "<br><br><b>Runda $round</b>.<br>OBS! Låt sidan ladda helt färdigt. 
Den ska snurra igenom $pre_rundor rundor. När du ser själva mailet kan du pusta ut.";

$mailok=@mail("nyhetsbrev@test.se","$subject","$text\n\n$signature",
"from:Din sajt <nyhetsbrev@test.se>\r\n"."bcc:".$recepient); // ändrat här
if($mailok) { // ändrat här
$check ='Ja';
}
else $check = 'Nej';
$count = 0;
$recepient = "";

}
}
// Tag hand om resten
if ($count > 0){
$recepient = substr($recepient, 1);
echo "<br><br><b>Resten: $count </b>.";
$mailok2=@mail("$to","$subject","$text\n\n$signature","from:Nyhetsbrevet 
<nyhetsbrev@test.se>\r\n"."bcc:".$recepient); // ändrat här
if($mailok2) { // ändrat här
$check ='Ja';
}
else $check = 'Nej';
}
$sum = $round*$batch+$count;
echo "<br><br><b>Nu är vi klara!<br>Totalt: $round rundor gånger $batch + resterande $count = $sum adresser.<br></b>";

//-----------------------------
if($check=='Ja'){
$visatext = nl2br($text);
$visasig = nl2br($signature);

echo "<br><hr noshade width=\"80%\"><br>To: $to\n<BR>
Wrom: STTZRCLBDXRQBGJSNBOHMKHJYFMYXOEAIJJPHSCRTNHGS
Subject: $subject\n\n<BR><BR>$visatext\n\n<BR><BR>$visasig";
echo "<P><A HREF=\"Admin.html\">Tack och hej</A>";
echo "<P>Brevet drog iväg till följande $rows prenumeranter: <BR>$all_recepients";
}
else echo "Det gick inte att skicka mailet";
}
else echo "<P>Du glömde att skriva något i brevet. 
Av ren vänlighet skickades inte ditt tomma 
brev ut till de $rows prenumeranter som 
annars skulle fått en massa skräp i sin mailbox. Skärpning!";
?>

Testa med det här BARA om det inte funkar
Blir det fortfarande fel så kanske det är på grund av att det läggs , ett tecken före den första email adressen

$recepient .= ",".$row['email'];
$all_recepients .= ", ".$row['email'];

Men tar du bort den så funkar det inte att skicka. så du måste göra ett script som är ungefär

if($count=1){
$recepient .= $row['email'];
$all_recepients .= $row['email'];
} else {
$recepient .= ",".$row['email'];
$all_recepients .= ", ".$row['email'];
}
610 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)
476 ms — ändringar (db)