<?php
/*
* This file is part of EC-CUBE
*
* Copyright(c) EC-CUBE CO.,LTD. All Rights Reserved.
*
* http://www.ec-cube.co.jp/
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Customize\Service;
use Eccube\Service\MailService as BaseMailService;
use Eccube\Common\EccubeConfig;
use Eccube\Entity\BaseInfo;
use Eccube\Entity\Customer;
use Eccube\Entity\Member;
use Eccube\Entity\MailHistory;
use Eccube\Entity\MailTemplate;
use Eccube\Entity\Order;
use Eccube\Entity\OrderItem;
use Eccube\Entity\Shipping;
use Customize\Entity\ChainStore;
use Customize\Entity\Master\ContractType;
use Customize\Repository\Master\BankBranchRepository;
use Eccube\Event\EccubeEvents;
use Eccube\Event\EventArgs;
use Eccube\Repository\BaseInfoRepository;
use Eccube\Repository\MailHistoryRepository;
use Eccube\Repository\MailTemplateRepository;
use Symfony\Component\EventDispatcher\EventDispatcher;
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
class MailService extends BaseMailService
{
/**
* @var \Swift_Mailer
*/
protected $mailer;
/**
* @var MailTemplateRepository
*/
protected $mailTemplateRepository;
/**
* @var MailHistoryRepository
*/
protected $mailHistoryRepository;
/**
* @var EventDispatcher
*/
protected $eventDispatcher;
/**
* @var BaseInfo
*/
protected $BaseInfo;
/**
* @var EccubeConfig
*/
protected $eccubeConfig;
/**
* @var \Twig_Environment
*/
protected $twig;
/**
* @var BankBranchRepository
*/
protected $bankBranchRepository;
/**
* MailService constructor.
*
* @param \Swift_Mailer $mailer
* @param MailTemplateRepository $mailTemplateRepository
* @param MailHistoryRepository $mailHistoryRepository
* @param BaseInfoRepository $baseInfoRepository
* @param EventDispatcherInterface $eventDispatcher
* @param \Twig_Environment $twig
* @param EccubeConfig $eccubeConfig
*/
public function __construct(
\Swift_Mailer $mailer,
MailTemplateRepository $mailTemplateRepository,
MailHistoryRepository $mailHistoryRepository,
BaseInfoRepository $baseInfoRepository,
EventDispatcherInterface $eventDispatcher,
\Twig_Environment $twig,
EccubeConfig $eccubeConfig,
BankBranchRepository $bankBranchRepository
) {
$this->mailer = $mailer;
$this->mailTemplateRepository = $mailTemplateRepository;
$this->mailHistoryRepository = $mailHistoryRepository;
$this->BaseInfo = $baseInfoRepository->get();
$this->eventDispatcher = $eventDispatcher;
$this->eccubeConfig = $eccubeConfig;
$this->twig = $twig;
$this->bankBranchRepository = $bankBranchRepository;
}
/**
* Send chainstore confirm mail.(Full登録)
*
* @param $Customer 販売店会員情報
* @param string $activateUrl アクティベート用url
*/
public function sendChainStoreConfirmMailFullReg(Customer $Customer, $activateUrl, ContractType $ContractType = null)
{
log_info('仮販売店会員(Full登録)登録メール送信開始');
$MailTemplate = null;
if($ContractType->getId() == "2"){
//販売店(応援プログラム)契約会員仮登録メール(Full登録)
$MailTemplate = $this->mailTemplateRepository->find($this->eccubeConfig['eccube_chainstore_oen_entry_confirm_mail_fullreg_template_id']);
}else if($ContractType->getId() == "3"){
//小売販売契約会員仮登録メール(Full登録)
$MailTemplate = $this->mailTemplateRepository->find($this->eccubeConfig['eccube_chainstore_kouri_entry_confirm_mail_fullreg_template_id']);
}else{
//販売店契約会員仮登録メール(Full登録)
$MailTemplate = $this->mailTemplateRepository->find($this->eccubeConfig['eccube_chainstore_entry_confirm_mail_fullreg_template_id']);
}
$bankInfo = null;
$ChainStore = $Customer->getChainStore();
if(is_object($ChainStore)){
$branchId = $ChainStore->getBankBranch();
$bankInfo = $this->bankBranchRepository->findOneBy(['id' => $branchId]);
}
$body = $this->twig->render($MailTemplate->getFileName(), [
'Customer' => $Customer,
'ContractType' => $ContractType,
'BaseInfo' => $this->BaseInfo,
'activateUrl' => $activateUrl,
'bankInfo' => $bankInfo,
]);
$message = (new \Swift_Message())
//->setSubject('['.$this->BaseInfo->getShopName().'] '.$MailTemplate->getMailSubject())
->setSubject('【ダシーズファクトリー】'.$MailTemplate->getMailSubject())
->setFrom([$this->BaseInfo->getChainstoreFromEmail() => $this->BaseInfo->getShopName()])
->setTo([$Customer->getEmail()])
->setBcc($this->BaseInfo->getChainstoreFromEmail())
->setReplyTo($this->BaseInfo->getChainstoreFromEmail())
->setReturnPath($this->BaseInfo->getChainstoreFromEmail());
// HTMLテンプレートが存在する場合
$htmlFileName = $this->getHtmlTemplate($MailTemplate->getFileName());
if (!is_null($htmlFileName)) {
$htmlBody = $this->twig->render($htmlFileName, [
'Customer' => $Customer,
'ContractType' => $ContractType,
'BaseInfo' => $this->BaseInfo,
'activateUrl' => $activateUrl,
'bankInfo' => $bankInfo,
]);
$message
->setContentType('text/plain; charset=UTF-8')
->setBody($body, 'text/plain')
->addPart($htmlBody, 'text/html');
} else {
$message->setBody($body);
}
$event = new EventArgs(
[
'message' => $message,
'ContractType' => $ContractType,
'Customer' => $Customer,
'BaseInfo' => $this->BaseInfo,
'activateUrl' => $activateUrl,
'bankInfo' => $bankInfo,
],
null
);
$this->eventDispatcher->dispatch(EccubeEvents::MAIL_CUSTOMER_CONFIRM, $event);
$count = $this->mailer->send($message, $failures);
log_info('仮販売店会員(Full登録)登録メール送信完了', ['count' => $count]);
return $count;
}
/**
* Send chainstore confirm mail.
*
* @param $Customer 販売店会員情報
* @param string $activateUrl アクティベート用url
*/
public function sendChainStoreConfirmMail(Customer $Customer, $activateUrl, ContractType $ContractType = null)
{
log_info('仮販売店会員登録メール送信開始');
$MailTemplate = null;
if($ContractType->getId() == "2"){
//販売店(応援プログラム)契約会員仮登録メール
$MailTemplate = $this->mailTemplateRepository->find($this->eccubeConfig['eccube_chainstore_oen_entry_confirm_mail_template_id']);
}else if($ContractType->getId() == "3"){
//小売販売契約会員仮登録メール
$MailTemplate = $this->mailTemplateRepository->find($this->eccubeConfig['eccube_chainstore_kouri_entry_confirm_mail_template_id']);
}else{
//販売店契約会員仮登録メール
$MailTemplate = $this->mailTemplateRepository->find($this->eccubeConfig['eccube_chainstore_entry_confirm_mail_template_id']);
}
$body = $this->twig->render($MailTemplate->getFileName(), [
'Customer' => $Customer,
'ContractType' => $ContractType,
'BaseInfo' => $this->BaseInfo,
'activateUrl' => $activateUrl,
]);
$message = (new \Swift_Message())
//->setSubject('['.$this->BaseInfo->getShopName().'] '.$MailTemplate->getMailSubject())
->setSubject('【ダシーズファクトリー】'.$MailTemplate->getMailSubject())
->setFrom([$this->BaseInfo->getChainstoreFromEmail() => $this->BaseInfo->getShopName()])
->setTo([$Customer->getEmail()])
->setBcc($this->BaseInfo->getChainstoreFromEmail())
->setReplyTo($this->BaseInfo->getChainstoreFromEmail())
->setReturnPath($this->BaseInfo->getChainstoreFromEmail());
// HTMLテンプレートが存在する場合
$htmlFileName = $this->getHtmlTemplate($MailTemplate->getFileName());
if (!is_null($htmlFileName)) {
$htmlBody = $this->twig->render($htmlFileName, [
'Customer' => $Customer,
'ContractType' => $ContractType,
'BaseInfo' => $this->BaseInfo,
'activateUrl' => $activateUrl,
]);
$message
->setContentType('text/plain; charset=UTF-8')
->setBody($body, 'text/plain')
->addPart($htmlBody, 'text/html');
} else {
$message->setBody($body);
}
$event = new EventArgs(
[
'message' => $message,
'ContractType' => $ContractType,
'Customer' => $Customer,
'BaseInfo' => $this->BaseInfo,
'activateUrl' => $activateUrl,
],
null
);
$this->eventDispatcher->dispatch(EccubeEvents::MAIL_CUSTOMER_CONFIRM, $event);
$count = $this->mailer->send($message, $failures);
log_info('仮販売店会員登録メール送信完了', ['count' => $count]);
return $count;
}
/**
* Send ChainStore complete mail.
*
* @param $Customer 販売店会員情報
*/
public function sendChainStoreCompleteMail(Customer $Customer, $ChainStore, ContractType $ContractType)
{
log_info('販売店会員登録完了メール送信開始');
$MailTemplate = null;
if($ContractType->getId() == "2"){
//販売店(応援プログラム)契約会員本登録メール
$MailTemplate = $this->mailTemplateRepository->find($this->eccubeConfig['eccube_chainstore_oen_entry_complete_mail_template_id']);
}else if($ContractType->getId() == "3"){
//小売販売契約会員本登録メール
$MailTemplate = $this->mailTemplateRepository->find($this->eccubeConfig['eccube_chainstore_kouri_entry_complete_mail_template_id']);
}else{
//販売店契約会員本登録メール
$MailTemplate = $this->mailTemplateRepository->find($this->eccubeConfig['eccube_chainstore_entry_complete_mail_template_id']);
}
$body = $this->twig->render($MailTemplate->getFileName(), [
'Customer' => $Customer,
'BaseInfo' => $this->BaseInfo,
]);
$message = (new \Swift_Message())
//->setSubject('['.$this->BaseInfo->getShopName().'] '.$MailTemplate->getMailSubject())
->setSubject('【ダシーズファクトリー】'.$MailTemplate->getMailSubject())
->setFrom([$this->BaseInfo->getChainstoreFromEmail() => $this->BaseInfo->getShopName()])
->setTo([$Customer->getEmail()])
->setBcc($this->BaseInfo->getChainstoreFromEmail())
->setReplyTo($this->BaseInfo->getChainstoreFromEmail())
->setReturnPath($this->BaseInfo->getChainstoreFromEmail());
// HTMLテンプレートが存在する場合
$htmlFileName = $this->getHtmlTemplate($MailTemplate->getFileName());
if (!is_null($htmlFileName)) {
$htmlBody = $this->twig->render($htmlFileName, [
'Customer' => $Customer,
'BaseInfo' => $this->BaseInfo,
]);
$message
->setContentType('text/plain; charset=UTF-8')
->setBody($body, 'text/plain')
->addPart($htmlBody, 'text/html');
} else {
$message->setBody($body);
}
$event = new EventArgs(
[
'message' => $message,
'Customer' => $Customer,
'BaseInfo' => $this->BaseInfo,
],
null
);
$this->eventDispatcher->dispatch(EccubeEvents::MAIL_CUSTOMER_COMPLETE, $event);
$count = $this->mailer->send($message);
log_info('販売店会員登録完了メール送信完了', ['count' => $count]);
return $count;
}
/**
* Send chainstore mail to admin.
*
* @param $Customer 会員情報
*/
public function sendChainStoreConfirmAdminMail(Member $Member, Customer $Customer, ChainStore $ChainStore = null, ContractType $ContractType = null)
{
log_info('販売店会員登録メール送信開始');
$MailTemplate = $this->mailTemplateRepository->find($this->eccubeConfig['eccube_chainstore_confirm_admin_mail_template_id']);
$body = $this->twig->render($MailTemplate->getFileName(), [
'Member' => $Member,
'Customer' => $Customer,
'ChainStore' => $ChainStore,
'ContractType' => $ContractType,
'BaseInfo' => $this->BaseInfo,
]);
$MailSubject = $MailTemplate->getMailSubject();
$CustomerName = $Customer->getName01()." ".$Customer->getName02();
$MailSubject = str_replace("[@NAME]", $CustomerName, $MailSubject);
$message = (new \Swift_Message())
->setSubject('【'.$this->BaseInfo->getShopName().'】'.$MailSubject)
->setFrom([$this->BaseInfo->getEmail01() => $this->BaseInfo->getShopName()])
->setTo([$Member->getEmail()]);
//->setBcc($this->BaseInfo->getEmail01())
//->setReplyTo($this->BaseInfo->getEmail03())
//->setReturnPath($this->BaseInfo->getEmail04());
// HTMLテンプレートが存在する場合
$htmlFileName = $this->getHtmlTemplate($MailTemplate->getFileName());
if (!is_null($htmlFileName)) {
$htmlBody = $this->twig->render($htmlFileName, [
'Member' => $Member,
'Customer' => $Customer,
'ChainStore' => $ChainStore,
'ContractType' => $ContractType,
'BaseInfo' => $this->BaseInfo,
]);
$message
->setContentType('text/plain; charset=UTF-8')
->setBody($body, 'text/plain')
->addPart($htmlBody, 'text/html');
} else {
$message->setBody($body);
}
$count = $this->mailer->send($message, $failures);
log_info('販売店会員登録メール送信完了', ['count' => $count]);
return $count;
}
/**
* Send check chainstore mail to admin.
*
* @param $Customer 会員情報
*/
public function sendCheckChainStoreMail(Member $Member, $DealerCodeList, $StockNumberList, $CouponCodeList)
{
log_info('チェック販売店会員登録メール送信開始');
$YYYY = date("Y");
$MM = date("m");
$DD = date("d");
$MailTemplate = $this->mailTemplateRepository->find($this->eccubeConfig['eccube_check_chainstore_admin_mail_template_id']);
$body = $this->twig->render($MailTemplate->getFileName(), [
'Member' => $Member,
'DealerCodeList' => $DealerCodeList,
'StockNumberList' => $StockNumberList,
'CouponCodeList' => $CouponCodeList,
'YYYY' => $YYYY,
'MM' => $MM,
'DD' => $DD,
'BaseInfo' => $this->BaseInfo,
]);
$MailSubject = $MailTemplate->getMailSubject();
$MailSubject = str_replace("[@YYYY]", $YYYY, $MailSubject);
$MailSubject = str_replace("[@MM]", $MM, $MailSubject);
$MailSubject = str_replace("[@DD]", $DD, $MailSubject);
$message = (new \Swift_Message())
->setSubject('【'.$this->BaseInfo->getShopName().'】'.$MailSubject)
->setFrom([$this->BaseInfo->getEmail01() => $this->BaseInfo->getShopName()])
->setTo([$Member->getEmail()]);
// HTMLテンプレートが存在する場合
$htmlFileName = $this->getHtmlTemplate($MailTemplate->getFileName());
if (!is_null($htmlFileName)) {
$htmlBody = $this->twig->render($htmlFileName, [
'Member' => $Member,
'DealerCodeList' => $DealerCodeList,
'StockNumberList' => $StockNumberList,
'CouponCodeList' => $CouponCodeList,
'YYYY' => $YYYY,
'MM' => $MM,
'DD' => $DD,
'BaseInfo' => $this->BaseInfo,
]);
$message
->setContentType('text/plain; charset=UTF-8')
->setBody($body, 'text/plain')
->addPart($htmlBody, 'text/html');
} else {
$message->setBody($body);
}
$count = $this->mailer->send($message, $failures);
log_info('チェック販売店会員登録メール送信完了', ['count' => $count]);
return $count;
}
/**
* Send 販売店 order mail.
*
* @param \Eccube\Entity\Order $Order 販売店受注情報
*
* @return \Swift_Message
*/
public function sendChainStoreOrderMail(Order $Order, ChainStore $ChainStore, ContractType $ContractType)
{
log_info('販売店受注メール送信開始');
$MailTemplate = null;
if($ContractType->getId() == "2"){
//販売店注文受付メール(応援プログラム)
$MailTemplate = $this->mailTemplateRepository->find($this->eccubeConfig['eccube_chainstore_oen_order_mail_template_id']);
}else if($ContractType->getId() == "3"){
//販売店注文受付メール(小売販売店)
$MailTemplate = $this->mailTemplateRepository->find($this->eccubeConfig['eccube_chainstore_kouri_order_mail_template_id']);
}else{
//販売店注文受付メール(販売代理店)
$MailTemplate = $this->mailTemplateRepository->find($this->eccubeConfig['eccube_chainstore_order_mail_template_id']);
}
$body = $this->twig->render($MailTemplate->getFileName(), [
'Order' => $Order,
'ChainStore' => $ChainStore,
'ContractType' => $ContractType,
]);
$message = (new \Swift_Message())
//->setSubject('['.$this->BaseInfo->getShopName().'] '.$MailTemplate->getMailSubject())
->setSubject('【ダシーズファクトリー】'.$MailTemplate->getMailSubject())
->setFrom([$this->BaseInfo->getEmail01() => $this->BaseInfo->getShopName()])
->setTo([$Order->getEmail()])
->setBcc($this->BaseInfo->getEmail01())
->setReplyTo($this->BaseInfo->getEmail03())
->setReturnPath($this->BaseInfo->getEmail04());
// HTMLテンプレートが存在する場合
$htmlFileName = $this->getHtmlTemplate($MailTemplate->getFileName());
if (!is_null($htmlFileName)) {
$htmlBody = $this->twig->render($htmlFileName, [
'Order' => $Order,
'ChainStore' => $ChainStore,
'ContractType' => $ContractType,
]);
$message
->setContentType('text/plain; charset=UTF-8')
->setBody($body, 'text/plain')
->addPart($htmlBody, 'text/html');
} else {
$message->setBody($body);
}
$event = new EventArgs(
[
'message' => $message,
'Order' => $Order,
'ChainStore' => $ChainStore,
'ContractType' => $ContractType,
'MailTemplate' => $MailTemplate,
'BaseInfo' => $this->BaseInfo,
],
null
);
$this->eventDispatcher->dispatch(EccubeEvents::MAIL_ORDER, $event);
$count = $this->mailer->send($message);
$MailHistory = new MailHistory();
$MailHistory->setMailSubject($message->getSubject())
->setMailBody($message->getBody())
->setOrder($Order)
->setSendDate(new \DateTime());
// HTML用メールの設定
$multipart = $message->getChildren();
if (count($multipart) > 0) {
$MailHistory->setMailHtmlBody($multipart[0]->getBody());
}
$this->mailHistoryRepository->save($MailHistory);
log_info('販売店受注メール送信完了', ['count' => $count]);
return $message;
}
/**
* Send customer confirm mail.
*
* @param $Customer 会員情報
* @param string $activateUrl アクティベート用url
*/
public function sendCustomerConfirmMail(Customer $Customer, $activateUrl)
{
log_info('仮会員登録メール送信開始');
$MailTemplate = $this->mailTemplateRepository->find($this->eccubeConfig['eccube_entry_confirm_mail_template_id']);
$body = $this->twig->render($MailTemplate->getFileName(), [
'Customer' => $Customer,
'BaseInfo' => $this->BaseInfo,
'activateUrl' => $activateUrl,
]);
//ダシーズファクトリーオンラインショップ
//'.$this->BaseInfo->getShopName().'
$message = (new \Swift_Message())
->setSubject('【ダシーズファクトリーオンラインショップ】'.$MailTemplate->getMailSubject())
->setFrom([$this->BaseInfo->getEmail01() => $this->BaseInfo->getShopName()])
->setTo([$Customer->getEmail()])
->setBcc($this->BaseInfo->getEmail01())
->setReplyTo($this->BaseInfo->getEmail03())
->setReturnPath($this->BaseInfo->getEmail04());
// HTMLテンプレートが存在する場合
$htmlFileName = $this->getHtmlTemplate($MailTemplate->getFileName());
if (!is_null($htmlFileName)) {
$htmlBody = $this->twig->render($htmlFileName, [
'Customer' => $Customer,
'BaseInfo' => $this->BaseInfo,
'activateUrl' => $activateUrl,
]);
$message
->setContentType('text/plain; charset=UTF-8')
->setBody($body, 'text/plain')
->addPart($htmlBody, 'text/html');
} else {
$message->setBody($body);
}
$event = new EventArgs(
[
'message' => $message,
'Customer' => $Customer,
'BaseInfo' => $this->BaseInfo,
'activateUrl' => $activateUrl,
],
null
);
$this->eventDispatcher->dispatch(EccubeEvents::MAIL_CUSTOMER_CONFIRM, $event);
$count = $this->mailer->send($message, $failures);
log_info('仮会員登録メール送信完了', ['count' => $count]);
return $count;
}
/**
* Send customer complete mail.
*
* @param $Customer 会員情報
*/
public function sendCustomerCompleteMail(Customer $Customer)
{
log_info('会員登録完了メール送信開始');
$MailTemplate = $this->mailTemplateRepository->find($this->eccubeConfig['eccube_entry_complete_mail_template_id']);
$body = $this->twig->render($MailTemplate->getFileName(), [
'Customer' => $Customer,
'BaseInfo' => $this->BaseInfo,
]);
//ダシーズファクトリーオンラインショップ
//'.$this->BaseInfo->getShopName().'
$message = (new \Swift_Message())
->setSubject('【ダシーズファクトリーオンラインショップ】'.$MailTemplate->getMailSubject())
->setFrom([$this->BaseInfo->getEmail01() => $this->BaseInfo->getShopName()])
->setTo([$Customer->getEmail()])
->setBcc($this->BaseInfo->getEmail01())
->setReplyTo($this->BaseInfo->getEmail03())
->setReturnPath($this->BaseInfo->getEmail04());
// HTMLテンプレートが存在する場合
$htmlFileName = $this->getHtmlTemplate($MailTemplate->getFileName());
if (!is_null($htmlFileName)) {
$htmlBody = $this->twig->render($htmlFileName, [
'Customer' => $Customer,
'BaseInfo' => $this->BaseInfo,
]);
$message
->setContentType('text/plain; charset=UTF-8')
->setBody($body, 'text/plain')
->addPart($htmlBody, 'text/html');
} else {
$message->setBody($body);
}
$event = new EventArgs(
[
'message' => $message,
'Customer' => $Customer,
'BaseInfo' => $this->BaseInfo,
],
null
);
$this->eventDispatcher->dispatch(EccubeEvents::MAIL_CUSTOMER_COMPLETE, $event);
$count = $this->mailer->send($message);
log_info('会員登録完了メール送信完了', ['count' => $count]);
return $count;
}
/**
* Send order mail.
*
* @param \Eccube\Entity\Order $Order 受注情報
*
* @return \Swift_Message
*/
public function sendOrderMail(Order $Order)
{
log_info('受注メール送信開始');
$MailTemplate = $this->mailTemplateRepository->find($this->eccubeConfig['eccube_order_mail_template_id']);
$body = $this->twig->render($MailTemplate->getFileName(), [
'Order' => $Order,
]);
//ダシーズファクトリーオンラインショップ
//'.$this->BaseInfo->getShopName().'
$message = (new \Swift_Message())
->setSubject('【ダシーズファクトリーオンラインショップ】'.$MailTemplate->getMailSubject())
->setFrom([$this->BaseInfo->getEmail01() => $this->BaseInfo->getShopName()])
->setTo([$Order->getEmail()])
->setBcc($this->BaseInfo->getEmail01())
->setReplyTo($this->BaseInfo->getEmail03())
->setReturnPath($this->BaseInfo->getEmail04());
// HTMLテンプレートが存在する場合
$htmlFileName = $this->getHtmlTemplate($MailTemplate->getFileName());
if (!is_null($htmlFileName)) {
$htmlBody = $this->twig->render($htmlFileName, [
'Order' => $Order,
]);
$message
->setContentType('text/plain; charset=UTF-8')
->setBody($body, 'text/plain')
->addPart($htmlBody, 'text/html');
} else {
$message->setBody($body);
}
$event = new EventArgs(
[
'message' => $message,
'Order' => $Order,
'MailTemplate' => $MailTemplate,
'BaseInfo' => $this->BaseInfo,
],
null
);
$this->eventDispatcher->dispatch(EccubeEvents::MAIL_ORDER, $event);
$count = $this->mailer->send($message);
$MailHistory = new MailHistory();
$MailHistory->setMailSubject($message->getSubject())
->setMailBody($message->getBody())
->setOrder($Order)
->setSendDate(new \DateTime());
// HTML用メールの設定
$multipart = $message->getChildren();
if (count($multipart) > 0) {
$MailHistory->setMailHtmlBody($multipart[0]->getBody());
}
$this->mailHistoryRepository->save($MailHistory);
log_info('受注メール送信完了', ['count' => $count]);
return $message;
}
/**
* Send order mail. (English)
*
* @param \Eccube\Entity\Order $Order 受注情報
*
* @return \Swift_Message
*/
public function sendOrderEnMail(Order $Order)
{
log_info('English 受注メール送信開始');
$MailTemplate = $this->mailTemplateRepository->find($this->eccubeConfig['eccube_order_en_mail_template_id']);
$body = $this->twig->render($MailTemplate->getFileName(), [
'Order' => $Order,
]);
//ダシーズファクトリーオンラインショップ
//'.$this->BaseInfo->getShopName().'
$message = (new \Swift_Message())
->setSubject($MailTemplate->getMailSubject())
->setFrom([$this->BaseInfo->getEmail01() => $this->BaseInfo->getShopName()])
->setTo([$Order->getEmail()])
->setBcc($this->BaseInfo->getEmail01())
->setReplyTo($this->BaseInfo->getEmail03())
->setReturnPath($this->BaseInfo->getEmail04());
// HTMLテンプレートが存在する場合
$htmlFileName = $this->getHtmlTemplate($MailTemplate->getFileName());
if (!is_null($htmlFileName)) {
$htmlBody = $this->twig->render($htmlFileName, [
'Order' => $Order,
]);
$message
->setContentType('text/plain; charset=UTF-8')
->setBody($body, 'text/plain')
->addPart($htmlBody, 'text/html');
} else {
$message->setBody($body);
}
$event = new EventArgs(
[
'message' => $message,
'Order' => $Order,
'MailTemplate' => $MailTemplate,
'BaseInfo' => $this->BaseInfo,
],
null
);
$this->eventDispatcher->dispatch(EccubeEvents::MAIL_ORDER, $event);
$count = $this->mailer->send($message);
$MailHistory = new MailHistory();
$MailHistory->setMailSubject($message->getSubject())
->setMailBody($message->getBody())
->setOrder($Order)
->setSendDate(new \DateTime());
// HTML用メールの設定
$multipart = $message->getChildren();
if (count($multipart) > 0) {
$MailHistory->setMailHtmlBody($multipart[0]->getBody());
}
$this->mailHistoryRepository->save($MailHistory);
log_info('English 受注メール送信完了', ['count' => $count]);
return $message;
}
/**
* ブランド使用料メール
*
* @return \Swift_Message
*/
public function sendChainStoreRetailUsageFeeMail(Member $Member, $YM, $UsageFeeList, $UsageFeeErrList, $UsageFeePrList, $BankTransferCount, $GMOPaymentCount)
{
log_info('ブランド使用料メール送信開始');
$MailTemplate = $this->mailTemplateRepository->find($this->eccubeConfig['eccube_chainstore_retail_usage_fee_template_id']);
$body = $this->twig->render($MailTemplate->getFileName(), [
'Member' => $Member,
'YM' => $YM,
'UsageFeeList' => $UsageFeeList,
'UsageFeeErrList' => $UsageFeeErrList,
'UsageFeePrList' => $UsageFeePrList,
'BankTransferCount' => $BankTransferCount,
'GMOPaymentCount' => $GMOPaymentCount,
'BaseInfo' => $this->BaseInfo,
]);
$MailSubject = '【ダシーズファクトリー】'.$MailTemplate->getMailSubject();
$MailSubject = str_replace("[@YM]", $YM, $MailSubject);
$message = (new \Swift_Message())
->setSubject($MailSubject)
->setFrom([$this->BaseInfo->getEmail01() => $this->BaseInfo->getShopName()])
->setTo([$Member->getEmail()]);
// HTMLテンプレートが存在する場合
$htmlFileName = $this->getHtmlTemplate($MailTemplate->getFileName());
if (!is_null($htmlFileName)) {
$htmlBody = $this->twig->render($htmlFileName, [
'Member' => $Member,
'YM' => $YM,
'UsageFeeList' => $UsageFeeList,
'UsageFeeErrList' => $UsageFeeErrList,
'UsageFeePrList' => $UsageFeePrList,
'BankTransferCount' => $BankTransferCount,
'GMOPaymentCount' => $GMOPaymentCount,
'BaseInfo' => $this->BaseInfo,
]);
$message
->setContentType('text/plain; charset=UTF-8')
->setBody($body, 'text/plain')
->addPart($htmlBody, 'text/html');
} else {
$message->setBody($body);
}
$count = $this->mailer->send($message);
log_info('ブランド使用料メール送信完了', ['count' => $count]);
return $message;
}
}