/** * @param Logic_WebService_Mail_Recipient $recipient * @param string $subject * @param Logic_WebService_Mail_Content $content * @param string $charCode * @param boolean $isHtml * @throws Logic_WebService_Mail_Exception * @return Logic_WebService_Mail_Response */ public function handle($recipient, array $recipientCC, array $recipientBCC, $subject, $content, Logic_WebService_Mail_Attachment $attachments, $charCode = 'UTF-8', $isHtml = false, $replyto = null) { $recipient = new Logic_WebService_Mail_Recipient($recipient); $recipientCCChecker = new Logic_WebService_Mail_RecipientCC(); $recipientCCChecker->checkAddresses($recipientCC); $recipientCCChecker->checkAddresses($recipientBCC); $mailBlacklistModel = new MailBlacklistStorage(); if ($recipient->checkEmailOnBlackList($this->_client->getParams()->id)) { $mailBlacklistModel->addMail($this->_client->getParams()->id, $this->_service->getParams()->id, $recipient, $subject, $content, 0, $recipientCC, $recipientBCC); throw new Logic_WebService_Mail_Exception('Proba wyslania e-maila testowego na adres e-mail obecny na blacklist: ' . $this->_mail, 417); } foreach ($recipientCC as $recCC) { if ($recCC && $recipient->checkEmailOnBlackList($this->_client->getParams()->id, $recCC)) { $mailBlacklistModel->addMail($this->_client->getParams()->id, $this->_service->getParams()->id, $recipient, $subject, $content, 0, $recipientCC, $recipientBCC); throw new Logic_WebService_Mail_Exception('Proba wyslania e-maila testowego na adres e-mail (CC) obecny na blacklist: ' . $this->_mail, 417); } } foreach ($recipientBCC as $recBCC) { if ($recBCC && $recipient->checkEmailOnBlackList($this->_client->getParams()->id, $recBCC)) { $mailBlacklistModel->addMail($this->_client->getParams()->id, $this->_service->getParams()->id, $recipient, $subject, $content, 0, $recipientCC, $recipientBCC); throw new Logic_WebService_Mail_Exception('Proba wyslania e-maila testowego na adres e-mail (BCC) obecny na blacklist: ' . $this->_mail, 417); } } if (!$this->_environment->checkStatus()) { $recipient->checkEmailOnWhiteList(); $recipientCCChecker->checkEmailOnWhiteList($recipientCC); $recipientCCChecker->checkEmailOnWhiteList($recipientBCC); } $modelCounter = new MailCounter(); $limit = new Logic_WebService_Element_Limit($this->_client, $this->_service); $limit->check($modelCounter, $recipient->getRecipient()->id); $limit->checkByContent($modelCounter, $recipient->getRecipient()->id, $content); if (!$subject) { throw new Logic_WebService_Mail_Exception('Nie podano tytulu wiadomosci e-mail', 425); } $params = $this->_service->getParams(); if ($content->countContentLenght() <= 0) { throw new Logic_WebService_Sms_Exception('Proba wyslania pustego maila (brak tresci przygotowanej do wysylki)', 510); } $mail = new Logic_WebService_Mail_Transport_ZendMail(); $result = $mail->handle($params->from_title, $params->from_mail, $recipient->getMail(), $recipientCC, $recipientBCC, $subject, $content->getContent(), $attachments, $params->smtp_host, $params->smtp_port, $params->smtp_login, $params->smtp_password, $charCode, $isHtml, $replyto); $response = new Logic_WebService_Mail_Response(); if ($result) { $response->setStatus(true)->setMessage('Wysłano e-mail'); } else { $response->setStatus(false)->setMessage('Blad aplikacji'); } $model = new MailStorage(); $response->setMailId($model->addMail($this->_client->getParams()->id, $this->_service->getParams()->id, $recipient, $subject, $content, $response)); return $response; }
private function sendMail($email, $subject, $content, $cc = array(), $bcc = array()) { $recipient = new Logic_WebService_Mail_Recipient($email); $content = new Logic_WebService_Mail_Content($content); if (!$subject) { throw new Logic_WebService_Mail_Exception('Nie podano tytulu wiadomosci e-mail', 425); } $params = $this->_service->getParams(); if ($content->countContentLenght() <= 0) { throw new Logic_WebService_Sms_Exception('Proba wyslania pustego maila (brak tresci przygotowanej do wysylki)', 510); } $mail = new Logic_WebService_Mail_Transport_ZendMail(); if ($this->_sendMail) { $this->_sendMail = false; $result = $mail->handle($params->from_title, $params->from_mail, $recipient->getMail(), $cc, $bcc, $subject, $content->getContent(), $attachments, $params->smtp_host, $params->smtp_port, $params->smtp_login, $params->smtp_password, $charCode, $isHtml); $response = new Logic_WebService_Mail_Response(); if ($result) { $response->setStatus(true)->setMessage('Wysłano e-mail'); } else { $response->setStatus(false)->setMessage('Blad aplikacji'); } } return $response; }