Файловый менеджер - Редактировать - /home/avadvi5/public_html/wp-content/plugins/wp-mail-smtp-pro/src/Pro/Emails/Logs/Providers/SMTP.php
Ðазад
<?php namespace WPMailSMTP\Pro\Emails\Logs\Providers; use WPMailSMTP\MailCatcherInterface; use WPMailSMTP\Pro\Emails\Logs\Attachments\Attachments; use WPMailSMTP\Pro\Emails\Logs\Email; use WP_Error; /** * Class SMTP to handle saving to log emails sent by "Other SMTP" mailer. * * @since 1.5.0 */ class SMTP { /** * Our own implementation of the PhpMailer class. * * @since 1.5.0 * * @var MailCatcherInterface */ private $mailcatcher; /** * Preserve the cloned instance of the MailCatcher class. * * @since 1.5.0 * * @param MailCatcherInterface $mailcatcher Our own implementation of the PhpMailer class. * * @return \WPMailSMTP\Pro\Emails\Logs\Providers\SMTP */ public function set_source( MailCatcherInterface $mailcatcher ) { $this->mailcatcher = clone $mailcatcher; return $this; } /** * Save the actual email data before we got response from SMTP server about its status. * * @since 1.5.0 * * @param int $parent_email_id Parent email log ID. * * @return int */ public function save_before( $parent_email_id = 0 ) { $mailer_slug = wp_mail_smtp()->get_connections_manager()->get_mail_connection()->get_mailer_slug(); $headers = $this->unfold_headers( $this->mailcatcher->createHeader() ); $attachments = count( $this->mailcatcher->getAttachments() ); $people = $this->get_people(); $email_id = 0; try { $email = new Email(); $email ->set_subject( $this->mailcatcher->Subject ) ->set_people( $people ) ->set_headers( array_filter( $headers ) ) ->set_attachments( $attachments ) ->set_mailer( $mailer_slug ) ->set_status( Email::STATUS_UNSENT ) ->set_initiator() ->set_parent_id( $parent_email_id ); if ( wp_mail_smtp()->pro->get_logs()->is_enabled_content() ) { $email ->set_content_plain( $this->mailcatcher->ContentType === 'text/plain' ? $this->mailcatcher->Body : $this->mailcatcher->AltBody ) ->set_content_html( $this->mailcatcher->ContentType !== 'text/plain' ? $this->mailcatcher->Body : '' ); } $email_id = $email->save()->get_id(); } catch ( \Exception $e ) { // phpcs:ignore Generic.CodeAnalysis.EmptyStatement.DetectedCatch // Do nothing for now. } // Return the state. return $email_id; } /** * Update the actual email data with current MailCatcher data before we got response from * SMTP server about its status. * * @since 2.1.2 * * @param int $email_id The ID of the email to update. */ public function update_before( $email_id ) { if ( empty( $email_id ) ) { return; } $headers = $this->unfold_headers( $this->mailcatcher->createHeader() ); $attachments = count( $this->mailcatcher->getAttachments() ); $people = $this->get_people(); try { $email = new Email( $email_id ); $email ->set_subject( $this->mailcatcher->Subject ) ->set_people( $people ) ->set_headers( array_filter( $headers ) ) ->set_attachments( $attachments ); $email->save(); // Save attachments to the email log. ( new Attachments() )->process_attachments( $email_id, $this->mailcatcher->getAttachments() ); } catch ( \Exception $e ) { // phpcs:ignore Generic.CodeAnalysis.EmptyStatement.DetectedCatch // Do nothing for now. } } /** * Update the status of the currently sent email. * * @since 1.5.0 * * @param int $email_id Email ID to process. * @param bool $is_sent Whether email is sent or not. */ public function save_after( $email_id, $is_sent ) { if ( empty( $email_id ) ) { return; } try { $email = new Email( $email_id ); $email ->set_status( (bool) $is_sent ? Email::STATUS_SENT : Email::STATUS_UNSENT ) ->save(); } catch ( \Exception $e ) { // phpcs:ignore Generic.CodeAnalysis.EmptyStatement.DetectedCatch // Do nothing for now. } } /** * Process the failed email sending. * * @since 2.1.0 * * @param int $email_id The Email ID. * @param WP_Error|string $error The WP Error or error message. */ public function failed( $email_id, $error ) { if ( empty( $email_id ) ) { return; } if ( empty( $error ) ) { $error = esc_html__( 'Unknown error.', 'wp-mail-smtp-pro' ); } elseif ( is_wp_error( $error ) ) { $error = $error->get_error_message(); } try { $email = new Email( $email_id ); if ( empty( $email->get_id() ) ) { return; } $email ->set_error_text( $error ) ->set_status( Email::STATUS_UNSENT ) ->save(); } catch ( \Exception $e ) { //phpcs:ignore // Do nothing for now. } } /** * Get the people data from the MailCatcher object. * * @since 2.1.2 * * @return array */ private function get_people() { $people = []; foreach ( $this->mailcatcher->getToAddresses() as $to ) { $people['to'][] = $to[0]; } foreach ( $this->mailcatcher->getCcAddresses() as $cc ) { $people['cc'][] = $cc[0]; } foreach ( $this->mailcatcher->getBccAddresses() as $bcc ) { $people['bcc'][] = $bcc[0]; } $people['from'] = $this->mailcatcher->From; return $people; } /** * Unfold long email headers. * * @see Section 2.2.3 of https://www.rfc-editor.org/rfc/rfc2822.txt * * @since 4.1.0 * * @param string $headers Generated email headers. * * @return false|string[] */ private function unfold_headers( $headers ) { $line_ending = $this->mailcatcher->get_line_ending(); $wsp_characters = '[ \t]'; $headers = preg_replace( "/{$line_ending}{$wsp_characters}/", '', $headers ); $headers = explode( $line_ending, $headers ); return $headers; } }
| ver. 1.1 | |
.
| PHP 8.3.30 | Ð“ÐµÐ½ÐµÑ€Ð°Ñ†Ð¸Ñ Ñтраницы: 0 |
proxy
|
phpinfo
|
ÐаÑтройка