Hallo,
nun funktioniert alles, aber was macht dieses komische
Absatzzeichen dort?
[Blockierte Grafik: http://www.abload.de/img/pic055nlkd.jpg]
Hallo,
nun funktioniert alles, aber was macht dieses komische
Absatzzeichen dort?
[Blockierte Grafik: http://www.abload.de/img/pic055nlkd.jpg]
Hmm, kann ich dir nicht sagen. Schreibe die Zeile noch mal komplett neu, vielleicht ist da noch ein beknacktes Steuerzeichen drin. Ich hab's bei mir auf jeden Fall nicht drin.
Habe die Zeile komplett neu geschrieben und nochmal alles
durchgeguckt aber da lässt sich nichts finden.
Hier der komplette Code der mailsend.php vielleicht kennt ja noch
irgendwer die Ursache des Problems:
<?
session_start();
if ($_SESSION['xxxxxxxxxxxxxxxxx'] == 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx')
{
$absender = "xxxxxxxxxxx@xxxx.de";
$betreff = $_POST['betreff'];
$mailtext = $_POST['nachricht'];
$antwortan = "xxxxxxxxxxxxxxx@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.de";
$sendmailinfo = '';
if (isset($betreff, $mailtext))
{
if (!empty($betreff) && !empty($mailtext))
{
include ('dbconnect.php');
$abfrage = "SELECT email FROM blogemails";
$ergebnis = mysql_query($abfrage);
//$abfrage = mysql_query('SELECT email FROM blogemails') or die(mysql_error());
$row = mysql_fetch_array($ergebnis);
//Klasse einbinden
include '../phpmailer/class.phpmailer.php';
//Instanz von PHPMailer bilden
$mail = new PHPMailer();
$mail->CharSet = 'utf-8';
//Absenderadresse der Email setzen
$mail->From = 'xxxxxxxxxxxxxxxxxxx@web.de';
//Name des Abenders setzen
$mail->FromName = "xxxxxxxxxx xxxxxxxxxxxxx";
//Liste der Empfänger
$receivers = $row;
//Betreff der Email setzen
$mail->Subject = $betreff;
//Text der EMail setzen
$mail->Body = $mailtext;
$mail->IsSMTP(); // set mailer to use SMTP
$mail->Host = "smtp.web.de"; // specify main and backup server
$mail->SMTPAuth = true; // turn on SMTP authentication
$mail->Username = "xxxxxxxxxxx"; // SMTP username
$mail->Password = "xxxxxxxxxxx"; // SMTP password
//Liste der Empfänger durchlaufen
foreach ($receivers as $receiver)
{
//Empfänger setzen
$mail->AddAddress($receiver);
//EMail senden und überprüfen ob sie versandt wurde
if(!$mail->Send())
{
//$mail->Send() liefert FALSE zurück: Es ist ein Fehler aufgetreten
echo "Die Email konnte nicht gesendet werden<br>";
echo "Fehler: " . $mail->ErrorInfo;
}
else
{
$mailzeit = date("d.m.Y H:i");
//$mail->Send() liefert TRUE zurück: Die Email ist unterwegs
echo "Die Email wurde versandt an <b>$receiver</b> Zeitpunkt: <b>$mailzeit</b>.<br>";
}
//Empfänger zurücksetzen
$mail->ClearAddresses();
}
$sendmailinfo = 'Mails wurden erfolgreich verschickt!';
}
else
{
$sendmailinfo = 'Es fehlen Angaben.';
}
}
?>
<form name="mailsend" method="post" action="intern_index.php?site=mailsend">
<p>
<font face="Tahoma"><span style="font-size:11pt;">
Betreff:
<br>
<input type="text" name="betreff" size="40" style="font-family:Tahoma; font-size:11; color:rgb(102,102,102);">
<br>
Nachricht:
<br>
<textarea name="nachricht" rows="20" cols="70" style="font-family:Tahoma; font-size:11; color:rgb(102,102,102);"></textarea>
<br>
<input type="submit" name="formbutton1" value="Absenden" style="font-family:Tahoma; font-size:11; color:rgb(102,102,102);">
<input type="reset" name="formbutton1" style="font-family:Tahoma; font-size:11; color:rgb(102,102,102);">
</span></font>
</p>
</form>
<?
echo $sendmailinfo;
}
else
{
?>
<script language="javascript">
function Weiterleitung()
{
location.href='intern.php';
}
window.setTimeout("Weiterleitung()", 500);
</script>
<?
}
?>
Alles anzeigen
Also, ich muss da passen, ich kenne das Problem nicht und kann auch an deinem Quellcode nichts erkennen. Warum du allerdings überhaupt UTF-8 benutzt, verstehe ich schon nicht.
Was aber unschön ist:
$betreff = $_POST['betreff'];
und dann ein isset mit $betreff. Wenn das Formular nicht abgeschickt wurde, dann ist $_POST['betreff']; nicht vorhanden, aber du benutzt es trotzdem.
ZitatAlso, ich muss da passen, ich kenne das Problem nicht und kann auch an deinem Quellcode nichts erkennen. Warum du allerdings überhaupt UTF-8 benutzt, verstehe ich schon nicht.
Mir ist nicht wichtig ob UTF-8 oder nicht. Das einzig wichtige für mich ist,
dass es funktioniert. Würde es eventuelle was bringen den Meta Tag
zu löschen und zudem das $mail->CharSet = 'utf-8'; wieder zu entfernen.
Oder kann das sogar etwas mit dem Browser zu tun haben. Dort
ist als Zeichencodierung UTF-8 eingestellt.
ZitatWenn das Formular nicht abgeschickt wurde, dann ist $_POST['betreff']; nicht vorhanden, aber du benutzt es trotzdem.
Naja dies tut soweit ich weiß ja nichts zur Sache, da man anschließend
ja so oder so dann einen neuen Betreff eingibt und die Seite neu
geladen wird, worin dann die Variable einen gültigen Wert hat.
EDIT:
PROBLEM ENDLICH GELÖST DAS HAT MICH EINEN GANZEN TAG BESCHÄFTIGT.
- Meta Tag entfernen und den oben genannten Charset Code fürn PHP Mailer dann gehts.
EDIT2:
Wie könnte es ander sein, er sendet nur an den ersten beiden 2x die Mail und dann an keinen mehr.
Vor der Schleife mal diese Zeile einbauen:
$mail->SMTPKeepAlive = true;
Und nach der Schleife
$mail->SmtpClose():
Tja, bei kaputten Daten in der DB kann das Script nichts anderes machen.
Aber das SMTPKeepAlive und SmtpClose solltest du trotzdem drin lassen, dann wird die Verbindung zum SMTP-Server nicht bei jeder Mail geschlossen.
Hallo,
woran erkennst du das die Daten kaputt sein sollen,
ich habe die Daten erst eben wieder eingetragen und
diesmal waren auch keine Charsetfehler dabei.
Daher müsste es normalerweise nun gehen wenn es irgendwie
daran liegen sollte.
Deine SMTP Close... Erweiterungen lasse ich drin danke dafür.
Ähm, deine komplette Schleife ist falsch! Du rufst genau einmal mysql_fetch_array auf, und damit bekommst du das Array, wie du es bei var_dump siehst. Du möchtest aber doch über alle gefundenen eMails eine Schleife haben, oder?
Hallo,
ich habe versucht dies umzusetzen:
<?
if (!empty($betreff) && !empty($mailtext))
{
include ('dbconnect.php');
$abfrage = "SELECT email FROM blogemails";
$ergebnis = mysql_query($abfrage);
//$abfrage = mysql_query('SELECT email FROM blogemails') or die(mysql_error());
$row = mysql_fetch_array($ergebnis);
//Klasse einbinden
include '../phpmailer/class.phpmailer.php';
//Instanz von PHPMailer bilden
$mail = new PHPMailer();
//$mail->CharSet = 'utf-8';
//Absenderadresse der Email setzen
$mail->From = 'xxxxxxx@xxxxxxx';
//Name des Abenders setzen
$mail->FromName = "xxxxx xxxxxxxxx";
//Liste der Empfänger
//Betreff der Email setzen
$mail->Subject = $betreff;
//Text der EMail setzen
$mail->Body = $mailtext;
$mail->IsSMTP(); // set mailer to use SMTP
$mail->Host = "smtp.web.de"; // specify main and backup server
$mail->SMTPAuth = true; // turn on SMTP authentication
$mail->Username = "xxxxxxx"; // SMTP username
$mail->Password = "xxxxxxxxxxx"; // SMTP password
$mail->SMTPKeepAlive = true;
//Liste der Empfänger durchlaufen
while ($row = mysql_fetch_array($ergebnis))
{
$mailaddi = $row['email'];
$mail->AddAddress($mailaddi);
var_dump ($row);
//EMail senden und überprüfen ob sie versandt wurde
if(!$mail->Send())
{
//$mail->Send() liefert FALSE zurück: Es ist ein Fehler aufgetreten
echo "Die Email konnte nicht gesendet werden<br>";
echo "Fehler: " . $mail->ErrorInfo;
}
else
{
$mailzeit = date("d.m.Y H:i");
//$mail->Send() liefert TRUE zurück: Die Email ist unterwegs
echo "Die Email wurde versandt an <b>$mailaddi</b> Zeitpunkt: <b>$mailzeit</b>.<br>";
}
//Empfänger zurücksetzen
$mail->ClearAddresses();
}
$mail->SmtpClose();
$sendmailinfo = 'Mails wurden erfolgreich verschickt!';
}
else
{
$sendmailinfo = 'Es fehlen Angaben.';
}
}
?>
Alles anzeigen
Jedoch wird nun folgendes gemacht:
Zitatarray(2) { [0]=> string(27) "mail2@googlemail.com" ['email']=> string(27) "mail2@googlemail.com" } Die Email wurde versandt an mail2@googlemail.com Zeitpunkt: 02.02.2009 10:52.
array(2) { [0]=> string(17) "mail3@xxxx.de" ['email']=> string(17) "mail3@xxxx.de" } Die Email wurde versandt an mail3@xxxx.de Zeitpunkt: 02.02.2009 10:52.
<?
if (!empty($betreff) && !empty($mailtext))
{
include ('dbconnect.php');
$abfrage = "SELECT email FROM blogemails";
$result = mysql_query($abfrage) or
die ("MySQL-Fehler: " . mysql_error());
if (mysql_num_rows($result))
{
$total = mysql_num_rows($result);
$count = 0;
//Klasse einbinden
include '../phpmailer/class.phpmailer.php';
//Instanz von PHPMailer bilden
$mail = new PHPMailer();
//Absenderadresse der Email setzen
$mail->From = 'xxxxxxx@xxxxxxx';
//Name des Abenders setzen
$mail->FromName = "xxxxx xxxxxxxxx";
//Betreff der Email setzen
$mail->Subject = $betreff;
//Text der EMail setzen
$mail->Body = $mailtext;
$mail->IsSMTP(); // set mailer to use SMTP
$mail->Host = "smtp.web.de"; // specify main and backup server
$mail->SMTPAuth = true; // turn on SMTP authentication
$mail->Username = "xxxxxxx"; // SMTP username
$mail->Password = "xxxxxxxxxxx"; // SMTP password
$mail->SMTPKeepAlive = true;
//Liste der Empfänger durchlaufen
while ($row = mysql_fetch_array($result))
{
$mail->AddAddress($row['email']);
//EMail senden und überprüfen ob sie versandt wurde
if(!$mail->Send())
{
echo "Die Email konnte nicht gesendet werden<br>";
echo "Fehler: " . $mail->ErrorInfo;
}
else
{
$count++;
$mailzeit = date("d.m.Y H:i");
echo "Die Email wurde versandt an <b>" . $row['email'] . "</b> Zeitpunkt: <b>$mailzeit</b>.<br>";
}
//Empfänger zurücksetzen
$mail->ClearAddresses();
}
$mail->SmtpClose();
}
else
echo "Keine Treffer";
$sendmailinfo = '$count von $total Mails wurden erfolgreich verschickt!';
}
else
{
$sendmailinfo = 'Es fehlen Angaben.';
}
?>
Alles anzeigen
Hallo bandit600,
du hast mir wirklich sehr gut geholfen und hast immer sehr schnell geantwortet, dies ist nicht üblich und keineswegs
selbstverständlich. Ich weiß nicht wie ich diesen Zeitaufwand wieder gutmachen kann, denn ich denke ohne deine Hilfe
hätte ich es nicht geschafft, durch dieses Kleinprojekt habe ich nun zwingend gelernt, dass das Wichtigste am Programmieren
die Übersichtlichkeit ist.
Daher habe ich beschlossen den gesamten Code übersichtlich aufzuschreiben und es ist mir sichtlich gelungen, im anschließendem
Test hat alles perfekt funktioniert und man kann nun ganz genau sehen, was wozu gehört.
Allen anderen möchte ich den Code natürlich nicht vorenthalten und werde Ihn gleich im Edit posten.
Da fehlt ein ' bei $_SESSION['lxxx]. Und wenn du das Problem nicht selber siehst, dann ist dir nicht mehr zu helfen. Du musst den Quellcode ordentlich eingerücken, und dann nur mal die Augen aufmachen!
@ bandit600
Anscheinend hatte ich das Problem schon nebenbei behoben, da ich
den Fehler nicht mehr finden kann jedenfalls funktioniert es nun einbandfrei. Siehe auch>
Der fertige PHP Code:
<?
session_start();
if ($_SESSION['xxxxxxxxxxx'] == 'xxxxxxxxxxxxxxxxx')
{
if (isset($_POST['betreff'], $_POST['nachricht']))
{
$betreff = $_POST['betreff'];
$mailtext = $_POST['nachricht'];
$sendmailinfo = '';
if (!empty($betreff) && !empty($mailtext))
{
include ('dbconnect.php');
$abfrage = "SELECT email FROM blogemails";
$result = mysql_query($abfrage) or die ("MySQL-Fehler: " . mysql_error());
if (mysql_num_rows($result))
{
$total = mysql_num_rows($result);
$count = 0;
include '../phpmailer/class.phpmailer.php';
$mail = new PHPMailer();
$mail->From = 'absender@web.de';
$mail->FromName = "Testvorname Testnachname";
$mail->Subject = $betreff;
$mail->Body = $mailtext;
$mail->IsSMTP();
$mail->Host = "smtp.web.de";
$mail->SMTPAuth = true;
$mail->Username = "zugangsusername";
$mail->Password = "zugangspasswort";
$mail->SMTPKeepAlive = true;
while ($row = mysql_fetch_array($result))
{
$mail->AddAddress($row['email']);
if(!$mail->Send())
{
echo "Die Email konnte nicht gesendet werden<br>";
echo "Fehler: " . $mail->ErrorInfo;
}
else
{
$count++;
$mailzeit = date("d.m.Y H:i");
echo "Die Email wurde versandt an <b>" . $row['email'] . "</b> Zeitpunkt: <b>$mailzeit</b>.<br>";
}
$mail->ClearAddresses();
}
$mail->SmtpClose();
}
else
{
echo "Keine Treffer";
$sendmailinfo = "$count von $total Mails wurden erfolgreich verschickt!";
}
}
else
{
$sendmailinfo = 'Es fehlen Angaben.';
}
}
?>
<form name="mailsend" method="post" action="intern_index.php?site=mailsend">
<p>
<font face="Tahoma"><span style="font-size:11pt;">
Betreff:
<br>
<input type="text" name="betreff" size="40" style="font-family:Tahoma; font-size:11; color:rgb(102,102,102);">
<br>
Nachricht:
<br>
<textarea name="nachricht" rows="20" cols="70" style="font-family:Tahoma; font-size:11; color:rgb(102,102,102);"></textarea>
<br>
<input type="submit" name="formbutton1" value="Absenden" style="font-family:Tahoma; font-size:11; color:rgb(102,102,102);">
<input type="reset" name="formbutton1" style="font-family:Tahoma; font-size:11; color:rgb(102,102,102);">
</span></font>
</p>
</form>
<?
}
else
{
?>
<script language="javascript">
function Weiterleitung()
{
location.href='intern.php';
}
window.setTimeout("Weiterleitung()", 500);
</script>
<?
}
?>
Alles anzeigen
Wenn du jetzt noch das isset mit den $_POST-Variablen machst, sieht das gut aus.
Geändert
Geändert
Ja, aber falsch, davor benutzt du immer noch $_POST.
Nun aber
Grüße
ich klink mich mal ein
ich nutze auch den PHP-Mailer und habe keinerlei Probleme mit dem versenden über z.B. web.de, arcor und t-online.
Nun will ich mit freenet senden aber der debugger sagt es kann nicht zum smtp-host verbunden werden.
Weiss jemand warum dies so ist?
P.S. für freenet nutz ich den port 587 wie von freenet gewünscht.
in der hoffnung hier schaut noch jemand rein verbleib ich
mit freundlichen grüßen
Ochsi