web-dev-qa-db-fra.com

Joomla Mailer n'enverra pas un deuxième email

Je travaille actuellement sur un grand site Web Joomla créé par une entreprise professionnelle. Mon travail consiste à prendre certains des formulaires et à les mettre à jour. J'ai utilisé le Joomla Doc la plupart du temps, mais j'apprends toujours à utiliser le framework.

Dans le formulaire d'abonnement personnalisé, je dois envoyer deux courriels, l'un pour le lien d'activation du compte (qui est envoyé pendant le processus de création de l'utilisateur) et l'autre pour un aperçu de la transaction de l'utilisateur (qui est également envoyé à l'administrateur). . Cependant, le système n'envoie que l'un ou l'autre, pas les deux.

Le gars qui a écrit le code avant moi a coupé ces deux courriers en deux fonctions qui nécessiteraient une refonte complète du code de Fuse, je ne peux donc rien y faire puisque je suis stagiaire. Pourtant, voici la partie importante des deux méthodes.

Tout d'abord, celui pendant le processus de création de l'utilisateur

// Compile the notification mail values.
    $data = $user->getProperties();
    $data['fromname'] = $config->get('fromname');
    $data['mailfrom'] = $config->get('mailfrom');
    $data['sitename'] = $config->get('sitename');
    $data['siteurl'] = JUri::root();
    // Set the link to confirm the user email.
    $uri = JURI::getInstance();
    $base = $uri->toString(array('scheme', 'user', 'pass', 'Host', 'port'));
    $data['activate'] = $base . JRoute::_('index.php?option=com_users&task=registration.activate&token=' . $data['activation'],
                    false);
    $emailSubject = JText::sprintf(
                    'COM_USERS_EMAIL_ACCOUNT_DETAILS',
                    $data['name'],
                    $data['sitename']
    );
    $emailBody = JText::sprintf(
                    'COM_USERS_EMAIL_REGISTERED_WITH_ADMIN_ACTIVATION_BODY',
                    $data['name'],
                    $data['sitename'],
                    $data['siteurl'] . 'index.php?option=com_users&task=registration.activate&token=' . $data['activation'],
                    $data['siteurl'],
                    $data['username'],
                    $data['password_clear']
    );
    // Send the registration email.
    JFactory::getMailer()->sendMail($data['mailfrom'],
            $data['fromname'],
            $data['email'],
            $emailSubject,
            $emailBody);

Et voici celui pour la transaction:

    $config = JFactory::getConfig();
    $sender = array( 
    $config->getValue('config.mailfrom'),
    $config->getValue('config.fromname'));
    $to = $values['facture_email'];
    $subject = 'xxxxxxxxxxxxxxxxxxxxxxxx ' . $values['nouveau'];
    $mailer = JFactory::getMailer();
    $mailer->setSender($sender);
    $mailer->addRecipient($to);
    $mailer->addBCC(array($from, '[email protected]'));
    $mailer->setSubject($subject);
    $mailer->isHTML(true);
    $mailer->Encoding = 'base64';
    $mailer->setBody($message);
    if (isset($values['carte']) && $values['carte'] != '')
    {
        $mailer->addAttachment(JPATH_COMPONENT . DS . 'assets' . DS . 'php' . DS . 'files' . DS . $values['carte']);
    }
    $send = $mailer->Send();

J'ai vérifié le code 10 fois et rien dedans n'empêcherait l'envoi du deuxième email si le premier était ... Je suppose que c'est probablement parce que j'appelle deux fois getMailer () dans le même événement, mais rien dans le joomla doc qui le confirmerait.

Merci

4
GPierre

Quelle version de joomla utilisez-vous?

Dans les anciennes versions de joomla, la dernière partie du code (deuxième bloc) pourrait ne pas fonctionner.

Et encore pour le code,

$mailer->addAttachment(JPATH_COMPONENT . DS . 'assets' . DS . 'php' . DS . 'files' . DS . $values['carte']);

Essayez d'utiliser

$mailer->addAttachment(JPATH_COMPONENT . '/assets/php/files/'.$values['carte']);

et assurez-vous que le chemin, par exemple: joomla/components/com_extend/assets/php/files/nom_fichier existe (enregistrez une condition if avant de l'attacher)

1
Sasi varna kumar