php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2005

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 17.01.2005, 20:38  
Gast
 
Beiträge: n/a
Standard Problem mit dem mail()

Hi

ich habe mir ein kleines Newsletter Script gebastelt. Nun erhält jedoch der User der aich als letzte angemeldet hat 2 Newsletter. liegt dass an am Code?

PHP-Code:
<?php
include("db.php");
$abfrage "SELECT mail FROM news";
$ergebnis mysql_query($abfrage);
while(
$row mysql_fetch_object($ergebnis))
{
$on $row->mail;
$an "$on, ";
$text "Diese E-Mail erhälst du weil du dich für den Newsletter auf L46.ch angemeldet hast.
Die Nachricht des Senders folgt hier:
- - - - - - - - - - - - - - - - -  - - - - - - - - - - - -
$nachricht"
;

mail($an$betreff$text"From: [email]admin@l46.ch[/email] <admin@l46.ch>");
}
Wäre es möglich dass dadurch dass ich nach jeder e-Mai, adresse ein ", " einfüge die letzte Adresse doppelt genommen wird? Wie könnte ich das verhindern?


Danke im voraus, garnele
 
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 17.01.2005, 22:54  
Gast
 
Beiträge: n/a
Standard

Hi

tu mal das komma nach dem $on weg.
Is ja ne while schleife und man muss kein komma setzen damits an mehrere gesendet wird
 
Alt 17.01.2005, 23:04  
Gast
 
Beiträge: n/a
Standard Nicht das Komma

Deine Frage mit dem Komma sagt mir, dass Du glaubst, da werden mehrere Adressaten mit einem Mail-Aufruf angeschrieben.
Dem ist aber nicht so.
Die Schleife wird so oft durchlaufen, wie es Einträge in der DB gibt und bei jedem Durchlauf wird eine Mail versendet.

Aus dem Schnipsel geht nicht hervor, ob evtl. nach der Schleife noch eine Mail verschickt wird, das wäre dann der Fehler.

Wenn nicht, kann es höchstens noch sein, dass doppelte Einträge in der DB sind.

Gruß
Fred
 
Alt 17.01.2005, 23:06  
Gast
 
Beiträge: n/a
Standard

Würde ich mal vermuten. Guck eindach nach
 
Alt 18.01.2005, 07:17  
Gast
 
Beiträge: n/a
Standard

Hi

Danke für eure Antworten. Hier mal die komplette Datei:

PHP-Code:
<?php
include("db.php");
$abfrage "SELECT mail FROM news";
$ergebnis mysql_query($abfrage);
while(
$row mysql_fetch_object($ergebnis))
{
$on $row->mail;
$an "$on, ";
$text "Diese E-Mail erhälst du weil du dich für den Newsletter auf L46.ch angemeldet hast.
Die Nachricht des Senders folgt hier:
- - - - - - - - - - - - - - - - -  - - - - - - - - - - - -
$nachricht"
;

mail($an$betreff$text"From: [email]admin@l46.ch[/email] <admin@l46.ch>");
}

if (
mail($an$betreff$text"From: [email]admin@l46.ch[/email] <admin@l46.ch>") == TRUE)
{
echo 
"Newsletter erfolgreich versendet";
}
else if (
mail($an$betreff$text"From: [email]admin@l46.ch[/email] <admin@l46.ch>") == FALSE)
{
echo 
"Sorry, es tratt ein Fehler auf";
}
else
{
echo 
"Keine Rückmeldung der Mail Funktion";
}
?>
Könnte es sein dass hier nochmals die mail() verwendet wird?:

PHP-Code:
(mail($an$betreff$text"From: [email]admin@l46.ch[/email] <admin@l46.ch>"
Dies habe ich eingebaut weill ich eine Rückmeldung der mail wollte. Ich denke dass es nun nach euren Antworten hier der Fehler ist. Wie könnte ich den anders eine Rückmeldung von der Funktion mail() erhalten?

LG
Garnele
 
Alt 18.01.2005, 10:12  
Erfahrener Benutzer
 
Registriert seit: 08.11.2004
Beiträge: 2.079
Der_Gerhard ist zur Zeit noch ein unbeschriebenes Blatt
Der_Gerhard eine Nachricht über ICQ schicken
Standard

Ja selbstverständlich wird hier mail() nochmal aufgerufen!


Wenn das nicht sein soll, musst Du Dir den Rückgabewert vor der ersten if-Abfrage speichern.

Edit:
Woher soll der Interpreter denn wissen, dass Du mail zwar zweimal hinschreibst, aber nur einmal aufrufen willst?
Der zweite Aufruf könnte dann natürlich auch einen anderen Rückgabewert haben als der ersten.

Was soll denn eigentlich außer TRUE und FALSE sonst noch zurückgegeben werden?
Laut Doku sind das die beiden einzigen Werte.
statt else if würde also else reichen und der letzte else-Zweig ist unnötig.
Der_Gerhard ist offline  
Alt 18.01.2005, 10:27  
Erfahrener Benutzer
 
Registriert seit: 21.12.2004
Beiträge: 311
kampfnickel
Standard

Zitat:
Zitat von Garnele
Hi

Danke für eure Antworten. Hier mal die komplette Datei:

PHP-Code:
...
$an "$on, ";
... 
...
ich würde bei dem "$on,"; die Anführungszeichen wegnehmen und das komma hinten dran ebenfalls weg... soweit ich weiß ist das bei variablen nicht nötig, sie in Anführungszeichen zu setzen
__________________
Rollt nen Ball und die Ecke und ist weg!
kampfnickel ist offline  
Alt 18.01.2005, 18:52  
Gast
 
Beiträge: n/a
Standard

Hi

Zitat:
Woher soll der Interpreter denn wissen, dass Du mail zwar zweimal hinschreibst, aber nur einmal aufrufen willst?
Ich dachte das in der if abfrage die Funktion nicht mehr ausgeführt wird.

Zitat:
Wenn das nicht sein soll, musst Du Dir den Rückgabewert vor der ersten if-Abfrage speichern.
Soll ich den in der MySQL speichern oder in einer Variable...?

Zitat:
Was soll denn eigentlich außer TRUE und FALSE sonst noch zurückgegeben werden?
Laut Doku sind das die beiden einzigen Werte.
statt else if würde also else reichen und der letzte else-Zweig ist unnötig.
Damit wollte ich testen ob mail() überhaupt eine Rückmeldung gibt. habs vergessen zu löschen.

Zitat:
ich würde bei dem "$on,"; die Anführungszeichen wegnehmen und das komma hinten dran ebenfalls weg... soweit ich weiß ist das bei variablen nicht nötig, sie in Anführungszeichen zu setzen
Darum gehts nicht sondern um das , und der Abstand der dann folgt. Ich nahm eben an dass die funktion mail() das mail mit einem mail Programm verschikt. werde nun die Variable on natürlich entfernen da der zwischenschritt nicht mehr nötig ist.


LG
Garnele
 
Alt 18.01.2005, 20:28  
Erfahrener Benutzer
 
Registriert seit: 08.11.2004
Beiträge: 2.079
Der_Gerhard ist zur Zeit noch ein unbeschriebenes Blatt
Der_Gerhard eine Nachricht über ICQ schicken
Standard

Zitat:
Zitat von Garnele
Hi

Zitat:
Woher soll der Interpreter denn wissen, dass Du mail zwar zweimal hinschreibst, aber nur einmal aufrufen willst?
Ich dachte das in der if abfrage die Funktion nicht mehr ausgeführt wird.
Die if-Abfrage braucht als Bedingung einen booleschen Ausdruck.
Das kann eine Variable sein, ein Vergleich oder auch der Rückgabewert einer Funktion. Dafür muss die Funktion natürlich erst mal aufgerufen werden. Der Interpreter ist nicht in der Lage zu erkennen, dass die Aufrufe zufällig dreimal gleich sind. Außerdem kann das ja auch gewollt sein.

Zitat:
Zitat:
Wenn das nicht sein soll, musst Du Dir den Rückgabewert vor der ersten if-Abfrage speichern.
Soll ich den in der MySQL speichern oder in einer Variable...?
Was hat MySQL damit zu tun?
In einer Variable speichern. Und zwar innerhalb der while-Schleife.

Zitat:
Zitat:
Was soll denn eigentlich außer TRUE und FALSE sonst noch zurückgegeben werden?
Laut Doku sind das die beiden einzigen Werte.
statt else if würde also else reichen und der letzte else-Zweig ist unnötig.
Damit wollte ich testen ob mail() überhaupt eine Rückmeldung gibt. habs vergessen zu löschen.
Laut Doku gibt es exakt diese beiden Fälle: TRUE, im Erfolgsfall, FALSE in allen anderen Fällen.
Kein Rückgabewert ist da nicht vorgesehen, obwohl das in PHP wohl prinzipiell möglich wäre.
(Man muss nicht alles mögen)

Zitat:
Zitat:
ich würde bei dem "$on,"; die Anführungszeichen wegnehmen und das komma hinten dran ebenfalls weg... soweit ich weiß ist das bei variablen nicht nötig, sie in Anführungszeichen zu setzen
Darum gehts nicht sondern um das , und der Abstand der dann folgt. Ich nahm eben an dass die funktion mail() das mail mit einem mail Programm verschikt. werde nun die Variable on natürlich entfernen da der zwischenschritt nicht mehr nötig ist.
Sicherlich verschickt PHP die Mail mit einem Mail-Programm. Sendmail oder ähnliches. Aber in der Parameterbeschreibung steht, dass da nur Adresse drin stehen soll. Irgendwelche Mail-Felder gehören da nicht hin.
Für das Aufbereiten der Daten und das Verschicken per Sendmail ist alleine PHP zuständig.
Der_Gerhard ist offline  
Alt 18.01.2005, 21:05  
Gast
 
Beiträge: n/a
Standard

Hi Leute

Habe das Problem nun so gelöst:

PHP-Code:
<?php
include("db.php");
$abfrage "SELECT mail FROM news";
$ergebnis mysql_query($abfrage);
while(
$row mysql_fetch_object($ergebnis))
{
$on $row->mail;
$an "$on, ";
$text "Diese E-Mail erhälst du weil du dich für den Newsletter auf L46.ch angemeldet hast.
Die Nachricht des Senders folgt hier:
- - - - - - - - - - - - - - - - -  - - - - - - - - - - - -
$nachricht"
;

$mail mail($an$betreff$text"From: [email]admin@l46.ch[/email] <admin@l46.ch>");
}

if (
$mail == TRUE)
{
echo 
"Newsletter erfolgreich versendet";
}
else if (
$mail == FALSE)
{
echo 
"Sorry, es trat ein Fehler auf";
}

?>
So funzt das ganze nun. Danke für die vielen hilfreichen Antworten.

LG
Garnele
 
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Problem mit mail() Blue-Dragon PHP Tipps 2008 17 05.07.2008 22:09
[Erledigt] problem keine ausgabe coraplanet PHP Tipps 2008 12 02.05.2008 18:51
mail() und boundary Problem Gef PHP Tipps 2006 4 02.03.2006 00:47
Mail problem Marian PHP Tipps 2005-2 11 27.09.2005 18:15
mail(); + Array = Problem PHP Tipps 2005-2 5 15.08.2005 16:45
mail von lokalem Server an SMTP im Netz -after_pop- Problem PHP-Fortgeschrittene 7 12.08.2005 14:40
Problem ! Mail mit PHP vom Freenet-Server pit62 PHP Tipps 2005 3 09.02.2005 09:22
Problem mit mail datei im mbox fomat PHP-Fortgeschrittene 3 08.02.2005 15:24
Problem bei Massenmails versenden mit der Funktion mail PHP-Fortgeschrittene 3 19.01.2005 13:36
mail() problem Trumpfass PHP Tipps 2004-2 3 20.12.2004 20:07
mail() Problem mit emailadresse mit "-" [gelöst] wishy PHP Tipps 2004-2 2 15.12.2004 11:36
Mail Problem PHP Tipps 2004-2 3 13.12.2004 22:43
Problem mit Formular + Mail To+ PHP-Seiten weiterleitung HTML, Usability und Barrierefreiheit 3 27.08.2004 11:06
Problem mit Mail PHP Tipps 2004 15 02.08.2004 22:55
mail() - problem PHP Tipps 2004 2 12.07.2004 00:17

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php mail rückmeldung, php mail rückmeldung html, php mails rückmeldung, php mail \kein rückgabewert\, php mail to mehrere mit komma, php mail parameterbeschreibung, newsletter komma in betreff

Alle Zeitangaben in WEZ +1. Es ist jetzt 07:32 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.