Zum Inhalt springen

cwt community - emailversand bei neuer nachricht

Erstellt am 28. September 2007 · 21 Antworten · letzte Antwort am 4. März 2008 · Seite 1 von 2

Tags: E-Mail-Versand, Frage

sobi555 ·

Kann man das irgendwie aktivieren, oder muss man das "per hand" einbauen!? Hat schon jemand Erfahrungen damit gemacht, bzw. weiß jemand einen guten Link?

LG - Simon

sobi555 ·

Bin schon ein Schritt weiter. In der Datei: class.tx_cwtcommunity_pi1.php muss ich vor dem return $content; (ca. 1477) die Mailfunktion einbauen.
Jetzt meine neue Frage, wie bekomme ich raus, welcher User die Nachricht verschickt? Und dann, ob der User, an den es geht, ob der Online ist.

LG - Simon

claudia2 ·

Hallo Simon,

wenn ich mich recht entsinne ging das (nur) über einen Cronjob. Da ich inzwischen auf das mm_forum umgestiegen bin, kann ich aber ad hoc nicht sagen, welche Datei angesprochen werden muss...

grüße
claudia

claudia2 ·

sorry, hab eben mal nachgeschaut. bei mir gingen die PM's über das chc_forum, dort muss die Datei chc_forum/mailer/mailer.php per Cronjob aufgerufen werden, damit die User eine E-Mail Benachrichtigung bekommen.
claudia

sobi555 ·

Danke Claudia für deine Nachricht. - Ich habe so die Vermutung, dass ich das wohl selber "einbauen" muss. Wer die Nachricht verschickt und wer sie empfängt, kann ich über die URL auslesen: &action=getviewmessagesnew&recipient_uid=3
Jetzt müsste ich nur noch aus der Tabelle ausfindig machen, wer der User ist, ob er online ist und dann über mail() die Nachricht verschicken? - Oder sieht da jemand ein Problem?

LG - Simon

sobi555 ·

So geht es:

$empfaenger = $_GET["recipient_uid"];
        $abfrage = "SELECT email FROM fe_users WHERE uid = ".$empfaenger;
        $ergebnis = mysql_query($abfrage);
        while($row = mysql_fetch_object($ergebnis))
    	    {
	          $emailempfaenger = $row->email;
	        }
           mail($emailempfaenger, "Du hast eine neue Nachricht erhalten", "Also auf und lesen!");

Das muss in die Funktion: function getViewMessagesNewResult($uid, $recipient_uid) eingebaut werden (ca. Zeile Nr.: 1460). Datei: class.tx_cwtcommunity_pi1.php.

Jetzt intressiert mich allerdings, wie ich die zwei "variablen" Betreff und Text über das BE editieren kann??? Wie muss ich das coden?
LG - Simon

PS: ob der User online / offline ist, habe ich (noch) nicht eingebaut...

Dario ·

Hallo,

ich bekomme da folgende Fehlermeldung:

Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in /xxx/xxxxxx/xxxxxx/typo3conf/ext/cwt_community/pi1/class.tx_cwtcommunity_pi1.php on line 1878

Warning: Cannot modify header information - headers already sent by (output started at /xxx/xxxxxx/xxxxxx/typo3conf/ext/cwt_community/pi1/class.tx_cwtcommunity_pi1.php:1878-) in /xxx/xxxxxx/xxxxxx/typo3_src/typo3/sysext/cms/tslib/class.tslib_fe.php on line 2898

und die Mail wird auch nicht rausgeschickt?!!?
Wo ist der Fehler?

Grüße

Dario

sobi555 ·

Hi Dario,
nachdem du ja die Datei modifiziert hast, poste doch mal bitte den Code um die Zeile rum... (Nur die erste Fehlermeldung, die zweite verschwindet, wenn die erste weg ist)
LG - Simon

Dario ·

Hallo Simon,

hier kommt der Code

function getViewMessagesNewResult($uid, $recipient_uid)
    {
        // Init Vars
        $action = "getviewmessagesnewresult";
        $content = "";
        $cObj = $this -> cObj; //Holds a typo content object
        $templateCode = null; //Hold the template source code.
        $conf["subpartMarker"] = "VIEW_MESSAGES_NEW_RESULT"; //Holds a subpart marker.
        $subSub_1 = "ADDITIONAL";

        // Get the html source between subpart markers from template file
        $templateCode = $cObj -> getSubpart($this -> orig_templateCode, "###" . $conf["subpartMarker"] . "###");

		$empfaenger = $_GET["recipient_uid"];
        $abfrage = "SELECT email FROM fe_users WHERE uid = ".$empfaenger;
        $ergebnis = mysql_query($abfrage);
        while($row = mysql_fetch_object($ergebnis))
            {
                  $emailempfaenger = $row->email;
                }
           mail($emailempfaenger, "Sie haben eine neue Nachricht erhalten", "Also auf und lesen!");
		
        /*
        * HANDLE ADDITIONAL
        */
        // Init subpart content
        $subpartContent = null;
        // Get link to messages
        $linkToMessages = $this -> pi_getPageLink($GLOBALS['TSFE']->id, "", array("action" => "getviewmessages", "uid" => $uid));
sobi555 ·

Probier mal, den einzfügenden Code ganz ans Ende der Funktion zu stellen. Also "$empfaenger = $_GET["recipient_uid"];" kommt nach "$content = $templateCode;"
Und Erfolg gehabt? (Wenn nicht, poste mal die ganze Funktion und markier mit dir "Felerzeile")
LG

sobi555 ·

Dann füge mal vor die Zeile Mail(...); die Zeile "echo $row->email;" ein. Wenn er dort die eMailadressen auflistet, dann ersetzte mal die Zeile durch "echo $emailempfaenger;" - was passiert dann?

Dario ·

NICHTS,

keine Auflistung, kein Fehlermeldung, keine E-Mail

#angry# #angry# #angry# #angry#

Grüße

Dario

sobi555 ·

Okay... und mit

echo $empfaenger;

? (da müsste er dir ganz oben rechts eine Zahl hinschreiben, drunter eine Fehlermeldung)

Dario ·

Neee,

macht er nicht.

"Die Nachricht wurde gesendet.."

Keine weitere Meldungen oder Fehler

sobi555 ·

Du hast noch nicht viel mit PHP gemacht, oder? Mir fällt gerade auf (und ein) dass du wahrscheinlich das "return" vor der mail-funktion hast? (ansonsten müssen wir das mal per Mail weiterführen, da ich mir am leichtesten tu, wenn ich die "Dinge" vor mir habe und ggf. selber testen kann...

LG - Simon
Anbei noch mal die Funktion:

    function getViewMessagesNewResult($uid, $recipient_uid)
    {
        // Init Vars
        $action = "getviewmessagesnewresult";
        $content = "";
        $cObj = $this -> cObj; //Holds a typo content object
        $templateCode = null; //Hold the template source code.
        $conf["subpartMarker"] = "VIEW_MESSAGES_NEW_RESULT"; //Holds a subpart marker.
        $subSub_1 = "ADDITIONAL";

        // Get the html source between subpart markers from template file
        $templateCode = $cObj -> getSubpart($this -> orig_templateCode, "###" . $conf["subpartMarker"] . "###");

        /*
        * HANDLE ADDITIONAL
        */
        // Init subpart content
        $subpartContent = null;
        // Get link to messages
        $linkToMessages = $this -> pi_getPageLink($GLOBALS['TSFE']->id, "", array("action" => "getviewmessages", "uid" => $uid));
        // Create Marker Array
        $markerArray = array();
        $markerArray["###LINK_TO_MESSAGES###"] = $cObj -> stdWrap($linkToMessages, "");
				$markerArray["###SENT_MSG###"] = $cObj->stdWrap(htmlspecialchars($this->pi_getLL('CWT_MESSAGES_SENT')), "");  # mher
 				$markerArray["###BACK###"] = $cObj->stdWrap(htmlspecialchars($this->pi_getLL('CWT_MESSAGES_BACK')), "");  # mher
        // Substitute the markers in the given sub sub part.
        $subpartContent .= $cObj -> substituteMarkerArray($cObj -> getSubpart($templateCode, "###" . $subSub_1 . "###"), $markerArray);
        // Substitute the template code with the given subpartcontent.
        $templateCode = $this -> cObj -> substituteSubpart($templateCode, $subSub_1, $subpartContent);
        // Return the generated content

        $content = $templateCode;
        ###marker - email###
        $empfaenger = $_GET["recipient_uid"];
        $abfrage = "SELECT email, gender, first_name, last_name FROM fe_users WHERE uid = ".$empfaenger;
        $ergebnis = mysql_query($abfrage);
        while($row = mysql_fetch_object($ergebnis))
    	    {
	          $emailempfaenger = $row->email;
            $geschlecht = $row->gender;
            $vorname = $row->first_name;
            $nachname = $row->last_name;
	        }
          if($geschlecht == "0")
          {
          $anrede = "Lieber ";
          }
          else
          {
          $anrede = "Liebe ";
          }
          #echo $empfaenger;
          mail($emailempfaenger, "Eine neue Nachricht", $anrede.$vorname."\nDu hast eine neue Nachricht erhalten.")

        return $content;
    }
Dario ·

Neee, daran liegt es nicht!

das "return" habe ich schon an richtiger Stelle.

Grüße

Dario

Dario ·
    function getViewMessagesNewResult($uid, $recipient_uid)
    {
        // Init Vars
        $action = "getviewmessagesnewresult";
        $content = "";
        $cObj = $this -> cObj; //Holds a typo content object
        $templateCode = null; //Hold the template source code.
        $conf["subpartMarker"] = "VIEW_MESSAGES_NEW_RESULT"; //Holds a subpart marker.
        $subSub_1 = "ADDITIONAL";

        // Get the html source between subpart markers from template file
        $templateCode = $cObj -> getSubpart($this -> orig_templateCode, "###" . $conf["subpartMarker"] . "###");

		        /*
        * HANDLE ADDITIONAL
        */
        // Init subpart content
        $subpartContent = null;
        // Get link to messages
        $linkToMessages = $this -> pi_getPageLink($GLOBALS['TSFE']->id, "", array("action" => "getviewmessages", "uid" => $uid));
        // Create Marker Array
        $markerArray = array();
        $markerArray["###LINK_TO_MESSAGES###"] = $cObj -> stdWrap($linkToMessages, "");
		$markerArray["###SENT_MSG###"] = $cObj->stdWrap(htmlspecialchars($this->pi_getLL('CWT_MESSAGES_SENT')), "");  # mher
 		$markerArray["###BACK###"] = $cObj->stdWrap(htmlspecialchars($this->pi_getLL('CWT_MESSAGES_BACK')), "");  # mher
        // Substitute the markers in the given sub sub part.
        $subpartContent .= $cObj -> substituteMarkerArray($cObj -> getSubpart($templateCode, "###" . $subSub_1 . "###"), $markerArray);
        // Substitute the template code with the given subpartcontent.
        $templateCode = $this -> cObj -> substituteSubpart($templateCode, $subSub_1, $subpartContent);
        // Return the generated content
        $content = $templateCode;
		
		// E-Mail Benachrichtigung
		
		$empfaenger = $_GET["recipient_uid"];
        $abfrage = "SELECT email FROM fe_users WHERE uid = ".$empfaenger;
        $ergebnis = mysql_query($abfrage);
        while($row = mysql_fetch_object($ergebnis)) !!! DAS IST FEHLERZEILE !!!
            {
                  $emailempfaenger = $row->email;
                }
		// echo $row->email;
           mail($emailempfaenger, "Sie haben eine neue Nachricht erhalten", "Also auf und lesen!");
		   
		return $content;
	
   }
sobi555 ·

Uff... also jetzt bin ich echt überfragt. Bei mir läuft es so wie du es gepostet hast. Versuche folgendes, dass du die mail() Zeile wie folgt umstellst:
mail("deine@emai.de", "Eine neue Nachricht", "text");
Setze da mal deine richtige Mail rein und schau ob du eine eMail erhälst... Der Code wird bei mir ausgeührt, bei dir scheinbar nicht. Also von hier aus kann ich dir nicht mehr viel helfen. Also entweder liegen alle Mails im Spam oder was weiß ich! 🙂

LG - Simon