app/Customize/Service/MailService.php line 426

Open in your IDE?
  1. <?php
  2. /*
  3.  * This file is part of EC-CUBE
  4.  *
  5.  * Copyright(c) EC-CUBE CO.,LTD. All Rights Reserved.
  6.  *
  7.  * http://www.ec-cube.co.jp/
  8.  *
  9.  * For the full copyright and license information, please view the LICENSE
  10.  * file that was distributed with this source code.
  11.  */
  12. namespace Customize\Service;
  13. use Eccube\Service\MailService as BaseMailService;
  14. use Eccube\Common\EccubeConfig;
  15. use Eccube\Entity\BaseInfo;
  16. use Eccube\Entity\Customer;
  17. use Eccube\Entity\Member;
  18. use Eccube\Entity\MailHistory;
  19. use Eccube\Entity\MailTemplate;
  20. use Eccube\Entity\Order;
  21. use Eccube\Entity\OrderItem;
  22. use Eccube\Entity\Shipping;
  23. use Customize\Entity\ChainStore;
  24. use Customize\Entity\Master\ContractType;
  25. use Customize\Repository\Master\BankBranchRepository;
  26. use Eccube\Event\EccubeEvents;
  27. use Eccube\Event\EventArgs;
  28. use Eccube\Repository\BaseInfoRepository;
  29. use Eccube\Repository\MailHistoryRepository;
  30. use Eccube\Repository\MailTemplateRepository;
  31. use Symfony\Component\EventDispatcher\EventDispatcher;
  32. use Symfony\Component\EventDispatcher\EventDispatcherInterface;
  33. class MailService extends BaseMailService
  34. {
  35.     /**
  36.      * @var \Swift_Mailer
  37.      */
  38.     protected $mailer;
  39.     /**
  40.      * @var MailTemplateRepository
  41.      */
  42.     protected $mailTemplateRepository;
  43.     /**
  44.      * @var MailHistoryRepository
  45.      */
  46.     protected $mailHistoryRepository;
  47.     /**
  48.      * @var EventDispatcher
  49.      */
  50.     protected $eventDispatcher;
  51.     /**
  52.      * @var BaseInfo
  53.      */
  54.     protected $BaseInfo;
  55.     /**
  56.      * @var EccubeConfig
  57.      */
  58.     protected $eccubeConfig;
  59.     /**
  60.      * @var \Twig_Environment
  61.      */
  62.     protected $twig;
  63.     /**
  64.      * @var BankBranchRepository
  65.      */
  66.     protected $bankBranchRepository;
  67.     /**
  68.      * MailService constructor.
  69.      *
  70.      * @param \Swift_Mailer $mailer
  71.      * @param MailTemplateRepository $mailTemplateRepository
  72.      * @param MailHistoryRepository $mailHistoryRepository
  73.      * @param BaseInfoRepository $baseInfoRepository
  74.      * @param EventDispatcherInterface $eventDispatcher
  75.      * @param \Twig_Environment $twig
  76.      * @param EccubeConfig $eccubeConfig
  77.      */
  78.     public function __construct(
  79.         \Swift_Mailer $mailer,
  80.         MailTemplateRepository $mailTemplateRepository,
  81.         MailHistoryRepository $mailHistoryRepository,
  82.         BaseInfoRepository $baseInfoRepository,
  83.         EventDispatcherInterface $eventDispatcher,
  84.         \Twig_Environment $twig,
  85.         EccubeConfig $eccubeConfig,
  86.         BankBranchRepository $bankBranchRepository
  87.     ) {
  88.         $this->mailer $mailer;
  89.         $this->mailTemplateRepository $mailTemplateRepository;
  90.         $this->mailHistoryRepository $mailHistoryRepository;
  91.         $this->BaseInfo $baseInfoRepository->get();
  92.         $this->eventDispatcher $eventDispatcher;
  93.         $this->eccubeConfig $eccubeConfig;
  94.         $this->twig $twig;
  95.         $this->bankBranchRepository $bankBranchRepository;
  96.     }
  97.     /**
  98.      * Send chainstore confirm mail.(Full登録)
  99.      *
  100.      * @param $Customer 販売店会員情報
  101.      * @param string $activateUrl アクティベート用url
  102.      */
  103.     public function sendChainStoreConfirmMailFullReg(Customer $Customer$activateUrlContractType $ContractType null)
  104.     {
  105.         log_info('仮販売店会員(Full登録)登録メール送信開始');
  106.         $MailTemplate null;
  107.         if($ContractType->getId() == "2"){
  108.             //販売店(応援プログラム)契約会員仮登録メール(Full登録)
  109.             $MailTemplate $this->mailTemplateRepository->find($this->eccubeConfig['eccube_chainstore_oen_entry_confirm_mail_fullreg_template_id']);
  110.         }else if($ContractType->getId() == "3"){
  111.             //小売販売契約会員仮登録メール(Full登録)
  112.             $MailTemplate $this->mailTemplateRepository->find($this->eccubeConfig['eccube_chainstore_kouri_entry_confirm_mail_fullreg_template_id']);
  113.         }else{
  114.             //販売店契約会員仮登録メール(Full登録)
  115.             $MailTemplate $this->mailTemplateRepository->find($this->eccubeConfig['eccube_chainstore_entry_confirm_mail_fullreg_template_id']);
  116.         }
  117.         $bankInfo null;
  118.         $ChainStore $Customer->getChainStore();
  119.         if(is_object($ChainStore)){
  120.             $branchId $ChainStore->getBankBranch();
  121.             $bankInfo $this->bankBranchRepository->findOneBy(['id' => $branchId]);
  122.         }
  123.         $body $this->twig->render($MailTemplate->getFileName(), [
  124.             'Customer' => $Customer,
  125.             'ContractType' => $ContractType,
  126.             'BaseInfo' => $this->BaseInfo,
  127.             'activateUrl' => $activateUrl,
  128.             'bankInfo' => $bankInfo,
  129.         ]);
  130.         $message = (new \Swift_Message())
  131.             //->setSubject('['.$this->BaseInfo->getShopName().'] '.$MailTemplate->getMailSubject())
  132.             ->setSubject('【ダシーズファクトリー】'.$MailTemplate->getMailSubject())
  133.             ->setFrom([$this->BaseInfo->getChainstoreFromEmail() => $this->BaseInfo->getShopName()])
  134.             ->setTo([$Customer->getEmail()])
  135.             ->setBcc($this->BaseInfo->getChainstoreFromEmail())
  136.             ->setReplyTo($this->BaseInfo->getChainstoreFromEmail())
  137.             ->setReturnPath($this->BaseInfo->getChainstoreFromEmail());
  138.         // HTMLテンプレートが存在する場合
  139.         $htmlFileName $this->getHtmlTemplate($MailTemplate->getFileName());
  140.         if (!is_null($htmlFileName)) {
  141.             $htmlBody $this->twig->render($htmlFileName, [
  142.                 'Customer' => $Customer,
  143.                 'ContractType' => $ContractType,
  144.                 'BaseInfo' => $this->BaseInfo,
  145.                 'activateUrl' => $activateUrl,
  146.                 'bankInfo' => $bankInfo,
  147.             ]);
  148.             $message
  149.                 ->setContentType('text/plain; charset=UTF-8')
  150.                 ->setBody($body'text/plain')
  151.                 ->addPart($htmlBody'text/html');
  152.         } else {
  153.             $message->setBody($body);
  154.         }
  155.         $event = new EventArgs(
  156.             [
  157.                 'message' => $message,
  158.                 'ContractType' => $ContractType,
  159.                 'Customer' => $Customer,
  160.                 'BaseInfo' => $this->BaseInfo,
  161.                 'activateUrl' => $activateUrl,
  162.                 'bankInfo' => $bankInfo,
  163.             ],
  164.             null
  165.         );
  166.         $this->eventDispatcher->dispatch(EccubeEvents::MAIL_CUSTOMER_CONFIRM$event);
  167.         $count $this->mailer->send($message$failures);
  168.         log_info('仮販売店会員(Full登録)登録メール送信完了', ['count' => $count]);
  169.         return $count;
  170.     }
  171.     /**
  172.      * Send chainstore confirm mail.
  173.      *
  174.      * @param $Customer 販売店会員情報
  175.      * @param string $activateUrl アクティベート用url
  176.      */
  177.     public function sendChainStoreConfirmMail(Customer $Customer$activateUrlContractType $ContractType null)
  178.     {
  179.         log_info('仮販売店会員登録メール送信開始');
  180.         $MailTemplate null;
  181.         if($ContractType->getId() == "2"){
  182.             //販売店(応援プログラム)契約会員仮登録メール
  183.             $MailTemplate $this->mailTemplateRepository->find($this->eccubeConfig['eccube_chainstore_oen_entry_confirm_mail_template_id']);
  184.         }else if($ContractType->getId() == "3"){
  185.             //小売販売契約会員仮登録メール
  186.             $MailTemplate $this->mailTemplateRepository->find($this->eccubeConfig['eccube_chainstore_kouri_entry_confirm_mail_template_id']);
  187.         }else{
  188.             //販売店契約会員仮登録メール
  189.             $MailTemplate $this->mailTemplateRepository->find($this->eccubeConfig['eccube_chainstore_entry_confirm_mail_template_id']);
  190.         }
  191.         $body $this->twig->render($MailTemplate->getFileName(), [
  192.             'Customer' => $Customer,
  193.             'ContractType' => $ContractType,
  194.             'BaseInfo' => $this->BaseInfo,
  195.             'activateUrl' => $activateUrl,
  196.         ]);
  197.         $message = (new \Swift_Message())
  198.             //->setSubject('['.$this->BaseInfo->getShopName().'] '.$MailTemplate->getMailSubject())
  199.             ->setSubject('【ダシーズファクトリー】'.$MailTemplate->getMailSubject())
  200.             ->setFrom([$this->BaseInfo->getChainstoreFromEmail() => $this->BaseInfo->getShopName()])
  201.             ->setTo([$Customer->getEmail()])
  202.             ->setBcc($this->BaseInfo->getChainstoreFromEmail())
  203.             ->setReplyTo($this->BaseInfo->getChainstoreFromEmail())
  204.             ->setReturnPath($this->BaseInfo->getChainstoreFromEmail());
  205.         // HTMLテンプレートが存在する場合
  206.         $htmlFileName $this->getHtmlTemplate($MailTemplate->getFileName());
  207.         if (!is_null($htmlFileName)) {
  208.             $htmlBody $this->twig->render($htmlFileName, [
  209.                 'Customer' => $Customer,
  210.                 'ContractType' => $ContractType,
  211.                 'BaseInfo' => $this->BaseInfo,
  212.                 'activateUrl' => $activateUrl,
  213.             ]);
  214.             $message
  215.                 ->setContentType('text/plain; charset=UTF-8')
  216.                 ->setBody($body'text/plain')
  217.                 ->addPart($htmlBody'text/html');
  218.         } else {
  219.             $message->setBody($body);
  220.         }
  221.         $event = new EventArgs(
  222.             [
  223.                 'message' => $message,
  224.                 'ContractType' => $ContractType,
  225.                 'Customer' => $Customer,
  226.                 'BaseInfo' => $this->BaseInfo,
  227.                 'activateUrl' => $activateUrl,
  228.             ],
  229.             null
  230.         );
  231.         $this->eventDispatcher->dispatch(EccubeEvents::MAIL_CUSTOMER_CONFIRM$event);
  232.         $count $this->mailer->send($message$failures);
  233.         log_info('仮販売店会員登録メール送信完了', ['count' => $count]);
  234.         return $count;
  235.     }
  236.     /**
  237.      * Send ChainStore complete mail.
  238.      *
  239.      * @param $Customer 販売店会員情報
  240.      */
  241.     public function sendChainStoreCompleteMail(Customer $Customer,  $ChainStoreContractType $ContractType)
  242.     {
  243.         log_info('販売店会員登録完了メール送信開始');
  244.         $MailTemplate null;
  245.         if($ContractType->getId() == "2"){
  246.             //販売店(応援プログラム)契約会員本登録メール
  247.             $MailTemplate $this->mailTemplateRepository->find($this->eccubeConfig['eccube_chainstore_oen_entry_complete_mail_template_id']);
  248.         }else if($ContractType->getId() == "3"){
  249.             //小売販売契約会員本登録メール
  250.             $MailTemplate $this->mailTemplateRepository->find($this->eccubeConfig['eccube_chainstore_kouri_entry_complete_mail_template_id']);
  251.         }else{
  252.             //販売店契約会員本登録メール
  253.             $MailTemplate $this->mailTemplateRepository->find($this->eccubeConfig['eccube_chainstore_entry_complete_mail_template_id']);
  254.         }
  255.         $body $this->twig->render($MailTemplate->getFileName(), [
  256.             'Customer' => $Customer,
  257.             'BaseInfo' => $this->BaseInfo,
  258.         ]);
  259.         $message = (new \Swift_Message())
  260.             //->setSubject('['.$this->BaseInfo->getShopName().'] '.$MailTemplate->getMailSubject())
  261.             ->setSubject('【ダシーズファクトリー】'.$MailTemplate->getMailSubject())
  262.             ->setFrom([$this->BaseInfo->getChainstoreFromEmail() => $this->BaseInfo->getShopName()])
  263.             ->setTo([$Customer->getEmail()])
  264.             ->setBcc($this->BaseInfo->getChainstoreFromEmail())
  265.             ->setReplyTo($this->BaseInfo->getChainstoreFromEmail())
  266.             ->setReturnPath($this->BaseInfo->getChainstoreFromEmail());
  267.         // HTMLテンプレートが存在する場合
  268.         $htmlFileName $this->getHtmlTemplate($MailTemplate->getFileName());
  269.         if (!is_null($htmlFileName)) {
  270.             $htmlBody $this->twig->render($htmlFileName, [
  271.                 'Customer' => $Customer,
  272.                 'BaseInfo' => $this->BaseInfo,
  273.             ]);
  274.             $message
  275.                 ->setContentType('text/plain; charset=UTF-8')
  276.                 ->setBody($body'text/plain')
  277.                 ->addPart($htmlBody'text/html');
  278.         } else {
  279.             $message->setBody($body);
  280.         }
  281.         $event = new EventArgs(
  282.             [
  283.                 'message' => $message,
  284.                 'Customer' => $Customer,
  285.                 'BaseInfo' => $this->BaseInfo,
  286.             ],
  287.             null
  288.         );
  289.         $this->eventDispatcher->dispatch(EccubeEvents::MAIL_CUSTOMER_COMPLETE$event);
  290.         $count $this->mailer->send($message);
  291.         log_info('販売店会員登録完了メール送信完了', ['count' => $count]);
  292.         return $count;
  293.     }
  294.     /**
  295.      * Send chainstore mail to admin.
  296.      *
  297.      * @param $Customer 会員情報
  298.      */
  299.     public function sendChainStoreConfirmAdminMail(Member $MemberCustomer $CustomerChainStore $ChainStore nullContractType $ContractType null)
  300.     {
  301.         log_info('販売店会員登録メール送信開始');
  302.         $MailTemplate $this->mailTemplateRepository->find($this->eccubeConfig['eccube_chainstore_confirm_admin_mail_template_id']);
  303.         $body $this->twig->render($MailTemplate->getFileName(), [
  304.             'Member' => $Member,
  305.             'Customer' => $Customer,
  306.             'ChainStore' => $ChainStore,
  307.             'ContractType' => $ContractType,
  308.             'BaseInfo' => $this->BaseInfo,
  309.         ]);
  310.         $MailSubject $MailTemplate->getMailSubject();
  311.         $CustomerName $Customer->getName01()." ".$Customer->getName02();
  312.         $MailSubject str_replace("[@NAME]"$CustomerName$MailSubject);
  313.         $message = (new \Swift_Message())
  314.             ->setSubject('【'.$this->BaseInfo->getShopName().'】'.$MailSubject)
  315.             ->setFrom([$this->BaseInfo->getEmail01() => $this->BaseInfo->getShopName()])
  316.             ->setTo([$Member->getEmail()]);
  317.             //->setBcc($this->BaseInfo->getEmail01())
  318.             //->setReplyTo($this->BaseInfo->getEmail03())
  319.             //->setReturnPath($this->BaseInfo->getEmail04());
  320.         // HTMLテンプレートが存在する場合
  321.         $htmlFileName $this->getHtmlTemplate($MailTemplate->getFileName());
  322.         if (!is_null($htmlFileName)) {
  323.             $htmlBody $this->twig->render($htmlFileName, [
  324.                 'Member' => $Member,
  325.                 'Customer' => $Customer,
  326.                 'ChainStore' => $ChainStore,
  327.                 'ContractType' => $ContractType,
  328.                 'BaseInfo' => $this->BaseInfo,
  329.             ]);
  330.             $message
  331.                 ->setContentType('text/plain; charset=UTF-8')
  332.                 ->setBody($body'text/plain')
  333.                 ->addPart($htmlBody'text/html');
  334.         } else {
  335.             $message->setBody($body);
  336.         }
  337.         $count $this->mailer->send($message$failures);
  338.         log_info('販売店会員登録メール送信完了', ['count' => $count]);
  339.         return $count;
  340.     }
  341.     /**
  342.      * Send check chainstore mail to admin.
  343.      *
  344.      * @param $Customer 会員情報
  345.      */
  346.     public function sendCheckChainStoreMail(Member $Member$DealerCodeList$StockNumberList$CouponCodeList)
  347.     {
  348.         log_info('チェック販売店会員登録メール送信開始');
  349.         $YYYY date("Y");
  350.         $MM date("m");
  351.         $DD date("d");
  352.         $MailTemplate $this->mailTemplateRepository->find($this->eccubeConfig['eccube_check_chainstore_admin_mail_template_id']);
  353.         $body $this->twig->render($MailTemplate->getFileName(), [
  354.             'Member' => $Member,
  355.             'DealerCodeList' => $DealerCodeList,
  356.             'StockNumberList' => $StockNumberList,
  357.             'CouponCodeList' => $CouponCodeList,
  358.             'YYYY' => $YYYY,
  359.             'MM' => $MM,
  360.             'DD' => $DD,
  361.             'BaseInfo' => $this->BaseInfo,
  362.         ]);
  363.         $MailSubject $MailTemplate->getMailSubject();
  364.         $MailSubject str_replace("[@YYYY]"$YYYY$MailSubject);
  365.         $MailSubject str_replace("[@MM]"$MM$MailSubject);
  366.         $MailSubject str_replace("[@DD]"$DD$MailSubject);
  367.         $message = (new \Swift_Message())
  368.             ->setSubject('【'.$this->BaseInfo->getShopName().'】'.$MailSubject)
  369.             ->setFrom([$this->BaseInfo->getEmail01() => $this->BaseInfo->getShopName()])
  370.             ->setTo([$Member->getEmail()]);
  371.         // HTMLテンプレートが存在する場合
  372.         $htmlFileName $this->getHtmlTemplate($MailTemplate->getFileName());
  373.         if (!is_null($htmlFileName)) {
  374.             $htmlBody $this->twig->render($htmlFileName, [
  375.                 'Member' => $Member,
  376.                 'DealerCodeList' => $DealerCodeList,
  377.                 'StockNumberList' => $StockNumberList,
  378.                 'CouponCodeList' => $CouponCodeList,
  379.                 'YYYY' => $YYYY,
  380.                 'MM' => $MM,
  381.                 'DD' => $DD,
  382.                 'BaseInfo' => $this->BaseInfo,
  383.             ]);
  384.             $message
  385.                 ->setContentType('text/plain; charset=UTF-8')
  386.                 ->setBody($body'text/plain')
  387.                 ->addPart($htmlBody'text/html');
  388.         } else {
  389.             $message->setBody($body);
  390.         }
  391.         $count $this->mailer->send($message$failures);
  392.         log_info('チェック販売店会員登録メール送信完了', ['count' => $count]);
  393.         return $count;
  394.     }
  395.     /**
  396.      * Send 販売店 order mail.
  397.      *
  398.      * @param \Eccube\Entity\Order $Order 販売店受注情報
  399.      *
  400.      * @return \Swift_Message
  401.      */
  402.     public function sendChainStoreOrderMail(Order $OrderChainStore $ChainStoreContractType $ContractType)
  403.     {
  404.         log_info('販売店受注メール送信開始');
  405.         $MailTemplate null;
  406.         if($ContractType->getId() == "2"){
  407.             //販売店注文受付メール(応援プログラム)
  408.             $MailTemplate $this->mailTemplateRepository->find($this->eccubeConfig['eccube_chainstore_oen_order_mail_template_id']);
  409.         }else if($ContractType->getId() == "3"){
  410.             //販売店注文受付メール(小売販売店)
  411.             $MailTemplate $this->mailTemplateRepository->find($this->eccubeConfig['eccube_chainstore_kouri_order_mail_template_id']);
  412.         }else{
  413.             //販売店注文受付メール(販売代理店)
  414.             $MailTemplate $this->mailTemplateRepository->find($this->eccubeConfig['eccube_chainstore_order_mail_template_id']);
  415.         }
  416.         $body $this->twig->render($MailTemplate->getFileName(), [
  417.             'Order' => $Order,
  418.             'ChainStore' => $ChainStore,
  419.             'ContractType' => $ContractType,
  420.         ]);
  421.         $message = (new \Swift_Message())
  422.             //->setSubject('['.$this->BaseInfo->getShopName().'] '.$MailTemplate->getMailSubject())
  423.             ->setSubject('【ダシーズファクトリー】'.$MailTemplate->getMailSubject())
  424.             ->setFrom([$this->BaseInfo->getEmail01() => $this->BaseInfo->getShopName()])
  425.             ->setTo([$Order->getEmail()])
  426.             ->setBcc($this->BaseInfo->getEmail01())
  427.             ->setReplyTo($this->BaseInfo->getEmail03())
  428.             ->setReturnPath($this->BaseInfo->getEmail04());
  429.         // HTMLテンプレートが存在する場合
  430.         $htmlFileName $this->getHtmlTemplate($MailTemplate->getFileName());
  431.         if (!is_null($htmlFileName)) {
  432.             $htmlBody $this->twig->render($htmlFileName, [
  433.                 'Order' => $Order,
  434.                 'ChainStore' => $ChainStore,
  435.                 'ContractType' => $ContractType,
  436.             ]);
  437.             $message
  438.                 ->setContentType('text/plain; charset=UTF-8')
  439.                 ->setBody($body'text/plain')
  440.                 ->addPart($htmlBody'text/html');
  441.         } else {
  442.             $message->setBody($body);
  443.         }
  444.         $event = new EventArgs(
  445.             [
  446.                 'message' => $message,
  447.                 'Order' => $Order,
  448.                 'ChainStore' => $ChainStore,
  449.                 'ContractType' => $ContractType,
  450.                 'MailTemplate' => $MailTemplate,
  451.                 'BaseInfo' => $this->BaseInfo,
  452.             ],
  453.             null
  454.         );
  455.         $this->eventDispatcher->dispatch(EccubeEvents::MAIL_ORDER$event);
  456.         $count $this->mailer->send($message);
  457.         $MailHistory = new MailHistory();
  458.         $MailHistory->setMailSubject($message->getSubject())
  459.             ->setMailBody($message->getBody())
  460.             ->setOrder($Order)
  461.             ->setSendDate(new \DateTime());
  462.         // HTML用メールの設定
  463.         $multipart $message->getChildren();
  464.         if (count($multipart) > 0) {
  465.             $MailHistory->setMailHtmlBody($multipart[0]->getBody());
  466.         }
  467.         $this->mailHistoryRepository->save($MailHistory);
  468.         log_info('販売店受注メール送信完了', ['count' => $count]);
  469.         return $message;
  470.     }
  471.     /**
  472.      * Send customer confirm mail.
  473.      *
  474.      * @param $Customer 会員情報
  475.      * @param string $activateUrl アクティベート用url
  476.      */
  477.     public function sendCustomerConfirmMail(Customer $Customer$activateUrl)
  478.     {
  479.         log_info('仮会員登録メール送信開始');
  480.         $MailTemplate $this->mailTemplateRepository->find($this->eccubeConfig['eccube_entry_confirm_mail_template_id']);
  481.         $body $this->twig->render($MailTemplate->getFileName(), [
  482.             'Customer' => $Customer,
  483.             'BaseInfo' => $this->BaseInfo,
  484.             'activateUrl' => $activateUrl,
  485.         ]);
  486.         //ダシーズファクトリーオンラインショップ
  487.         //'.$this->BaseInfo->getShopName().'
  488.         $message = (new \Swift_Message())
  489.             ->setSubject('【ダシーズファクトリーオンラインショップ】'.$MailTemplate->getMailSubject())
  490.             ->setFrom([$this->BaseInfo->getEmail01() => $this->BaseInfo->getShopName()])
  491.             ->setTo([$Customer->getEmail()])
  492.             ->setBcc($this->BaseInfo->getEmail01())
  493.             ->setReplyTo($this->BaseInfo->getEmail03())
  494.             ->setReturnPath($this->BaseInfo->getEmail04());
  495.         // HTMLテンプレートが存在する場合
  496.         $htmlFileName $this->getHtmlTemplate($MailTemplate->getFileName());
  497.         if (!is_null($htmlFileName)) {
  498.             $htmlBody $this->twig->render($htmlFileName, [
  499.                 'Customer' => $Customer,
  500.                 'BaseInfo' => $this->BaseInfo,
  501.                 'activateUrl' => $activateUrl,
  502.             ]);
  503.             $message
  504.                 ->setContentType('text/plain; charset=UTF-8')
  505.                 ->setBody($body'text/plain')
  506.                 ->addPart($htmlBody'text/html');
  507.         } else {
  508.             $message->setBody($body);
  509.         }
  510.         $event = new EventArgs(
  511.             [
  512.                 'message' => $message,
  513.                 'Customer' => $Customer,
  514.                 'BaseInfo' => $this->BaseInfo,
  515.                 'activateUrl' => $activateUrl,
  516.             ],
  517.             null
  518.         );
  519.         $this->eventDispatcher->dispatch(EccubeEvents::MAIL_CUSTOMER_CONFIRM$event);
  520.         $count $this->mailer->send($message$failures);
  521.         log_info('仮会員登録メール送信完了', ['count' => $count]);
  522.         return $count;
  523.     }
  524.     /**
  525.      * Send customer complete mail.
  526.      *
  527.      * @param $Customer 会員情報
  528.      */
  529.     public function sendCustomerCompleteMail(Customer $Customer)
  530.     {
  531.         log_info('会員登録完了メール送信開始');
  532.         $MailTemplate $this->mailTemplateRepository->find($this->eccubeConfig['eccube_entry_complete_mail_template_id']);
  533.         $body $this->twig->render($MailTemplate->getFileName(), [
  534.             'Customer' => $Customer,
  535.             'BaseInfo' => $this->BaseInfo,
  536.         ]);
  537.         //ダシーズファクトリーオンラインショップ
  538.         //'.$this->BaseInfo->getShopName().'
  539.         $message = (new \Swift_Message())
  540.             ->setSubject('【ダシーズファクトリーオンラインショップ】'.$MailTemplate->getMailSubject())
  541.             ->setFrom([$this->BaseInfo->getEmail01() => $this->BaseInfo->getShopName()])
  542.             ->setTo([$Customer->getEmail()])
  543.             ->setBcc($this->BaseInfo->getEmail01())
  544.             ->setReplyTo($this->BaseInfo->getEmail03())
  545.             ->setReturnPath($this->BaseInfo->getEmail04());
  546.         // HTMLテンプレートが存在する場合
  547.         $htmlFileName $this->getHtmlTemplate($MailTemplate->getFileName());
  548.         if (!is_null($htmlFileName)) {
  549.             $htmlBody $this->twig->render($htmlFileName, [
  550.                 'Customer' => $Customer,
  551.                 'BaseInfo' => $this->BaseInfo,
  552.             ]);
  553.             $message
  554.                 ->setContentType('text/plain; charset=UTF-8')
  555.                 ->setBody($body'text/plain')
  556.                 ->addPart($htmlBody'text/html');
  557.         } else {
  558.             $message->setBody($body);
  559.         }
  560.         $event = new EventArgs(
  561.             [
  562.                 'message' => $message,
  563.                 'Customer' => $Customer,
  564.                 'BaseInfo' => $this->BaseInfo,
  565.             ],
  566.             null
  567.         );
  568.         $this->eventDispatcher->dispatch(EccubeEvents::MAIL_CUSTOMER_COMPLETE$event);
  569.         $count $this->mailer->send($message);
  570.         log_info('会員登録完了メール送信完了', ['count' => $count]);
  571.         return $count;
  572.     }
  573.     /**
  574.      * Send order mail.
  575.      *
  576.      * @param \Eccube\Entity\Order $Order 受注情報
  577.      *
  578.      * @return \Swift_Message
  579.      */
  580.     public function sendOrderMail(Order $Order)
  581.     {
  582.         log_info('受注メール送信開始');
  583.         $MailTemplate $this->mailTemplateRepository->find($this->eccubeConfig['eccube_order_mail_template_id']);
  584.         
  585.         $body $this->twig->render($MailTemplate->getFileName(), [
  586.             'Order' => $Order,
  587.         ]);
  588.         //ダシーズファクトリーオンラインショップ
  589.         //'.$this->BaseInfo->getShopName().'
  590.         $message = (new \Swift_Message())
  591.             ->setSubject('【ダシーズファクトリーオンラインショップ】'.$MailTemplate->getMailSubject())
  592.             ->setFrom([$this->BaseInfo->getEmail01() => $this->BaseInfo->getShopName()])
  593.             ->setTo([$Order->getEmail()])
  594.             ->setBcc($this->BaseInfo->getEmail01())
  595.             ->setReplyTo($this->BaseInfo->getEmail03())
  596.             ->setReturnPath($this->BaseInfo->getEmail04());
  597.         // HTMLテンプレートが存在する場合
  598.         $htmlFileName $this->getHtmlTemplate($MailTemplate->getFileName());
  599.         if (!is_null($htmlFileName)) {
  600.             $htmlBody $this->twig->render($htmlFileName, [
  601.                 'Order' => $Order,
  602.             ]);
  603.             $message
  604.                 ->setContentType('text/plain; charset=UTF-8')
  605.                 ->setBody($body'text/plain')
  606.                 ->addPart($htmlBody'text/html');
  607.         } else {
  608.             $message->setBody($body);
  609.         }
  610.         $event = new EventArgs(
  611.             [
  612.                 'message' => $message,
  613.                 'Order' => $Order,
  614.                 'MailTemplate' => $MailTemplate,
  615.                 'BaseInfo' => $this->BaseInfo,
  616.             ],
  617.             null
  618.         );
  619.         $this->eventDispatcher->dispatch(EccubeEvents::MAIL_ORDER$event);
  620.         $count $this->mailer->send($message);
  621.         $MailHistory = new MailHistory();
  622.         $MailHistory->setMailSubject($message->getSubject())
  623.             ->setMailBody($message->getBody())
  624.             ->setOrder($Order)
  625.             ->setSendDate(new \DateTime());
  626.         // HTML用メールの設定
  627.         $multipart $message->getChildren();
  628.         if (count($multipart) > 0) {
  629.             $MailHistory->setMailHtmlBody($multipart[0]->getBody());
  630.         }
  631.         $this->mailHistoryRepository->save($MailHistory);
  632.         log_info('受注メール送信完了', ['count' => $count]);
  633.         return $message;
  634.     }
  635.     /**
  636.      * Send order mail. (English)
  637.      *
  638.      * @param \Eccube\Entity\Order $Order 受注情報
  639.      *
  640.      * @return \Swift_Message
  641.      */
  642.     public function sendOrderEnMail(Order $Order)
  643.     {
  644.         log_info('English 受注メール送信開始');
  645.         $MailTemplate $this->mailTemplateRepository->find($this->eccubeConfig['eccube_order_en_mail_template_id']);
  646.         
  647.         $body $this->twig->render($MailTemplate->getFileName(), [
  648.             'Order' => $Order,
  649.         ]);
  650.         //ダシーズファクトリーオンラインショップ
  651.         //'.$this->BaseInfo->getShopName().'
  652.         $message = (new \Swift_Message())
  653.             ->setSubject($MailTemplate->getMailSubject())
  654.             ->setFrom([$this->BaseInfo->getEmail01() => $this->BaseInfo->getShopName()])
  655.             ->setTo([$Order->getEmail()])
  656.             ->setBcc($this->BaseInfo->getEmail01())
  657.             ->setReplyTo($this->BaseInfo->getEmail03())
  658.             ->setReturnPath($this->BaseInfo->getEmail04());
  659.         // HTMLテンプレートが存在する場合
  660.         $htmlFileName $this->getHtmlTemplate($MailTemplate->getFileName());
  661.         if (!is_null($htmlFileName)) {
  662.             $htmlBody $this->twig->render($htmlFileName, [
  663.                 'Order' => $Order,
  664.             ]);
  665.             $message
  666.                 ->setContentType('text/plain; charset=UTF-8')
  667.                 ->setBody($body'text/plain')
  668.                 ->addPart($htmlBody'text/html');
  669.         } else {
  670.             $message->setBody($body);
  671.         }
  672.         $event = new EventArgs(
  673.             [
  674.                 'message' => $message,
  675.                 'Order' => $Order,
  676.                 'MailTemplate' => $MailTemplate,
  677.                 'BaseInfo' => $this->BaseInfo,
  678.             ],
  679.             null
  680.         );
  681.         $this->eventDispatcher->dispatch(EccubeEvents::MAIL_ORDER$event);
  682.         $count $this->mailer->send($message);
  683.         $MailHistory = new MailHistory();
  684.         $MailHistory->setMailSubject($message->getSubject())
  685.             ->setMailBody($message->getBody())
  686.             ->setOrder($Order)
  687.             ->setSendDate(new \DateTime());
  688.         // HTML用メールの設定
  689.         $multipart $message->getChildren();
  690.         if (count($multipart) > 0) {
  691.             $MailHistory->setMailHtmlBody($multipart[0]->getBody());
  692.         }
  693.         $this->mailHistoryRepository->save($MailHistory);
  694.         log_info('English 受注メール送信完了', ['count' => $count]);
  695.         return $message;
  696.     }
  697.     /**
  698.      * ブランド使用料メール
  699.      *
  700.      * @return \Swift_Message
  701.      */
  702.     public function sendChainStoreRetailUsageFeeMail(Member $Member$YM$UsageFeeList$UsageFeeErrList$UsageFeePrList$BankTransferCount$GMOPaymentCount)
  703.     {
  704.         log_info('ブランド使用料メール送信開始');
  705.         $MailTemplate $this->mailTemplateRepository->find($this->eccubeConfig['eccube_chainstore_retail_usage_fee_template_id']);
  706.         $body $this->twig->render($MailTemplate->getFileName(), [
  707.             'Member' => $Member,
  708.             'YM' => $YM,
  709.             'UsageFeeList' => $UsageFeeList,
  710.             'UsageFeeErrList' => $UsageFeeErrList,
  711.             'UsageFeePrList' => $UsageFeePrList,
  712.             'BankTransferCount' => $BankTransferCount,
  713.             'GMOPaymentCount' => $GMOPaymentCount,
  714.             'BaseInfo' => $this->BaseInfo,
  715.         ]);
  716.         $MailSubject '【ダシーズファクトリー】'.$MailTemplate->getMailSubject();
  717.         $MailSubject str_replace("[@YM]"$YM$MailSubject);
  718.         $message = (new \Swift_Message())
  719.             ->setSubject($MailSubject)
  720.             ->setFrom([$this->BaseInfo->getEmail01() => $this->BaseInfo->getShopName()])
  721.             ->setTo([$Member->getEmail()]);
  722.         // HTMLテンプレートが存在する場合
  723.         $htmlFileName $this->getHtmlTemplate($MailTemplate->getFileName());
  724.         if (!is_null($htmlFileName)) {
  725.             $htmlBody $this->twig->render($htmlFileName, [
  726.                 'Member' => $Member,
  727.                 'YM' => $YM,
  728.                 'UsageFeeList' => $UsageFeeList,
  729.                 'UsageFeeErrList' => $UsageFeeErrList,
  730.                 'UsageFeePrList' => $UsageFeePrList,
  731.                 'BankTransferCount' => $BankTransferCount,
  732.                 'GMOPaymentCount' => $GMOPaymentCount,
  733.                 'BaseInfo' => $this->BaseInfo,
  734.             ]);
  735.             $message
  736.                 ->setContentType('text/plain; charset=UTF-8')
  737.                 ->setBody($body'text/plain')
  738.                 ->addPart($htmlBody'text/html');
  739.         } else {
  740.             $message->setBody($body);
  741.         }
  742.         $count $this->mailer->send($message);
  743.         log_info('ブランド使用料メール送信完了', ['count' => $count]);
  744.         return $message;
  745.     }
  746. }