私は現在、専門会社によって作成された大きな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。
ありがとう
使用している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条件をチェックイン)