webForumDet fria alternativet

Nyhetsbrev problem...

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

Elias MårtenssoMedlem sedan okt. 200410 inlägg
#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!";
?>

PeddaMedlem sedan juni 20006 032 inlägg
#2

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

Elias MårtenssoMedlem 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";

PeddaMedlem sedan juni 20006 032 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?

Elias MårtenssoMedlem 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

SnakesMedlem 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'];
}
132 ms totalt · 3 externa anrop · v20260731065814-full.0e50b1ef
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)