예제 #1
0
 /**
  * @param               $tokens
  * @param               $config
  * @param MauticFactory $factory
  * @param Lead          $lead
  */
 public static function sendEmail($tokens, $config, MauticFactory $factory, Lead $lead)
 {
     $mailer = $factory->getMailer();
     $emails = !empty($config['to']) ? explode(',', $config['to']) : array();
     $mailer->setTo($emails);
     $leadEmail = $lead->getEmail();
     if (!empty($leadEmail)) {
         // Reply to lead for user convenience
         $mailer->setReplyTo($leadEmail);
     }
     if (!empty($config['cc'])) {
         $emails = explode(',', $config['cc']);
         $mailer->setCc($emails);
     }
     if (!empty($config['bcc'])) {
         $emails = explode(',', $config['bcc']);
         $mailer->setBcc($emails);
     }
     $mailer->setSubject($config['subject']);
     $mailer->setTokens($tokens);
     $mailer->setBody($config['message']);
     $mailer->parsePlainText($config['message']);
     $mailer->send();
     if ($config['copy_lead'] && !empty($leadEmail)) {
         // Send copy to lead
         $mailer->reset();
         $mailer->setTo($leadEmail);
         $mailer->setSubject($config['subject']);
         $mailer->setTokens($tokens);
         $mailer->setBody($config['message']);
         $mailer->parsePlainText($config['message']);
         $mailer->send();
     }
 }
예제 #2
0
 /**
  * @param               $tokens
  * @param               $config
  * @param MauticFactory $factory
  * @param Lead          $lead
  */
 public static function sendEmail($tokens, $config, MauticFactory $factory, Lead $lead)
 {
     // replace line brakes with <br> for textarea values
     if ($tokens) {
         foreach ($tokens as $token => &$value) {
             $value = nl2br(html_entity_decode($value));
         }
     }
     $leadEmail = $lead->getEmail();
     $mailer = $factory->getMailer();
     $emails = !empty($config['to']) ? array_fill_keys(explode(',', $config['to']), null) : [];
     if (!empty($emails)) {
         $mailer->setTo($emails);
         if (!empty($leadEmail)) {
             // Reply to lead for user convenience
             $mailer->setReplyTo($leadEmail);
         }
         if (!empty($config['cc'])) {
             $emails = array_fill_keys(explode(',', $config['cc']), null);
             $mailer->setCc($emails);
         }
         if (!empty($config['bcc'])) {
             $emails = array_fill_keys(explode(',', $config['bcc']), null);
             $mailer->setBcc($emails);
         }
         $mailer->setSubject($config['subject']);
         $mailer->addTokens($tokens);
         $mailer->setBody($config['message']);
         $mailer->parsePlainText($config['message']);
         $mailer->send(true);
     }
     if ($config['copy_lead'] && !empty($leadEmail)) {
         // Send copy to lead
         $mailer->reset();
         $mailer->setLead($lead->getProfileFields());
         $mailer->setTo($leadEmail);
         $mailer->setSubject($config['subject']);
         $mailer->addTokens($tokens);
         $mailer->setBody($config['message']);
         $mailer->parsePlainText($config['message']);
         $mailer->send(true);
     }
 }
예제 #3
0
 /**
  * @param Lead $lead
  *
  * @return mixed
  */
 public function getAvatar(Lead $lead)
 {
     $preferred = $lead->getPreferredProfileImage();
     $socialData = $lead->getSocialCache();
     $leadEmail = $lead->getEmail();
     if ($preferred == 'custom') {
         if ($fmtime = filemtime($this->getAvatarPath(true) . '/avatar' . $lead->getId())) {
             // Append file modified time to ensure the latest is used by browser
             $img = $this->factory->getHelper('template.assets')->getUrl($this->getAvatarPath() . '/avatar' . $lead->getId() . '?' . $fmtime, null, null, false, true);
         }
     } elseif (isset($socialData[$preferred]) && !empty($socialData[$preferred]['profile']['profileImage'])) {
         $img = $socialData[$preferred]['profile']['profileImage'];
     }
     if (empty($img)) {
         // Default to gravatar if others failed
         if (!empty($leadEmail)) {
             $img = $this->factory->getHelper('template.gravatar')->getImage($leadEmail);
         } else {
             $img = $this->getDefaultAvatar();
         }
     }
     return $img;
 }
예제 #4
0
 /**
  * Add a do not contact entry for the lead
  *
  * @param Lead       $lead
  * @param string     $emailAddress
  * @param string     $reason
  * @param bool|true  $persist
  * @param bool|false $manual
  *
  * @return DoNotEmail|bool
  * @throws \Doctrine\DBAL\DBALException
  */
 public function setDoNotContact(Lead $lead, $emailAddress = '', $reason = '', $persist = true, $manual = false)
 {
     if (empty($emailAddress)) {
         $emailAddress = $lead->getEmail();
         if (empty($emailAddress)) {
             return false;
         }
     }
     $em = $this->factory->getEntityManager();
     $repo = $em->getRepository('MauticEmailBundle:Email');
     if (!$repo->checkDoNotEmail($emailAddress)) {
         $dnc = new DoNotEmail();
         $dnc->setLead($lead);
         $dnc->setEmailAddress($emailAddress);
         $dnc->setDateAdded(new \DateTime());
         $dnc->setUnsubscribed();
         $dnc->setManual($manual);
         $dnc->setComments($reason);
         if ($persist) {
             $repo->saveEntity($dnc);
         } else {
             $lead->addDoNotEmailEntry($dnc);
             return $dnc;
         }
     }
     return false;
 }
 /**
  * {@inheritDoc}
  */
 public function getEmail()
 {
     $this->__initializer__ && $this->__initializer__->__invoke($this, 'getEmail', array());
     return parent::getEmail();
 }