PluginProbe ʕ •ᴥ•ʔ
Admin and Site Enhancements (ASE) / 7.8.1
Admin and Site Enhancements (ASE) v7.8.1
9.1.0 9.0.2 9.0.1 9.0.0 8.9.2 8.9.1 8.9.0 8.8.8 8.8.7 8.8.6 8.8.5 8.8.4 8.8.3 8.8.2 8.8.1 8.8.0 8.7.3 8.7.2 8.7.1 8.2.1 8.2.2 8.2.3 8.3.0 8.3.1 8.3.2 8.4.0 8.4.1 8.4.2 8.5.0 8.5.1 8.5.2 8.6.0 8.6.1 8.6.2 8.7.0 5.0.1 5.0.2 5.0.2.1 5.0.2.2 5.0.2.3 5.0.2.4 5.1.0 5.2.0 5.2.1 5.2.10 5.2.11 5.2.2 5.2.3 5.2.4 5.2.5 5.2.6 5.2.7 5.2.8 5.2.9 5.3.0 5.3.1 5.3.2 5.4.0 5.4.1 5.5.0 5.5.1 5.5.2 5.6.0 5.6.1 5.6.2 5.7.0 5.7.1 5.8.0 5.8.1 6.0.0 6.0.3 6.0.4 6.0.5 6.0.5.1 6.0.6 6.0.7 6.0.8.1 6.1.0 6.1.3 6.2.0 6.2.1 6.2.2 6.2.3 6.2.4 6.2.5 6.2.6 6.2.7 6.3.0 6.3.1 6.3.2 6.4.0 6.5.0 6.5.1 6.6.0 6.7.0 6.8.0 6.8.2 6.8.3 6.9.0 6.9.1 6.9.10 6.9.11 6.9.12 6.9.13.1 6.9.13.2 6.9.2 6.9.3 6.9.4 6.9.5 6.9.6 6.9.7 6.9.8 6.9.9 7.0.0 7.0.2 7.0.2.1 7.0.2.2 7.0.2.3 7.0.3 7.1.0 7.1.1 7.1.2 7.1.3 7.1.4 7.1.5 7.2.0 7.2.1 7.3.0 7.3.1 7.3.2 7.3.3 7.4.0 7.4.2 7.4.4 7.4.5 7.4.6 7.4.7 7.4.8 7.5.0 7.5.1 7.5.2 7.5.3 7.5.4 7.6.0 7.6.1 7.6.1.1 7.6.10 7.6.11 7.6.2 7.6.3 7.6.4 7.6.5 7.6.6 7.6.7 7.6.7.1 7.6.8 7.6.9 7.7.0 7.8.0 7.8.1 7.8.10 7.8.11 7.8.12 7.8.13 7.8.14 7.8.15 7.8.16 7.8.17 7.8.18 7.8.2 7.8.3 7.8.4 7.8.5 7.8.5.1 7.8.6 7.8.7 7.8.8 7.8.9 7.9.0 7.9.1 7.9.10 7.9.11 7.9.2 7.9.3 7.9.4 7.9.5 7.9.6 7.9.7 7.9.8 7.9.9 8.0.0 8.0.1 8.0.2 8.0.3 8.0.4 8.0.5 8.0.6 8.0.7 8.0.8 8.1.0 8.1.1 8.1.2 8.1.3 8.1.4 8.2.0 trunk 1.0.0 1.1.0 1.2.0 1.3.0 1.4.0 1.5.0 1.6.0 1.7.0 1.8.0 1.9.0 2.0.0 2.1.0 2.2.0 2.3.0 2.4.0 2.5.0 2.6.0 2.7.0 2.8.0 2.8.1 2.8.2 2.8.3 2.9.0 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.0.5 3.0.6 3.1.0 3.2.0 3.3.0 3.4.0 3.5.0 3.6.1 3.7.0 3.8.0 3.9.0 3.9.1 3.9.2 4.0.0 4.0.1 4.1.0 4.2.0 4.2.1 4.2.2 4.3.0 4.3.1 4.4.0 4.5.0 4.6.0 4.7.0 4.7.1 4.7.2 4.7.3 4.7.4 4.8.0 4.8.1 4.8.2 4.8.3 4.9.0 4.9.1 4.9.2 4.9.3 5.0.0
admin-site-enhancements / classes / class-email-delivery.php
admin-site-enhancements / classes Last commit date
class-activation.php 1 year ago class-admin-menu-organizer.php 1 year ago class-auto-publish-posts-with-missed-schedule.php 1 year ago class-avif-upload.php 1 year ago class-captcha-protection.php 1 year ago class-change-login-url.php 1 year ago class-cleanup-admin-bar.php 1 year ago class-common-methods.php 1 year ago class-content-duplication.php 1 year ago class-content-order.php 1 year ago class-custom-admin-footer-text.php 1 year ago class-custom-body-class.php 1 year ago class-custom-css.php 1 year ago class-custom-nav-menu-items-in-new-tab.php 1 year ago class-deactivation.php 1 year ago class-disable-comments.php 1 year ago class-disable-dashboard-widgets.php 1 year ago class-disable-feeds.php 1 year ago class-disable-gutenberg.php 1 year ago class-disable-rest-api.php 1 year ago class-disable-smaller-components.php 1 year ago class-disable-updates.php 1 year ago class-disable-xml-rpc.php 1 year ago class-display-system-summary.php 1 year ago class-email-address-obfuscator.php 1 year ago class-email-delivery.php 1 year ago class-enhance-list-tables.php 1 year ago class-external-permalinks.php 1 year ago class-heartbeat-control.php 1 year ago class-hide-admin-bar.php 1 year ago class-hide-admin-notices.php 1 year ago class-image-sizes-panel.php 1 year ago class-image-upload-control.php 1 year ago class-insert-head-body-footer-code.php 1 year ago class-last-login-column.php 1 year ago class-limit-login-attempts.php 1 year ago class-login-id-type.php 1 year ago class-login-logout-menu.php 1 year ago class-maintenance-mode.php 1 year ago class-manage-ads-appads-txt.php 1 year ago class-manage-robots-txt.php 1 year ago class-media-replacement.php 1 year ago class-multiple-user-roles.php 1 year ago class-obfuscate-author-slugs.php 1 year ago class-open-external-links-in-new-tab.php 1 year ago class-password-protection.php 1 year ago class-redirect-after-login.php 1 year ago class-redirect-after-logout.php 1 year ago class-redirect-fourofour.php 1 year ago class-registration-date-column.php 1 year ago class-revisions-control.php 1 year ago class-search-engines-visibility.php 1 year ago class-settings-fields-render.php 1 year ago class-settings-sanitization.php 1 year ago class-settings-sections-fields.php 1 year ago class-show-custom-taxonomy-filters.php 1 year ago class-site-identity-on-login-page.php 1 year ago class-svg-upload.php 1 year ago class-various-admin-ui-enhancements.php 1 year ago class-view-admin-as-role.php 1 year ago class-wider-admin-menu.php 1 year ago class-wp-config-transformer.php 1 year ago
class-email-delivery.php
178 lines
1 <?php
2
3 namespace ASENHA\Classes;
4
5 use WP_Error;
6 use ASENHA\EmailDelivery\Email_Log_Table;
7 /**
8 * Class for Email Delivery module
9 *
10 * @since 6.9.5
11 */
12 class Email_Delivery {
13 private $log_entry_id;
14
15 /**
16 * Send emails using external SMTP service
17 *
18 * @since 4.6.0
19 */
20 public function deliver_email_via_smtp( $phpmailer ) {
21 $options = get_option( ASENHA_SLUG_U, array() );
22 $smtp_host = $options['smtp_host'];
23 $smtp_port = $options['smtp_port'];
24 $smtp_security = $options['smtp_security'];
25 $smtp_authentication = ( isset( $options['smtp_authentication'] ) ? $options['smtp_authentication'] : 'enable' );
26 $smtp_username = $options['smtp_username'];
27 $smtp_password = $options['smtp_password'];
28 $smtp_default_from_name = $options['smtp_default_from_name'];
29 $smtp_default_from_email = $options['smtp_default_from_email'];
30 $smtp_force_from = $options['smtp_force_from'];
31 $smtp_bypass_ssl_verification = $options['smtp_bypass_ssl_verification'];
32 $smtp_debug = $options['smtp_debug'];
33 // Do nothing if host or password is empty
34 // if ( empty( $smtp_host ) || empty( $smtp_password ) ) {
35 // return;
36 // }
37 // Maybe override FROM email and/or name if the sender is "WordPress <wordpress@sitedomain.com>", the default from WordPress core and not yet overridden by another plugin.
38 $from_name = $phpmailer->FromName;
39 $from_email_beginning = substr( $phpmailer->From, 0, 9 );
40 // Get the first 9 characters of the current FROM email
41 if ( $smtp_force_from ) {
42 $phpmailer->FromName = $smtp_default_from_name;
43 $phpmailer->From = $smtp_default_from_email;
44 } else {
45 if ( 'WordPress' === $from_name && !empty( $smtp_default_from_name ) ) {
46 $phpmailer->FromName = $smtp_default_from_name;
47 }
48 if ( 'wordpress' === $from_email_beginning && !empty( $smtp_default_from_email ) ) {
49 $phpmailer->From = $smtp_default_from_email;
50 }
51 }
52 // Only attempt to send via SMTP if all the required info is present. Otherwise, use default PHP Mailer settings as set by wp_mail()
53 if ( !empty( $smtp_host ) && !empty( $smtp_port ) && !empty( $smtp_security ) ) {
54 // Send using SMTP
55 $phpmailer->isSMTP();
56 // phpcs:ignore
57 if ( 'enable' == $smtp_authentication ) {
58 $phpmailer->SMTPAuth = true;
59 // phpcs:ignore
60 } else {
61 $phpmailer->SMTPAuth = false;
62 // phpcs:ignore
63 }
64 // Set some other defaults
65 // $phpmailer->CharSet = 'utf-8'; // phpcs:ignore
66 $phpmailer->XMailer = 'Admin and Site Enhancements v' . ASENHA_VERSION . ' - a WordPress plugin';
67 // phpcs:ignore
68 $phpmailer->Host = $smtp_host;
69 // phpcs:ignore
70 $phpmailer->Port = $smtp_port;
71 // phpcs:ignore
72 $phpmailer->SMTPSecure = $smtp_security;
73 // phpcs:ignore
74 if ( 'enable' == $smtp_authentication ) {
75 $phpmailer->Username = trim( $smtp_username );
76 // phpcs:ignore
77 $phpmailer->Password = trim( $smtp_password );
78 // phpcs:ignore
79 }
80 }
81 // If verification of SSL certificate is bypassed
82 // Reference: https://www.php.net/manual/en/context.ssl.php & https://stackoverflow.com/a/30803024
83 if ( $smtp_bypass_ssl_verification ) {
84 $phpmailer->SMTPOptions = [
85 'ssl' => [
86 'verify_peer' => false,
87 'verify_peer_name' => false,
88 'allow_self_signed' => true,
89 ],
90 ];
91 }
92 // If debug mode is enabled, send debug info (SMTP::DEBUG_CONNECTION) to WordPress debug.log file set in wp-config.php
93 // Reference: https://github.com/PHPMailer/PHPMailer/wiki/SMTP-Debugging
94 if ( $smtp_debug ) {
95 $phpmailer->SMTPDebug = 4;
96 //phpcs:ignore
97 $phpmailer->Debugoutput = 'error_log';
98 //phpcs:ignore
99 }
100 }
101
102 /**
103 * Send a test email and use SMTP host if defined in settings
104 *
105 * @since 5.3.0
106 */
107 public function send_test_email() {
108 if ( isset( $_REQUEST['email_to'] ) && isset( $_REQUEST['nonce'] ) && current_user_can( 'manage_options' ) ) {
109 if ( wp_verify_nonce( sanitize_text_field( $_REQUEST['nonce'] ), 'send-test-email-nonce_' . get_current_user_id() ) ) {
110 $content = array(
111 array(
112 'title' => 'Hey... are you getting this?',
113 'body' => '<p><strong>Looks like you did!</strong></p>',
114 ),
115 array(
116 'title' => 'There\'s a message for you...',
117 'body' => '<p><strong>Here it is:</strong></p>',
118 ),
119 array(
120 'title' => 'Is it working?',
121 'body' => '<p><strong>Yes, it\'s working!</strong></p>',
122 ),
123 array(
124 'title' => 'Hope you\'re getting this...',
125 'body' => '<p><strong>Looks like this was sent out just fine and you got it.</strong></p>',
126 ),
127 array(
128 'title' => 'Testing delivery configuration...',
129 'body' => '<p><strong>Everything looks good!</strong></p>',
130 ),
131 array(
132 'title' => 'Testing email delivery',
133 'body' => '<p><strong>Looks good!</strong></p>',
134 ),
135 array(
136 'title' => 'Config is looking good',
137 'body' => '<p><strong>Seems like everything has been set up properly!</strong></p>',
138 ),
139 array(
140 'title' => 'All set up',
141 'body' => '<p><strong>Your configuration is working properly.</strong></p>',
142 ),
143 array(
144 'title' => 'Good to go',
145 'body' => '<p><strong>Config is working great.</strong></p>',
146 ),
147 array(
148 'title' => 'Good job',
149 'body' => '<p><strong>Everything is set.</strong></p>',
150 )
151 );
152 $random_number = rand( 0, count( $content ) - 1 );
153 $to = $_REQUEST['email_to'];
154 $title = $content[$random_number]['title'];
155 $body = $content[$random_number]['body'] . '<p>This message was sent from <a href="' . get_bloginfo( 'url' ) . '">' . get_bloginfo( 'url' ) . '</a> on ' . wp_date( 'F j, Y' ) . ' at ' . wp_date( 'H:i:s' ) . ' via ASE.</p>';
156 $headers = array('Content-Type: text/html; charset=UTF-8');
157 $success = wp_mail(
158 $to,
159 $title,
160 $body,
161 $headers
162 );
163 if ( $success ) {
164 $response = array(
165 'status' => 'success',
166 );
167 } else {
168 $response = array(
169 'status' => 'failed',
170 );
171 }
172 echo json_encode( $response );
173 }
174 }
175 }
176
177 }
178