/** * @param \DotBlue\Mandrill\Message $message * @param \Nette\Mail\Message $originalMessage */ private function setRecipients(\DotBlue\Mandrill\Message $message, \Nette\Mail\Message $originalMessage) { $to = $originalMessage->getHeader('To') ?: []; foreach ($to as $email => $name) { $message->addTo($email, $name); } $cc = $originalMessage->getHeader('Cc') ?: []; foreach ($cc as $email => $name) { $message->addCc($email, $name); } $bcc = $originalMessage->getHeader('Bcc') ?: []; foreach ($bcc as $email => $name) { $message->addBcc($email, $name); } $originalMessage->clearHeader('To'); $originalMessage->clearHeader('Cc'); $originalMessage->clearHeader('Bcc'); }
/** * Sends email. * @param Message * @return void */ public function send(Message $mail) { $data = $mail->generateMessage(); $this->connect(); $from = $mail->getHeader('From'); if ($from) { $from = array_keys($from); $this->write("MAIL FROM:<{$from['0']}>", 250); } foreach (array_merge((array) $mail->getHeader('To'), (array) $mail->getHeader('Cc'), (array) $mail->getHeader('Bcc')) as $email => $name) { $this->write("RCPT TO:<{$email}>", array(250, 251)); } $this->write('DATA', 354); $data = preg_replace('#^\\.#m', '..', $data); $this->write($data); $this->write('.', 250); $this->write('QUIT', 221); $this->disconnect(); }
__construct(array$options=array()){if(isset($options['host'])){$this->host=$options['host'];$this->port=isset($options['port'])?(int)$options['port']:NULL;}else{$this->host=ini_get('SMTP');$this->port=(int)ini_get('smtp_port');}$this->username=isset($options['username'])?$options['username']:'';$this->password=isset($options['password'])?$options['password']:'';$this->secure=isset($options['secure'])?$options['secure']:'';$this->timeout=isset($options['timeout'])?(int)$options['timeout']:20;if(!$this->port){$this->port=$this->secure==='ssl'?465:25;}}function send(Message$mail){$data=$mail->generateMessage();$this->connect();$from=$mail->getHeader('From');if($from){$from=array_keys($from);$this->write("MAIL FROM:<$from[0]>",250);}foreach(array_merge((array)$mail->getHeader('To'),(array)$mail->getHeader('Cc'),(array)$mail->getHeader('Bcc'))as$email=>$name){$this->write("RCPT TO:<$email>",array(250,251));}$this->write('DATA',354);$data=preg_replace('#^\.#m','..',$data);$this->write($data);$this->write('.',250);$this->write('QUIT',221);$this->disconnect();}private
/** * Sends email. * @param Message $mail * @return void */ public function send(Message $mail) { $postData = ['from' => $mail->getHeader('Return-Path') ?: key($mail->getHeader('From')), 'to' => $this->getCommaSeparatedEmails((array) $mail->getHeader('To')), 'cc' => $this->getCommaSeparatedEmails((array) $mail->getHeader('Cc')), 'bcc' => $this->getCommaSeparatedEmails((array) $mail->getHeader('Bcc')), 'subject' => $mail->getSubject(), 'text' => $mail->getBody(), 'html' => $mail->getHtmlBody()]; $this->mailgun->sendMessage($this->domain, array_filter($postData)); }
/** * Sends e-mail. * * Implementation of IMailer * @param Message The mail to send (instance of Nette\Message) * @return void * * @throws InvalidStateException if something went wrong */ function send(\Nette\Mail\Message $mail) { $from = $mail->getHeader('From'); //intentionally != $from = $from != NULL && !empty($from) ? array_keys($from) : NULL; if ($from !== NULL) { $this->client->setFrom($from[0]); } $to = $mail->getHeader('To'); $cc = $mail->getHeader('Cc'); $bcc = $mail->getHeader('Bcc'); $mail->setHeader('Bcc', NULL); $recipients = array(); //intentionally != $to != NULL && !empty($to) ? $recipients = array_merge($recipients, array_keys($to)) : NULL; $cc != NULL && !empty($cc) ? $recipients = array_merge($recipients, array_keys($cc)) : NULL; $bcc != NULL && !empty($bcc) ? $recipients = array_merge($recipients, array_keys($bcc)) : NULL; $this->client->setRecipients($recipients); $this->client->setBody($mail->generateMessage()); //throws InvalidStateException $this->client->send(); }