Файловый менеджер - Редактировать - /home/avadvi5/public_html/wp-content/plugins/wp-mail-smtp-pro/src/Pro/Emails/Logs/Export/EMLData.php
Ðазад
<?php namespace WPMailSMTP\Pro\Emails\Logs\Export; use WPMailSMTP\MailCatcherInterface; use WPMailSMTP\Pro\Emails\Logs\Attachments\Attachment; use WPMailSMTP\Pro\Emails\Logs\Attachments\Attachments; use WPMailSMTP\Pro\Emails\Logs\Email; use WPMailSMTP\Pro\Emails\Logs\EmailsCollection; /** * Email logs export data in EML format. * * @since 2.9.0 */ class EMLData extends AbstractData { /** * Get single email EML file content. * * @since 2.9.0 * * @return \Generator */ public function get_content() { $emails = new EmailsCollection( $this->request->get_data( 'db_args' ) ); foreach ( $emails->get() as $email ) { try { $phpmailer = $this->prepare_phpmailer( $email ); $phpmailer->preSend(); $content = $phpmailer->getSentMIMEMessage(); } catch ( \Exception $e ) { $this->request->add_notice( sprintf( /* translators: %1$d - email log ID; %2$s - error message. */ esc_html__( 'Email #%1$s was skipped. Reason: %2$s.', 'wp-mail-smtp-pro' ), $email->get_id(), $e->getMessage() ), 'warning' ); continue; } /** * Filters export table data row. * * @since 2.9.0 * * @param array $row Row. * @param Email $email Current email. * @param TableData $data Data. */ $content = apply_filters( 'wp_mail_smtp_pro_emails_logs_export_eml_data_get_content', $content, $email, $this ); yield [ $email, $content ]; } } /** * Fill in all required PHPMailer properties from email log. * * @since 2.9.0 * * @param Email $email Email. * * @return MailCatcherInterface */ protected function prepare_phpmailer( Email $email ) { $phpmailer = wp_mail_smtp()->generate_mail_catcher( true ); // phpcs:disable WordPress.NamingConventions.ValidVariableName.UsedPropertyNotSnakeCase $phpmailer->AllowEmpty = true; $phpmailer->MessageDate = $email->get_header( 'Date' ); $phpmailer->MessageID = $email->get_header( 'Message-ID' ); $phpmailer->XMailer = $email->get_header( 'X-Mailer' ); $content_type = $email->get_content_type(); if ( 'text/html' === $content_type ) { $phpmailer->isHTML( true ); } $phpmailer->ContentType = $content_type; $phpmailer->CharSet = $email->get_charset(); $phpmailer->Subject = $this->get_field_value( 'subject', $email ); $phpmailer->Body = $this->get_field_value( 'content', $email ); // phpcs:enable $this->set_addresses( $email, $phpmailer ); $this->set_other_addresses( $email, $phpmailer ); $this->set_custom_headers( $email, $phpmailer ); $this->set_attachments( $email, $phpmailer ); return $phpmailer; } /** * Set email from and to addresses. * * @since 2.9.0 * * @param Email $email Email. * @param MailCatcherInterface $phpmailer PHPMailer instance. */ protected function set_addresses( $email, $phpmailer ) { $phpmailer->setFrom( $this->get_field_value( 'people_from', $email ), $this->get_field_value( 'people_from_name', $email ), false ); $phpmailer->addAddress( $this->get_field_value( 'people_to', $email ) ); } /** * Set email cc, bcc and reply to addresses. * * @since 2.9.0 * * @param Email $email Email. * @param MailCatcherInterface $phpmailer PHPMailer instance. */ protected function set_other_addresses( $email, $phpmailer ) { // phpcs:ignore Generic.Metrics.CyclomaticComplexity.TooHigh, Generic.Metrics.NestingLevel.MaxExceeded $address_headers = [ 'cc' => array_filter( explode( ',', $this->get_field_value( 'header_cc', $email ) ) ), 'bcc' => array_filter( explode( ',', $this->get_field_value( 'header_bcc', $email ) ) ), 'reply_to' => array_filter( explode( ',', $this->get_field_value( 'header_reply_to', $email ) ) ), ]; foreach ( $address_headers as $address_header => $addresses ) { if ( empty( $addresses ) ) { continue; } foreach ( (array) $addresses as $address ) { $recipient_name = ''; if ( preg_match( '/(.*)<(.+)>/', $address, $matches ) ) { if ( count( $matches ) === 3 ) { $recipient_name = $matches[1]; $address = $matches[2]; } } switch ( $address_header ) { case 'cc': $phpmailer->addCc( $address, $recipient_name ); break; case 'bcc': $phpmailer->addBcc( $address, $recipient_name ); break; case 'reply_to': $phpmailer->addReplyTo( $address, $recipient_name ); break; } } } } /** * Set email custom headers. * * @since 2.9.0 * * @param Email $email Email. * @param MailCatcherInterface $phpmailer PHPMailer instance. */ protected function set_custom_headers( $email, $phpmailer ) { $headers = (array) json_decode( $email->get_headers() ); // Exclude from custom headers. $exclude = [ 'Date' => true, 'To' => true, 'From' => true, 'Cc' => true, 'Bcc' => true, 'Reply-To' => true, 'Subject' => true, 'Message-ID' => true, 'X-Mailer' => true, 'MIME-Version' => true, 'Content-Type' => true, ]; foreach ( $headers as $header ) { if ( strpos( $header, ':' ) === false ) { continue; } list( $name, $content ) = explode( ':', trim( $header ), 2 ); $name = trim( $name ); $content = trim( $content ); if ( ! isset( $exclude[ $name ] ) ) { $phpmailer->addCustomHeader( sprintf( '%1$s: %2$s', $name, $content ) ); } } } /** * Set email attachments. * * @since 2.9.0 * * @param Email $email Email. * @param MailCatcherInterface $phpmailer PHPMailer instance. */ protected function set_attachments( $email, $phpmailer ) { /** Array of Attachment objects. @var Attachment[] $attachments */ $attachments = ( new Attachments() )->get_attachments( $email->get_id() ); if ( empty( $attachments ) ) { return; } foreach ( $attachments as $attachment ) { try { $phpmailer->addAttachment( $attachment->get_path(), $attachment->get_filename() ); } catch ( \Exception $e ) { continue; } } } /** * Get field value. * * @since 2.9.0 * * @param string $key Field key. * @param Email $email Email object. * * @return string */ public function get_field_value( $key, $email ) { switch ( $key ) { case 'header_cc': $val = $email->get_header( 'Cc' ); break; case 'header_bcc': $val = $email->get_header( 'Bcc' ); break; case 'header_reply_to': $val = $email->get_header( 'Reply-To' ); break; default: $val = parent::get_field_value( $key, $email ); } /** * Filters export field value. * * @since 2.9.0 * * @param mixed $val Field value. * @param string $key Field key. * @param Email $email Current email. */ return apply_filters( 'wp_mail_smtp_pro_emails_logs_export_eml_data_get_field_value', $val, $key, $email ); } }
| ver. 1.1 | |
.
| PHP 8.3.30 | Ð“ÐµÐ½ÐµÑ€Ð°Ñ†Ð¸Ñ Ñтраницы: 0 |
proxy
|
phpinfo
|
ÐаÑтройка