PluginProbe ʕ •ᴥ•ʔ
Admin and Site Enhancements (ASE) / 7.0.2
Admin and Site Enhancements (ASE) v7.0.2
9.1.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 2 years ago class-admin-columns-manager.php 2 years ago class-admin-menu-organizer.php 2 years ago class-auto-publish-posts-with-missed-schedule.php 2 years ago class-avif-upload.php 2 years ago class-change-login-url.php 2 years ago class-cleanup-admin-bar.php 2 years ago class-code-snippets-manager.php 2 years ago class-common-methods.php 2 years ago class-content-duplication.php 2 years ago class-content-order.php 2 years ago class-custom-admin-footer-text.php 2 years ago class-custom-body-class.php 2 years ago class-custom-content-types.php 2 years ago class-custom-css.php 2 years ago class-custom-nav-menu-items-in-new-tab.php 2 years ago class-deactivation.php 2 years ago class-disable-comments.php 2 years ago class-disable-dashboard-widgets.php 2 years ago class-disable-feeds.php 2 years ago class-disable-gutenberg.php 2 years ago class-disable-rest-api.php 2 years ago class-disable-smaller-components.php 2 years ago class-disable-updates.php 2 years ago class-disable-xml-rpc.php 2 years ago class-display-system-summary.php 2 years ago class-email-address-obfuscator.php 2 years ago class-email-delivery.php 2 years ago class-enhance-list-tables.php 2 years ago class-external-permalinks.php 2 years ago class-heartbeat-control.php 2 years ago class-hide-admin-bar.php 2 years ago class-hide-admin-notices.php 2 years ago class-image-sizes-panel.php 2 years ago class-image-upload-control.php 2 years ago class-insert-head-body-footer-code.php 2 years ago class-last-login-column.php 2 years ago class-limit-login-attempts.php 2 years ago class-login-id-type.php 2 years ago class-login-logout-menu.php 2 years ago class-maintenance-mode.php 2 years ago class-manage-ads-appads-txt.php 2 years ago class-manage-robots-txt.php 2 years ago class-media-replacement.php 2 years ago class-multiple-user-roles.php 2 years ago class-obfuscate-author-slugs.php 2 years ago class-open-external-links-in-new-tab.php 2 years ago class-password-protection.php 2 years ago class-redirect-after-login.php 2 years ago class-redirect-after-logout.php 2 years ago class-redirect-fourofour.php 2 years ago class-revisions-control.php 2 years ago class-search-engines-visibility.php 2 years ago class-settings-fields-render.php 2 years ago class-settings-sanitization.php 2 years ago class-settings-sections-fields.php 2 years ago class-show-custom-taxonomy-filters.php 2 years ago class-site-identity-on-login-page.php 2 years ago class-svg-upload.php 2 years ago class-various-admin-ui-enhancements.php 2 years ago class-view-admin-as-role.php 2 years ago class-wider-admin-menu.php 2 years ago
class-email-delivery.php
165 lines
1 <?php
2
3 namespace ASENHA\Classes;
4
5 /**
6 * Class for Email Delivery module
7 *
8 * @since 6.9.5
9 */
10 class Email_Delivery {
11 /**
12 * Send emails using external SMTP service
13 *
14 * @since 4.6.0
15 */
16 public function deliver_email_via_smtp( $phpmailer ) {
17 $options = get_option( ASENHA_SLUG_U, array() );
18 $smtp_host = $options['smtp_host'];
19 $smtp_port = $options['smtp_port'];
20 $smtp_security = $options['smtp_security'];
21 $smtp_username = $options['smtp_username'];
22 $smtp_password = $options['smtp_password'];
23 $smtp_default_from_name = $options['smtp_default_from_name'];
24 $smtp_default_from_email = $options['smtp_default_from_email'];
25 $smtp_force_from = $options['smtp_force_from'];
26 $smtp_bypass_ssl_verification = $options['smtp_bypass_ssl_verification'];
27 $smtp_debug = $options['smtp_debug'];
28 // Do nothing if host or password is empty
29 // if ( empty( $smtp_host ) || empty( $smtp_password ) ) {
30 // return;
31 // }
32 // 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.
33 $from_name = $phpmailer->FromName;
34 $from_email_beginning = substr( $phpmailer->From, 0, 9 );
35 // Get the first 9 characters of the current FROM email
36 if ( $smtp_force_from ) {
37 $phpmailer->FromName = $smtp_default_from_name;
38 $phpmailer->From = $smtp_default_from_email;
39 } else {
40 if ( 'WordPress' === $from_name && !empty( $smtp_default_from_name ) ) {
41 $phpmailer->FromName = $smtp_default_from_name;
42 }
43 if ( 'wordpress' === $from_email_beginning && !empty( $smtp_default_from_email ) ) {
44 $phpmailer->From = $smtp_default_from_email;
45 }
46 }
47 // Only attempt to send via SMTP if all the required info is present. Otherwise, use default PHP Mailer settings as set by wp_mail()
48 if ( !empty( $smtp_host ) && !empty( $smtp_port ) && !empty( $smtp_security ) && !empty( $smtp_username ) && !empty( $smtp_password ) ) {
49 // Send using SMTP
50 $phpmailer->isSMTP();
51 // phpcs:ignore
52 // Enanble SMTP authentication
53 $phpmailer->SMTPAuth = true;
54 // phpcs:ignore
55 // Set some other defaults
56 // $phpmailer->CharSet = 'utf-8'; // phpcs:ignore
57 $phpmailer->XMailer = 'Admin and Site Enhancements v' . ASENHA_VERSION . ' - a WordPress plugin';
58 // phpcs:ignore
59 $phpmailer->Host = $smtp_host;
60 // phpcs:ignore
61 $phpmailer->Port = $smtp_port;
62 // phpcs:ignore
63 $phpmailer->SMTPSecure = $smtp_security;
64 // phpcs:ignore
65 $phpmailer->Username = trim( $smtp_username );
66 // phpcs:ignore
67 $phpmailer->Password = trim( $smtp_password );
68 // phpcs:ignore
69 }
70 // If verification of SSL certificate is bypassed
71 // Reference: https://www.php.net/manual/en/context.ssl.php & https://stackoverflow.com/a/30803024
72 if ( $smtp_bypass_ssl_verification ) {
73 $phpmailer->SMTPOptions = [
74 'ssl' => [
75 'verify_peer' => false,
76 'verify_peer_name' => false,
77 'allow_self_signed' => true,
78 ],
79 ];
80 }
81 // If debug mode is enabled, send debug info (SMTP::DEBUG_CONNECTION) to WordPress debug.log file set in wp-config.php
82 // Reference: https://github.com/PHPMailer/PHPMailer/wiki/SMTP-Debugging
83 if ( $smtp_debug ) {
84 $phpmailer->SMTPDebug = 4;
85 //phpcs:ignore
86 $phpmailer->Debugoutput = 'error_log';
87 //phpcs:ignore
88 }
89 }
90
91 /**
92 * Send a test email and use SMTP host if defined in settings
93 *
94 * @since 5.3.0
95 */
96 public function send_test_email() {
97 if ( isset( $_REQUEST ) ) {
98 $content = array(
99 array(
100 'title' => 'Hey... are you getting this?',
101 'body' => '<p><strong>Looks like you did!</strong></p>',
102 ),
103 array(
104 'title' => 'There\'s a message for you...',
105 'body' => '<p><strong>Here it is:</strong></p>',
106 ),
107 array(
108 'title' => 'Is it working?',
109 'body' => '<p><strong>Yes, it\'s working!</strong></p>',
110 ),
111 array(
112 'title' => 'Hope you\'re getting this...',
113 'body' => '<p><strong>Looks like this was sent out just fine and you got it.</strong></p>',
114 ),
115 array(
116 'title' => 'Testing delivery configuration...',
117 'body' => '<p><strong>Everything looks good!</strong></p>',
118 ),
119 array(
120 'title' => 'Testing email delivery',
121 'body' => '<p><strong>Looks good!</strong></p>',
122 ),
123 array(
124 'title' => 'Config is looking good',
125 'body' => '<p><strong>Seems like everything has been set up properly!</strong></p>',
126 ),
127 array(
128 'title' => 'All set up',
129 'body' => '<p><strong>Your configuration is working properly.</strong></p>',
130 ),
131 array(
132 'title' => 'Good to go',
133 'body' => '<p><strong>Config is working great.</strong></p>',
134 ),
135 array(
136 'title' => 'Good job',
137 'body' => '<p><strong>Everything is set.</strong></p>',
138 )
139 );
140 $random_number = rand( 0, count( $content ) - 1 );
141 $to = $_REQUEST['email_to'];
142 $title = $content[$random_number]['title'];
143 $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>';
144 $headers = array('Content-Type: text/html; charset=UTF-8');
145 $success = wp_mail(
146 $to,
147 $title,
148 $body,
149 $headers
150 );
151 if ( $success ) {
152 $response = array(
153 'status' => 'success',
154 );
155 } else {
156 $response = array(
157 'status' => 'failed',
158 );
159 }
160 echo json_encode( $response );
161 }
162 }
163
164 }
165