public function validate_mail($template = 'mail')
 {
     $components = (array) $this->contact_form->prop($template);
     if (!$components) {
         return;
     }
     if ('mail' != $template && empty($components['active'])) {
         return;
     }
     $components = wp_parse_args($components, array('subject' => '', 'sender' => '', 'recipient' => '', 'additional_headers' => '', 'body' => ''));
     $callback = array($this, 'replace_mail_tags_with_minimum_input');
     $subject = $components['subject'];
     $subject = new WPCF7_MailTaggedText($subject, array('callback' => $callback));
     $subject = $subject->replace_tags();
     $subject = wpcf7_strip_newline($subject);
     if ('' === $subject) {
         $this->add_error(sprintf('%s.subject', $template), self::error_maybe_empty);
     }
     $sender = $components['sender'];
     $sender = new WPCF7_MailTaggedText($sender, array('callback' => $callback));
     $sender = $sender->replace_tags();
     $sender = wpcf7_strip_newline($sender);
     if (!wpcf7_is_mailbox_list($sender)) {
         $this->add_error(sprintf('%s.sender', $template), self::error_invalid_syntax);
     } elseif (!wpcf7_is_email_in_site_domain($sender)) {
         $this->add_error(sprintf('%s.sender', $template), self::error_email_not_in_site_domain);
     }
     $recipient = $components['recipient'];
     $recipient = new WPCF7_MailTaggedText($recipient, array('callback' => $callback));
     $recipient = $recipient->replace_tags();
     $recipient = wpcf7_strip_newline($recipient);
     if (!wpcf7_is_mailbox_list($recipient)) {
         $this->add_error(sprintf('%s.recipient', $template), self::error_invalid_syntax);
     }
     $additional_headers = $components['additional_headers'];
     $additional_headers = new WPCF7_MailTaggedText($additional_headers, array('callback' => $callback));
     $additional_headers = $additional_headers->replace_tags();
     if (!$this->test_additional_headers_syntax($additional_headers)) {
         $this->add_error(sprintf('%s.additional_headers', $template), self::error_invalid_syntax);
     }
     $body = $components['body'];
     $body = new WPCF7_MailTaggedText($body, array('callback' => $callback));
     $body = $body->replace_tags();
     if ('' === $body) {
         $this->add_error(sprintf('%s.body', $template), self::error_maybe_empty);
     }
 }
示例#2
0
 public function validate_mail($template = 'mail')
 {
     $components = (array) $this->contact_form->prop($template);
     if (!$components) {
         return;
     }
     if ('mail' != $template && empty($components['active'])) {
         return;
     }
     $components = wp_parse_args($components, array('subject' => '', 'sender' => '', 'recipient' => '', 'additional_headers' => '', 'body' => ''));
     $callback = array($this, 'replace_mail_tags_with_minimum_input');
     $subject = $components['subject'];
     $subject = new WPCF7_MailTaggedText($subject, array('callback' => $callback));
     $subject = $subject->replace_tags();
     $subject = wpcf7_strip_newline($subject);
     if ('' === $subject) {
         $this->add_error(sprintf('%s.subject', $template), self::error_maybe_empty, array('link' => __('http://contactform7.com/configuration-errors/#mail.subject:error_maybe_empty', 'contact-form-7')));
     }
     $sender = $components['sender'];
     $sender = new WPCF7_MailTaggedText($sender, array('callback' => $callback));
     $sender = $sender->replace_tags();
     $sender = wpcf7_strip_newline($sender);
     if (!wpcf7_is_mailbox_list($sender)) {
         $this->add_error(sprintf('%s.sender', $template), self::error_invalid_syntax, array('link' => __('http://contactform7.com/configuration-errors/#mail.sender:error_invalid_syntax', 'contact-form-7')));
     } elseif (!wpcf7_is_email_in_site_domain($sender)) {
         $this->add_error(sprintf('%s.sender', $template), self::error_email_not_in_site_domain, array('link' => __('http://contactform7.com/configuration-errors/#mail.sender:error_email_not_in_site_domain', 'contact-form-7')));
     }
     $recipient = $components['recipient'];
     $recipient = new WPCF7_MailTaggedText($recipient, array('callback' => $callback));
     $recipient = $recipient->replace_tags();
     $recipient = wpcf7_strip_newline($recipient);
     if (!wpcf7_is_mailbox_list($recipient)) {
         $this->add_error(sprintf('%s.recipient', $template), self::error_invalid_syntax, array('link' => __('http://contactform7.com/configuration-errors/#mail.recipient:error_invalid_syntax', 'contact-form-7')));
     }
     $additional_headers = $components['additional_headers'];
     $additional_headers = new WPCF7_MailTaggedText($additional_headers, array('callback' => $callback));
     $additional_headers = $additional_headers->replace_tags();
     $additional_headers = explode("\n", $additional_headers);
     $mailbox_header_types = array('reply-to', 'cc', 'bcc');
     foreach ($additional_headers as $header) {
         $header = trim($header);
         if ('' === $header) {
             continue;
         }
         if (!preg_match('/^([0-9A-Za-z-]+):(.+)$/', $header, $matches)) {
             $this->add_error(sprintf('%s.additional_headers', $template), self::error_invalid_syntax, array('link' => __('http://contactform7.com/configuration-errors/#mail.additional_headers:error_invalid_syntax', 'contact-form-7')));
         } elseif (in_array(strtolower($matches[1]), $mailbox_header_types) && !wpcf7_is_mailbox_list($matches[2])) {
             $this->add_error(sprintf('%s.additional_headers', $template), self::error_invalid_syntax, array('message' => __("The %name% field value is invalid.", 'contact-form-7'), 'params' => array('name' => $matches[1]), 'link' => __('http://contactform7.com/configuration-errors/#mail.additional_headers:error_invalid_syntax', 'contact-form-7')));
         }
     }
     $body = $components['body'];
     $body = new WPCF7_MailTaggedText($body, array('callback' => $callback));
     $body = $body->replace_tags();
     if ('' === $body) {
         $this->add_error(sprintf('%s.body', $template), self::error_maybe_empty, array('link' => __('http://contactform7.com/configuration-errors/#mail.body:error_maybe_empty', 'contact-form-7')));
     }
 }