Seite 1 von 2

E-Mail Benachrichtigung von eingebundener Seite

Verfasst: 14.03.2014 17:56
von Walter91
Ich suche nach einem Lösungsansatz für folgendes Problem.
Registrierte User sollen per E-Mail benachrichtigt werden können wenn auf eigener eingebundener Seite ein neuer Eintrag erfolgt ist.
Eine Benachrichtigungsmail habe ich mir im Ordner /language/de/email/ schon erstellt.
Welchen Code von phpBB müsste ich dann in meine Posting-Seite einbauen damit eine Nachricht versendet wird?
In der phpBB-Wiki habe ich dazu leider nichts passendes gefunden. Hat da jemand einen Tipp?

Re: E-Mail Benachrichtigung von eingebundener Seite

Verfasst: 15.03.2014 06:42
von Miriam

Re: E-Mail Benachrichtigung von eingebundener Seite

Verfasst: 15.03.2014 12:39
von Walter91
Vielen Dank Miriam.
Genau das hatte ich gesucht. Hab es gleich probiert und es geht sehr gut.

Re: E-Mail Benachrichtigung von eingebundener Seite

Verfasst: 02.05.2014 19:33
von Walter91
Ich muss noch mal fragen weil ich das etwas erweitern will.
Mailversand von eigener Seite funktioniert. Wird aber nur an User mit Gründerstatus versendet.
Mail soll aber an alle User gehen. Was fehlt da jetzt noch.

Code: Alles auswählen

$sql = 'SELECT user_email, username, user_lang FROM ' . USERS_TABLE . '
        WHERE ' . $db->sql_in_set('user_id', explode(', ', $processing_user)) . '
        OR user_type = ' . USER_FOUNDER . '
        GROUP BY user_email, username, user_lang';
        $result = $db->sql_query($sql);

        include($phpbb_root_path . 'includes/functions_messenger.' . $phpEx);
        $messenger = new messenger();

        while ($row = $db->sql_fetchrow($result))
        {
            $username = (!$user->data['is_registered']) ? $user->lang['ANONYMOUS'] : $user->data['username'];
            $messenger->template('new_car_typ', $row['user_lang']);
            $messenger->to($row['user_email'], $row['username']);
            $messenger->assign_vars(array(
                'BOARD_EMAIL' => $config['board_email_sig'], 
                'POSTER' => $username,
                'USERNAME' => $row['username'],
                'U_CARTYP' => generate_board_url() . "/cartype.$phpEx?action=cartyp&id=$id&df_id=$id") 
            );
            $messenger->send($row['user_notify_type']);
        }
        $messenger->save_queue();

Re: E-Mail Benachrichtigung von eingebundener Seite

Verfasst: 02.05.2014 20:45
von Miriam
Es sieht auf den ersten Blick so aus, als ob die where-clause $db->sql_in_set('user_id', explode(', ', $processing_user)) keine Einschränkung vorgibt, die die Abfrage sinnvoll einschränkt.
Lass' Dir doch die Variable $sql per print ausgeben und checke das Ergebnis.

Es liegt wahrscheinlich an $processing_user.

Re: E-Mail Benachrichtigung von eingebundener Seite

Verfasst: 02.05.2014 21:49
von waldkatze
Ändere das mal so ab. Dann sollte das gehen. Beachte besonders die Zeile von Miriams Tipp.

Code: Alles auswählen

$sql = 'SELECT user_email, username, user_lang FROM ' . USERS_TABLE . '
            WHERE user_id
            OR user_type = ' . USER_FOUNDER . '
            GROUP BY user_email, username, user_lang';
        $result = $db->sql_query($sql); 

Re: E-Mail Benachrichtigung von eingebundener Seite

Verfasst: 03.05.2014 07:15
von Miriam
Dann hast Du aber alle User ohne irgendwelche Einschränkungen ausgewählt. Also auch Bots, gesperrte User, noch nicht aktivierte User etc. pp.

Re: E-Mail Benachrichtigung von eingebundener Seite

Verfasst: 03.05.2014 07:41
von waldkatze
Das stimmt natürlich. walter91 hatte geschrieben:
Mail soll aber an alle User gehen.
Mir ist ja jetzt nicht bekannt wie er das Script verwenden möchte. Man kann das ja auch auf bestimmte Gruppen beschränken.

Re: E-Mail Benachrichtigung von eingebundener Seite

Verfasst: 03.05.2014 09:53
von Walter91
Erst mal vielen Dank für eure Hilfe.
Den Code von der waldkatze hab ich grade tetestet. Das geht.
Ich möchte es aber noch auf alle registrierten User beschränken.
Kann mir jemand sagen wie ich es dann schreiben müßte. Danke.

Re: E-Mail Benachrichtigung von eingebundener Seite

Verfasst: 03.05.2014 14:34
von Miriam
Check das:

Code: Alles auswählen

$sql = 'SELECT user_email, username, user_lang FROM ' . USERS_TABLE . '
            WHERE user_type IN (' . USER_NORMAL . ', ' . USER_FOUNDER . ')
            ORDER BY user_email, username, user_lang';
Wieso eigentlich "GROUP BY"?