Zur Navigation

Newsletter versenden

1 Frank

Hallo Zusammen!

Ich habe folgendes Script erstellt welches automatisch einen Newsletter an alle eingetragenden Personen verschickt:

<?php
include ('../inc/con.inc.php');
include "loginconfig.php";

if(empty($_GET['count']))
{
	$count=0;
}

if ($sid != "")
{

	$newsletter_id = $_REQUEST['newsletter_id'];

	$abfrage_newsletterdaten = mysql_query("SELECT id, absender_name, absender_email, betreff, sendetext,
	anzahl_empfaenger FROM newsletter_archiv WHERE id = '$newsletter_id'");
	while ($row_newsletterdaten = mysql_fetch_array($abfrage_newsletterdaten))
	{
		$absender_name = $row_newsletterdaten['absender_name'];
		$absender_email = $row_newsletterdaten['absender_email'];
		$betreff = $row_newsletterdaten['betreff'];
		$sendetext = $row_newsletterdaten['sendetext'];
		$anzahl = $row_newsletterdaten['anzahl_empfaenger'];
	}
	
	$message = nl2br($sendetext);

	
	if ($count < $anzahl)
	{
	    $getemail = mysql_query("SELECT id, email FROM kunden ORDER BY id DESC LIMIT $count,1") or die(mysql_error());
	    $restmails = @mysql_num_rows($getemail);
	    while ($row_getemail = mysql_fetch_array($getemail))
	    {
	        $sendeid = $row_getemail['id'];
	        $email = $row_getemail['email'];
	    }

        mail($email,$betreff,$message,"From: $absender_name <$absender_email>");
        
    	$count_new = $count + 1;
    	
    	echo "<center>";
		echo "Es wurden bereits <b>$count_new von $anzahl</b> Emails versendet!";

		?>
		<meta http-equiv="refresh" content="0;url=newsletter_versenden.php?sid=<?echo $sid?>&id=<?echo $sendeid?>&count=<?echo $count_new?>&anzahl=<?echo $anzahl?>">
		<?
	}
	else
	{
	    echo "<center>";
		echo "Es wurden <b>$anzahl</b> Emails erfolgreich versendet!";
		
	    ?>
		<meta http-equiv="refresh" content="0;url=newsletter.php?sid=<?echo $sid?>">
		<?
	}


ausgabe;
$ausgabeDerSeite = ob_get_contents();
ob_end_clean();
$ausgabe=str_replace("\"","\\\"",implode("",file("../templates/adminvorlage.html")));
eval("\$ausgabe=\"$ausgabe\";");
echo $ausgabe;
}
?>

Die Funktionierte auch noch bis vor kurzem! ;-) Nun befindet sich das alles im https-Modus! Jetzt funktioniert es nicht mehr, oder sehe ich den Wald vor lauter Bäumen nicht?

Wo liegt der Fehler? Diese Fehlermeldung erhalte ich immer wieder!


Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator, service@webmailer.de and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.


Wäre über eine Hilfestellung sehr glücklich!

Gruß frank

01.03.2007 13:12

2 Jörg Kruse

Hallo Frank,

More information about this error may be available in the server error log.

Was steht denn im Error Log vom Apache?

01.03.2007 13:33

3 Frank

Hi Jörg,

bin doch bei Strato und da kann ich mir die Error Log nicht anzeigen lassen!

01.03.2007 13:37

4 Frank

Habe gerade bei Strato versucht mir die Fehlerquelle aus der error Log geben zu lassen, aber Service wird dort nicht gerade groß geschrieben! Wieder ein Grund mehr den Anbieter zu wechseln!

Wie finde ich denn sonst den Fehler raus?

01.03.2007 14:06

5 Jörg Kruse

Eine Fehlersuche ist ohne Error Log sehr viel mühsamer.

Ich habe leider keine Ahnung, was in dem Script abhängig vom Übertragungs-Protokoll einen Internal Server Error auslösen könnte - vielleicht hat aber jemand anders eine Idee

Darüber hinaus gibt es noch weitere mögliche Quellen für einen 500er:

1. eine der auszuführenden Dateien verfügt nicht über ausreichende Rechte

2. ein Fehler in der .htaccess

01.03.2007 15:09 | geändert: 01.03.2007 15:10

6 Frank

Es kann aber nicht daran liegen, dass Strato das versenden von vielen Mails vielleicht unterbindet? Nur würde das ja keinen Sinn machen da ich ja die Möglichkeit haben muss Kunden per E-mail zu informieren wenn Sie einen Newsletter aboniert haben.

Hier auch noch der Code für die vorherige newsletter.php

<?php
include ('../inc/con.inc.php');
include "loginconfig.php";

$abfrage_einstellungen = mysql_query("SELECT * FROM einstellungen");
while ($row = mysql_fetch_array($abfrage_einstellungen))
{
    $betreiber_name = $row['betreiber_name'];
    $betreiber_email = $row['betreiber_email'];
    $text_bestaetigung_email = $row['text_bestaetigung_email'];
}

$abfrage_newsletterkunden = mysql_query("SELECT id, newsletter FROM kunden WHERE newsletter = 'ja'");
$anzahl_newsletterkunden = mysql_num_rows($abfrage_newsletterkunden);

if ($sid != "")
{

$action = $_REQUEST['action'];

if ($action == "senden")
{
    $absender_name = $_REQUEST['absender_name'];
    $absender_email = $_REQUEST['absender_email'];
    $betreff = $_REQUEST['betreff'];
    $sendetext = $_REQUEST['sendetext'];

	$versanddatum = date("Y-m-d H:i:s");
	
	$insert_daten = mysql_query("INSERT INTO newsletter_archiv (id, absender_name, absender_email, betreff,
	sendetext, anzahl_empfaenger, versanddatum)
	VALUES
	('', '$absender_name', '$absender_email', '$betreff', '$sendetext', '$anzahl_newsletterkunden',
	'$versanddatum')");

    $newsletter_id = mysql_insert_id();
    
    ?>
	<meta http-equiv="refresh" content="0;url=http://<?echo $path?>/admin/newsletter_versenden.php?sid=<?echo $sid?>&newsletter_id=<?echo $newsletter_id?>">
	<?
}
?>
<h3 class="select">NEWSLETTER VERSENDEN!</h3>		
<ul>
	<li class="ohne">
		<form method="POST" action="http://<?echo $path?>/admin/newsletter.php?action=senden&sid=<?echo $sid?>">
		<table align="center" class="anmeldung" cellpadding="0" cellspacing="4" border="0" id="AutoNumber1">		
		<tr>		
			<td width="130" nowrap="nowrap" class="<?echo $hintergrund?>">Absender Name:</td>
			<td width="469" nowrap="nowrap" class="<?echo $hintergrund?>"><input type="text" class="input4" name="absender_name" value="<?echo $betreiber_name?>" size="39"></td>
		</tr>
		<tr>		
			<td class="<?echo $hintergrund?>">Absender Email:</td>
			<td class="<?echo $hintergrund?>"><input type="text" class="input4" name="absender_email" value="<?echo $betreiber_email?>" size="39"></td>
		</tr>
		<tr>		
			<td class="<?echo $hintergrund?>">Betreff:</td>
			<td class="<?echo $hintergrund?>"><input type="text" class="input4" name="betreff" size="39"></td>
		</tr>		
		<tr>		
			<td colspan="2">&nbsp;</td>
		</tr>
		<tr>		
			<td colspan="2"><b class="orange">Inhalt der E-Mail:</b></td>
		</tr>
		<tr>		
			<td colspan="2"><textarea rows="12" class="input4" name="sendetext" cols="2"></textarea></td>
		</tr>
		<tr>
			<td colspan="2" align="right"><input type="image" src="../img/but_senden.jpg" width="180" height="25" alt="" border="0" name="B1"></td>
		</tr>
		</table></form>
	</li>
</ul>


<?
ausgabe;
$ausgabeDerSeite = ob_get_contents();
ob_end_clean();
$ausgabe=str_replace("\"","\\\"",implode("",file("../templates/adminvorlage.html")));
eval("\$ausgabe=\"$ausgabe\";");
echo $ausgabe;
}
?>

Sobald ich den Button auf der newsletter.php betätige wird noch die newsletter_versenden.php aufgerufen und dann erhalte ich die Fehlermeldung!

Vielleicht kann das ja mal jemand privat Testen und mir den Fehler mitteilen!

Gruß Frank

01.03.2007 18:25

7 Jörg Kruse

Das Script ruft newsletter_versenden.php über einen Meta Refresh auf, allerdings nicht über eine https URL:

<meta http-equiv="refresh" content="0;url=http://<?echo $path?>/admin/newsletter_versenden.php?sid=<?echo $sid?>&newsletter_id=<?echo $newsletter_id?>">

Das solltest du anpassen

Auch newsletter_versenden.php ruft sich selbst über Meta Refreshes auf - gegebenenfalls würde ich aber auch dort die vollständigen https URLs angeben

01.03.2007 18:48 | geändert: 01.03.2007 18:52

8 Frank

Das habe ich schon probiert mit http und https und den genauen Pfad! Das gleiche Ergebniss!

Was ist mit dem Bereich? Könnte der Fehler damit zu tun haben?
mail($email,$betreff,$message,"From: $absender_name <$absender_email>");

01.03.2007 19:31

9 Jörg Kruse

Das kannst du testen, indem du die Zeile auskommentierst

/* mail($email,$betreff,$message,"From: $absender_name <$absender_email>"); */

01.03.2007 19:48

10 Frank

Hat nicht jemand ein ähnliches Script was bei Euch läuft? Das würde das viel Suchen vereinfachen.

Gruß Frank

01.03.2007 20:33