it-swarm-es.tech

Joomla Mailer no enviará un segundo correo electrónico

Actualmente estoy trabajando en un gran sitio web de Joomla creado por una empresa profesional, mi trabajo es tomar algunos de los formularios y actualizarlos. He estado usando Joomla Doc la mayor parte del tiempo, pero todavía estoy aprendiendo a usar el marco.

En el formulario de suscripción personalizado, necesito enviar dos correos electrónicos, uno para el enlace de activación de la cuenta (que se envía durante el proceso de creación del usuario) y el otro para obtener una descripción general de la transacción del usuario (que también se envía al administrador) . Sin embargo, el sistema solo envía uno u otro, no ambos.

El tipo que escribió el código antes que yo cortó esos dos correos en dos funciones que necesitarían una revisión completa del código para Fuse, por lo que no puedo hacer nada al respecto ya que soy un interno. Aún así, aquí está la parte importante de ambos métodos.

Primero, el que está durante el proceso de creación del usuario.

// 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);

Y aquí está el de la transacción:

    $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();

Revisé el código 10 veces y no hay nada allí que impida que se envíe el segundo correo electrónico si el primero fue ... Supongo que es probablemente porque llamo a getMailer () dos veces en el mismo evento, pero no hay nada en el joomla doc que confirmaría esto.

Gracias

4
GPierre

¿Qué versión de joomla estás usando?

En la versión anterior de joomla, la parte posterior del código (segundo fragmento) podría no funcionar.

Y de nuevo por el código,

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

Tratar de usar

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

y asegúrese de que la ruta, por ejemplo: joomla/components/com_extend/assets/php/files/file_name exista (marque una condición if antes de adjuntarla)

1
Sasi varna kumar