web-dev-qa-db-ja.com

Joomlaメーラーは2番目のメールを送信しません

私は現在、専門会社によって作成された大きなJoomla Webサイトに取り組んでいます。私の仕事は、いくつかのフォームを取り、それらを更新することです。私はほとんどJoomla Docを使用してきましたが、まだフレームワークの使い方を学んでいます。

カスタムサブスクリプションフォームで、2つのメールを送信する必要があります。1つはアカウントのアクティベーションリンク(ユーザー作成プロセス中に送信されます)ともう1つは、ユーザートランザクションの概要(これは管理者にも送信されます)です。 。ただし、システムはどちらか一方のみを送信し、両方は送信しません。

私の前にコードを書いた人は、Fuseの完全なコードオーバーホールを必要とする2つのメールを2つの関数に分割しました。そのため、私はインターンであるため、何もできません。それでも、ここに両方の​​方法の重要な部分があります。

まず、ユーザー作成プロセス中のもの

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

そして、これはトランザクションのためのものです:

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

コードを10回チェックしましたが、最初のメールが送信された場合、2番目のメールの送信を妨げるようなものは何もありません...同じイベントでgetMailer()を2回呼び出したためと思われますが、これを確認するjoomla doc。

ありがとう

4
GPierre

使用しているjoomlaのバージョンは何ですか?

古いバージョンのjoomlaでは、コードの後の部分(2番目のチャンク)が機能しない場合があります。

コードについても、

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

使ってみる

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

パスを確認してください。例:joomla/components/com_extend/assets/php/files/file_nameが存在する(アタッチする前にif条件をチェックイン)

1