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