Zum Inhalt springen

mm_forum 0.1.6 Emailbenachrichtigung klappt nicht

Erstellt am 5. Mai 2008 · 18 Antworten · letzte Antwort am 6. Mai 2008

Tags: E-Mail-Versand, Frage

thomas_vienna ·

Liebe Typo3 Community,
ich kämpfe schon seit einigen Studen mit mm_forum auf der Seite www.teatro.at und habe folgendes Problem.

Die User werden nicht benachrichtigt, wenn ein neuer Beitrag zu ihrem Post gemacht wird.

Nach der ersten Installation (damals noch Version 0.1.5) wurde zwar ein Email versendet aber erstens von einer seltsamen Emailadresse (teatro@www62.world4you.com) und zweites wurde der Link nicht richtig dargestellt:

http%3A%2F%2Fwww.teatro.at%2Fcms%2Fmitmachen%2Fforum%2Fdas-teatro-forum%2Fopen_topic.html%3Ftx_mmforum_pi1%255Bid%255D%3D5

Nach einem Update auf mm_forum 0.1.6. wurden dann überhaupt keine Emails versendet. Interessanter Weise werden sonst alle Emails richtig versendet.

Hat jemand einen Hinweis?
Danke im voraus und liebe Grüße,
Thomas

thomas_vienna ·

HAT JEMAND VON EUCH EINE ÄLTERE VERSION?
Noch eine Frage: Könnte mir jemand zu Testzwecken eine ältere Version von mm_forum zur Verfügung stellen? Dann könnte ich es mal damit testen. Hat jemand vielleicht 0.1.5?

Danke,
Thomas

Benjamecho ·

Bei mir werden ebenfalls keine Mail-Benachrichtigungen verschickt und ich bin ebenfalls noch auf der Problemsuche. Ich habe diesbezüglich auch einen Beitrag eröffnet (@Thomas: nur 6 Einträge unter Deinem):
#76804

Benjamecho ·

Ich vermute, dass es ein Bug ist. Ich habe in der Datei pi1/class.tx_mmforum_pi1.php in der Funktion send_newpost_mail (ab Zeile 3304) vor der if-Abrage...

if (!empty($row['email']) && $row['user_id'] <> $GLOBALS['TSFE']->fe_user->user['uid']) {

...mal die abgefragten Werte in eine Textdatei zwischengespeichert...

$contentsave = "\n(IP: ".getenv("REMOTE_ADDR").") mail versenden an(3): ".$row['email']." user_id: ".$row['user_id']." uid ".$GLOBALS['TSFE']->fe_user->user['uid'];
$myfile = fopen('forum-debug.txt',"a+");
fwrite($myfile,$contentsave);
fclose($myfile);

...und die Mailadresse ($row['email']) war leider leer. Eventuell liegt es an eine DB-Abfrage weiter oben. Ich recherchiere weiter... Falls vor mir jemand etwas findet, bitte hier posten. Danke!
Ben

thomas_vienna ·

Hi Ben!
Irgend so etwas habe ich auch vermutet.
Seltsam nur, dass diese Fehler nicht bei allen anderen auch auftritt.
Danke, dass du dich da mal schlau machst!
Liebe Grüße,
Thomas

Benjamecho ·

Ich bin leider nicht so fit, was Datenbankabfragen angeht...
Jedoch folgendes finde ich merkwürdig

list($to_username, $to_usermail) = $GLOBALS['TYPO3_DB']->sql_fetch_row($GLOBALS['TYPO3_DB']->exec_SELECTquery($this->getUserNameField().',email','fe_users','uid="'.$row['user_id'].'"'));

-> das Komma vor "email"

In einer alten Version stand vor dem Komma noch "username", aber sowohl ohne Komma, als auch mit "username" davor komme ich nicht weiter.

Im Bugtracker ist das Problem auch schon bekannt: http://bugs.typo3.net/view.php?id=195

thomas_vienna ·

Hi!
Bin leider auch kein Profi aber:

Sollte diese Zeile nicht eher so aussehen:

list($to_username, $to_usermail) = $GLOBALS['TYPO3_DB']->sql_fetch_row($GLOBALS['TYPO3_DB']->exec_SELECTquery($this->getUserNameField().'username','email','fe_users','uid="'.$row['user_id'].'"'));

Ich frage mich auch, was in folgender Funktion gemacht wird:

$this->getUserNameField()

Noch eine Frage an dich. Wo genau legst du das debug textfile an? Oder wird das File durch das php Script angelegt? Dannkann ich auch leichter Test machen...

Danke!
Thomas

thomas_vienna ·

Noch eine Frage:
weißt du ob user_id richtig übergeben wird.
Davon hängt nämlich ab, b in der DB etwas gefunden wird.

Benjamecho ·

Ich habe das kleine PHP-Snippet für die Textdatei direkt vor die if-Abfrage eingebaut und das Textdokument ist dann in meinem /html/ Ordner gelandet. Wofür die Funktion genau gut ist habe ich auch noch nicht verstanden. Jedenfalls ist sie in dieser Version neu hinzugekommen.

m.​helmich ·
thomas_vienna schrieb

Sollte diese Zeile nicht eher so aussehen:

list($to_username, $to_usermail) = $GLOBALS['TYPO3_DB']->sql_fetch_row($GLOBALS['TYPO3_DB']->exec_SELECTquery($this->getUserNameField().'username','email','fe_users','uid="'.$row['user_id'].'"'));

Nein. Wie in der Quelltextdokumentation zu entnehmen, liefert getUserNameField() den Namen des Datenbankfeldes, in welchem der Benutzername steht, also in aller Regel "username". Daher muss auch das Komma vor "email" stehen (sonst würde ja schließlich das Feld "usernameemail" abgefragt) und daher ist auch das hinzufügen des "username"-Feldes überflüssig (noch dazu ohne Komma und als eigener String).
Im Bugtracker wurde das Problem bereits korrekt erkannt; ein Patch steht im SVN zur Verfügung.

Martin

Benjamecho ·

@Thomas: Ich habe nur die kleine Änderung vorgenommen, daher brauchgte ich nicht die ganze Datei.

@Martin: Besten Dank, jetzt funktioniert es! Eine Frage: warum hast Du die Änderung nicht entsprechend dem Vorschlag im Bugtracker gemacht, sondern die !empty($to_usermail)-Abfrage rausgeworfen? Wenn beim user keine Adresse hinterlegt ist, braucht das Forum doch erst keinen Mailversuch zu starten, oder wird das an anderer Stelle breits überprüft?

m.​helmich ·
Benjamecho schrieb

@Martin: Besten Dank, jetzt funktioniert es! Eine Frage: warum hast Du die Änderung nicht entsprechend dem Vorschlag im Bugtracker gemacht, sondern die !empty($to_usermail)-Abfrage rausgeworfen? Wenn beim user keine Adresse hinterlegt ist, braucht das Forum doch erst keinen Mailversuch zu starten, oder wird das an anderer Stelle breits überprüft?

Hallo,

die Abfrage ist doch noch drin...?

Martin

Benjamecho ·
m.helmich schrieb

die Abfrage ist doch noch drin...?

Jetzt sehe ich es auch, sorry, habe offensichtlich in der falschen Version geschaut.

Muss die Änderung auch bei der darauf folgenden Funktion send_newpost_mail_forum durchgeführt werden? Da fehlt jedenfalls in der if-Abfrage die $to_usermail-Variable.

Ben