+ Antworten
Ergebnis 1 bis 3 von 3

Thema: Mail-Funktion in Plugin will einfach nicht funktionieren :/

  1. #1
    Neu an Board
    Registriert seit
    04.09.2008
    Beiträge
    35
    Bedankte sich
    10
    Erhielt 0 Danksagungen
    in 0 Beiträgen

    Standard Mail-Funktion in Plugin will einfach nicht funktionieren :/

    Hallöle!
    Ich will ein bestehendes Plugin (CD TastyMonials) erweitern. Es ist ein Bewertungsplugin, welches ich zum Bewerten von Dienstleistungen verwende. Ich habe es so schon erweitert, dass man mehrere Kategorien bewerten kann und diese dann in die Datenbank eingetragen werden.

    Was nun noch fehlt ist Benachrichtigung per E-Mail, wenn ein neuer Eintrag vorgenommen wurde.

    Also ich habe in ganz unterschiedlichen PHP Dateien versucht, eine E-Mail Funktion einzubinden, z.B. in etwa so:

    PHP-Code:
    $empfaenger "saddsadadasdt@gmx.de"
             
    $betreff "Neue Bewertung eingegangen"
             
    $mailtext "Name:  
             Telefon: 
             Telefax: 
                 eMail: 
             Betreff: 
             Mitteilung:"

             
    mail("$empfaenger""$betreff""$mailtext""From: $email"); 
    Alternativ habe ich auch schon die Joomla eigene Mailfunktion ausprobiert, aber es wird nie eine Mail rausgeschickt. Lege ich eine eigene PHP Datei an und rufe diese auf, dann wird die Mail problemlos verschickt. Also blockt das Plugin die Mailfunktion und ich weiß nicht wieso. Die Mailfunktion habe ich in Methoden gesetzt, wo die Daten in die DB geschrieben werden. Wurden sie erfolgreich geschrieben, wird die Mail rausgeschickt.

    Z.B. habe ich dort, wo das Formular erstellt wird eine Abfrage reingesetzt, wenn der Submit Button gedrückt wurde, soll halt eine Mail rausgesendet werden, nur tut sich da ebenfalls nichts.

    Hat jemand noch einen Tipp, auf was man achten muss? Ich habe schon so ziemlich alle Dateien durch.

    DANKE!
    Grüße
    Geändert von mr_twin (14.12.2010 um 20:56 Uhr)

  2. #2
    Neu an Board
    Registriert seit
    10.05.2009
    Beiträge
    34
    Bedankte sich
    1
    Erhielt 4 Danksagungen
    in 4 Beiträgen

    Standard

    Ich würde in jedem Fall raten, den Joomla Mailer zu benutzen - damit hat man viele Optionen an der Hand und die Fehlersuche gestaltet sich einfacher:

    Das sieht in etwas so aus:

    PHP-Code:
    $mail =& JFactory::getMailer();                          
    $mail->From $senderEmail
    $mail->FromName 'My Plugin';
    $mail->AddAddress($recipientMail$recipientName);
    $mail->setSubject($subject);
    $mail->setBody($body);                            
    $sendOk $mail->Send();
    $error =  $mail->IsError();
    if(
    $error == true) { // send errors?
        
    $errorMsg  ' Last error: '$mail2send->ErrorInfo ;
        
    $errorMsg .= ' Description: ' print_r($sendOk->getErrors(), true);
        echo 
    $errorMsg;

    Du kannst mit $errorMsg so nachschauen, was falsch läuft.

  3. #3
    Neu an Board
    Registriert seit
    04.09.2008
    Beiträge
    35
    Bedankte sich
    10
    Erhielt 0 Danksagungen
    in 0 Beiträgen

    Standard

    Danke für den Tipp, leider habe ich das auch schon versucht. Ich habe das in die Add Funktion eingefügt, wo die Daten in die DB geschrieben werden:

    PHP-Code:
        function addNew() {
            
            
    // security check
            
    if (!JRequest::checkToken()) return '0|Invalid Token';
            
            
    // check if user is logged (if required)
            
    if ($this->params->get('disable_guests'0)) {
                
    $user = &JFactory::getUser();
                if (
    $user->guest) return '0|' JText::_('CDTASTYMONIALS_LOGIN_FIRST');
            }
            
            
    $data['firstname'] = JRequest::getString('firstname''''post');
            
    $data['lastname'] = JRequest::getString('lastname''''post');
            
    $data['email'] = JRequest::getString('email''''post');
            
    $data['website'] = JRequest::getString('website''''post');
            
    $data['kundennummer'] = JRequest::getString('kundennummer''''post');
            
    $data['alter'] = JRequest::getString('alter''''post');
            
    $data['ort'] = JRequest::getString('ort''''post');
            
    $data['geschlecht'] = JRequest::getString('geschlecht''''post');
            
    $data['rating'] = (int) JRequest::getInt('rating'5'post');
            
    $data['rating2'] = (int) JRequest::getInt('rating2'5'post');
            
    $data['rating3'] = (int) JRequest::getInt('rating3'5'post');
            
    $data['rating4'] = (int) JRequest::getInt('rating4'5'post');
            
    $data['rating5'] = (int) JRequest::getInt('rating5'5'post');
            
    $data['rating6'] = (int) JRequest::getInt('rating6'5'post');
            
    $data['rating7'] = (int) JRequest::getInt('rating7'5'post');
            
    $data['text'] = JRequest::getString('text''''post');
            
            
    $autopublish $this->params->get('autopublish'0);
            if (
    $autopublish$data['published'] = 1// autopublish
            
            
    $text_minlength = (int) $this->params->get('text_minlength'0);
            
    $text_maxlength = (int) $this->params->get('text_maxlength'0);
            
            
    $row $this->dbInstance();
            
            if (!
    $row->bind($data)) return '0|' $row->getError();
            if (!
    $row->check($text_minlength$text_maxlength)) return '0|' $row->getError();
            if (!
    $row->store()) return '0|' $row->getError();
            
            if (
    $autopublish) return JText::_('CDTASTYMONIALS_APPROVED');
            
            
    //$recipientMail = "ma.....t@gmx.de"
            
    $mail =& JFactory::getMailer();                           
            
    $mail->From '......t@gmx.de';  
            
    $mail->FromName 'My Plugin'
            
    $mail->AddAddress('ma....t@gmx.de''M. R.'); 
            
    $mail->setSubject($subject); 
            
    $mail->setBody($body);                             
            
    $sendOk $mail->Send(); 
            
    $error =  $mail->IsError(); 
            if(
    $error == true) { // send errors? 
                
    $errorMsg  ' Last error: '$mail2send->ErrorInfo 
                
    $errorMsg .= ' Description: ' print_r($sendOk->getErrors(), true); 
              echo 
    $errorMsg
            }  
                    
            return 
    JText::_('CDTASTYMONIALS_SUCCESS');
        } 
    Wenn ich einen Eintrag mache und auf Absenden klicken wird normalerweise diese Funktion ausgeführt...und somit müsste ja auch die Mail mit versendet werden. Nur da kommt nix.
    Noch einen Tipp parat? DANKE!

    EDIT: Ich habe den Fehler gefunden Ich muss die Mail-Funktion ja vor dem "if ($autopublish) return JText::_('CDTASTYMONIALS_APPROVED');" setzen und nicht dahinter...daher wurde sie nicht ausgeführt.

    Danke noch mal für die Tipps!
    Geändert von mr_twin (14.12.2010 um 20:56 Uhr) Grund: Lösung gefunden

+ Antworten

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein