PN per PHP senden mit Email-Benachrichtigung

In diesem Forum kann man Fragen zur Programmierung stellen, die bei der Entwicklung von Mods für phpBB 3.0.x oder dem Modifizieren des eigenen Forums auftauchen.
Forumsregeln
phpBB 3.0 hat das Ende seiner Lebenszeit überschritten
phpBB 3.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 3.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf die neuste phpBB-Version, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Antworten
Benutzeravatar
Nuramon
Mitglied
Beiträge: 250
Registriert: 05.02.2012 21:45
Wohnort: Solingen
Kontaktdaten:

PN per PHP senden mit Email-Benachrichtigung

Beitrag von Nuramon »

Huhu ihr.

Ich möchte gerne im PHP-Code automatisch eine PN verschicken, und die Email-Benachrichtigung soll da rausgehen.
Ich habe mir folgenden Code gebastelt, bzw teilweise aus einem MOD übernommen:

Code: Alles auswählen

function send_pn($subject, $message, $to_user, $from_user)
{
    global $user, $db, $phpbb_root_path, $phpEx;

    if (!function_exists('pm_notification'))
    {
        include($phpbb_root_path . 'includes/functions_privmsgs.' . $phpEx);
    }

    $uid            = $bitfield            = $options        = '';
    $allow_bbcode    = $allow_smilies    = $allow_urls   = $img_status   = $flash_status = true;

    generate_text_for_storage($message, $uid, $bitfield, $options, $allow_bbcode, $allow_urls, $allow_smilies);

    // Sender raussuchen
    $sql = 'SELECT *
            FROM ' . USERS_TABLE . "
            WHERE user_id = $from_user";
    $result = $db->sql_query($sql);
    $sender = $db->sql_fetchrow($result);
    $db->sql_freeresult($result);
    
    // To
    
    $pm_data = array(
        'address_list'            => array('u' => array($to_user => 'to')),
        'from_user_id'            => $sender['user_id'],
        'from_user_ip'            => $sender['user_ip'],
        'from_username'            => $sender['username'],
        'enable_sig'            => true,
        'enable_bbcode'            => true,
        'enable_smilies'        => true,
        'enable_urls'            => true,
        'reply_from_root_level'    => 0,
        'reply_from_msg_id'        => 0,
        'icon_id'                => 0,
        'bbcode_bitfield'        => $bitfield,
        'bbcode_uid'            => $uid,
        'message'                => $message,
    );
    $msg_id            = submit_pm('post', $subject, $pm_data);
    $sender_id        = $sender['username'];
    $receiver_id    = $to_user;

    $recipients[$receiver_id] = 'to';
    pm_notification('post', $sender['username'], $recipients, $subject, $pm_data['message'], $msg_id);
} 
Das Problem ist nun, dass keine Email-Benachrichtigung versendet wird. Bei einer manuellen PN geht sie allerdings raus.

Außerdem werden jedes mal 2 Mails versandt, und ich weiß nicht wieso..
$to_user und $from_user sind die User-IDs
Das Pinke Forum
Das Pinke Forum - werde Teil einer freundlichen Community, die dir bei Fragen rund um Liebe, Sex, Ernährung, Schule oder bei Problemen aller Art zur Seite steht! Verfasse Beiträge, erstelle Threads und lern nette Leute kennen; kostenlos und toll betreut.
Benutzeravatar
Nuramon
Mitglied
Beiträge: 250
Registriert: 05.02.2012 21:45
Wohnort: Solingen
Kontaktdaten:

Re: PN per PHP senden mit Email-Benachrichtigung

Beitrag von Nuramon »

Ich habe den Fehler jetzt teilweise ausfindig gemacht.

Erstens ist das untere pm_notification überflüssig habe ich gemerkt, weil das im submit_pm auch schon getriggert wird.

Und zweitens habe ich durch debug-echo-Ausgaben in der functions_messenger.php gefunden,
dass er in der

Code: Alles auswählen

    function msg_email() 
bei

Code: Alles auswählen

        if (empty($config['email_enable']))
        {
            echo "config nicht aktiviert";
            return false;
        } 
Auf die Nase.

Die Frage ist nur, warum? :(
Ich hab extra nochmal in der Datenbank geguckt, in der phpbb_config steht email_enable auf 1.

EDIT:
Ich könnte mich selbst erschlagen! *facepalm*
So ein dämlicher Fehler -.-
In meiner selbst geschriebenen Function zum Senden der PN wird die global-Variable $config geladen.
Gleichzeitig habe ich aber auch Config-Variablen für meine Funktion, die ich aus der Datenbank auslese und in einem Array namens $config gespeichert habe.
Hab das array jetzt nach $m_config umbenannt und alles läuft.
Dass ich da nicht selbst drauf gekommen bin... *kopfschüttel*

Wollte das hier bekannt geben, falls jemand ein ähnliches Problem hat
Das Pinke Forum
Das Pinke Forum - werde Teil einer freundlichen Community, die dir bei Fragen rund um Liebe, Sex, Ernährung, Schule oder bei Problemen aller Art zur Seite steht! Verfasse Beiträge, erstelle Threads und lern nette Leute kennen; kostenlos und toll betreut.
Truelli
Mitglied
Beiträge: 50
Registriert: 13.06.2003 11:59

Re: PN per PHP senden mit Email-Benachrichtigung

Beitrag von Truelli »

moin,

ich hätte eine Frage zu dem Code... wird der Benutzer immer per email informiert, oder nur dann, wenn er diese Funktion in seinen persönlichen Einstellungen aktiviert hat?

LG
Truelli
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Re: PN per PHP senden mit Email-Benachrichtigung

Beitrag von gn#36 »

Da die phpBB eigene Funktion zum Versenden der PN verwendet wird sollte die Email eigentlich nur dann gesendet werden, wenn der User dies laut seinen Einstellungen so wünscht.
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
Walter91
Mitglied
Beiträge: 108
Registriert: 16.02.2012 08:28

Re: PN per PHP senden mit Email-Benachrichtigung

Beitrag von Walter91 »

Eventuell wäre das auch was für Dich:
http://henmedia.de/index.php?option=com ... &Itemid=35

Ist einstellbar und geht auch ohne Login in das Forum.
Antworten

Zurück zu „[3.0.x] Mod Bastelstube“