ti-enxame.com

O Joomla Mailer não envia um segundo email

Atualmente, estou trabalhando em um grande site Joomla criado por uma empresa profissional, meu trabalho é pegar alguns dos formulários e atualizá-los. Eu tenho usado o Joomla Doc na maioria das vezes, mas ainda estou aprendendo a usar o framework.

No formulário de inscrição personalizada, preciso enviar dois E-mails, um para o link de ativação da conta (enviado durante o processo de criação do usuário) e o outro para uma visão geral da transação do usuário (que também é enviada ao administrador) . No entanto, o sistema envia apenas um ou outro, não ambos.

O cara que escreveu o código antes de mim cortou essas duas mensagens em duas funções que precisariam de uma revisão completa do código para o Fuse, então não posso fazer nada sobre isso, pois sou estagiário. Ainda assim, aqui está a parte importante dos dois métodos.

Primeiro, aquele durante o processo de criação do usuário

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

E aqui está o da transação:

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

Eu verifiquei o código 10 vezes e não há nada lá que impeça o envio do segundo email se o primeiro for ... Suponho que seja provavelmente porque chamo getMailer () duas vezes no mesmo evento, mas não há nada no Doc Joomla que iria confirmar isso.

Obrigado

4
GPierre

Qual versão do joomla você está usando?

Na versão mais antiga do joomla, a parte posterior do código (segunda parte) pode não funcionar.

E novamente para o código,

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

Tente usar

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

e verifique se o caminho, por exemplo: joomla/components/com_extend/assets/php/files/file_name, existe (verifique a condição if antes de anexá-la)

1
Sasi varna kumar