PluginProbe ʕ •ᴥ•ʔ
Paid Membership Plugin, Ecommerce, User Registration Form, Login Form, User Profile & Restrict Content – ProfilePress / trunk
Paid Membership Plugin, Ecommerce, User Registration Form, Login Form, User Profile & Restrict Content – ProfilePress vtrunk
4.16.18 4.16.17 4.16.16 trunk 1.0 1.0.1 1.0.2 1.1 1.1.1 1.1.2 1.1.3 1.1.4 1.1.5 1.1.5a 1.1.6 1.1.7 1.2 1.2.1 1.2.2 1.2.3 1.2.4 1.2.5 1.2.6 1.3 1.3.1 1.3.2 1.3.3 1.3.4 1.3.5 1.3.6 1.4 1.4.1 1.4.2 1.5 1.5.1 1.5.2 1.5.3 1.5.4 1.5.5 1.5.6 1.5.7 1.5.8 1.6 1.6.1 1.6.2 1.6.3 1.6.4 1.6.5 1.6.6 1.6.7 1.6.8 1.7 1.7.1 1.7.2 1.8 1.8.1 1.8.10 1.8.2 1.8.3 1.8.4 1.8.5 1.8.6 1.8.7 1.8.8 1.8.9 1.9 1.9.1 1.9.10 1.9.11 1.9.12 1.9.13 1.9.2 1.9.3 1.9.4 1.9.5 1.9.6 1.9.7 1.9.8 1.9.9 2.1.9 2.2.10 2.2.11 2.2.12 2.2.13 2.2.14 2.2.15 2.2.16 2.2.2 2.2.5 2.2.6 2.2.7 2.2.8 2.2.9 3.0 3.1 3.1.1 3.1.10 3.1.11 3.1.12 3.1.13 3.1.14 3.1.15 3.1.16 3.1.17 3.1.18 3.1.19 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6 3.1.7 3.1.8 3.1.9 3.2.0 3.2.1 3.2.10 3.2.11 3.2.12 3.2.13 3.2.14 3.2.15 3.2.16 3.2.2 3.2.3 3.2.4 3.2.5 3.2.6 3.2.7 3.2.8 3.2.9 4.0.0 4.0.1 4.0.2 4.0.3 4.1.0 4.1.1 4.1.2 4.1.3 4.1.4 4.10.0 4.10.1 4.10.2 4.10.3 4.11.0 4.12.0 4.13.0 4.13.1 4.13.2 4.13.3 4.13.4 4.14.0 4.14.1 4.14.2 4.14.3 4.14.4 4.15.0 4.15.1 4.15.10 4.15.11 4.15.12 4.15.13 4.15.14 4.15.15 4.15.16 4.15.17 4.15.18 4.15.19 4.15.2 4.15.20 4.15.20.1 4.15.21 4.15.22 4.15.23 4.15.24 4.15.25 4.15.3 4.15.4 4.15.5 4.15.6 4.15.7 4.15.8 4.15.9 4.16.0 4.16.1 4.16.10 4.16.11 4.16.12 4.16.13 4.16.14 4.16.15 4.16.2 4.16.3 4.16.4 4.16.5 4.16.6 4.16.7 4.16.8 4.16.9 4.2.0 4.3.0 4.3.1 4.3.2 4.4.0 4.4.1 4.5.0 4.5.1 4.5.2 4.5.3 4.5.4 4.5.5 4.6.0 4.7.0 4.8.0 4.9.0
wp-user-avatar / src / Classes / SendEmail.php
wp-user-avatar / src / Classes Last commit date
Installer 3 years ago AdminNotices.php 1 month ago AjaxHandler.php 1 year ago Autologin.php 9 months ago BlockRegistrations.php 10 months ago BuddyPressBbPress.php 3 years ago DisableConcurrentLogins.php 2 years ago EditUserProfile.php 5 months ago ExtensionManager.php 1 month ago FileUploader.php 3 months ago FormPreviewHandler.php 5 months ago FormRepository.php 1 year ago FormShortcodeDefaults.php 1 month ago GDPR.php 3 years ago Geolocation.php 3 years ago GlobalSiteAccess.php 3 years ago ImageUploader.php 1 year ago LoginAuth.php 1 year ago Miscellaneous.php 3 years ago ModifyRedirectDefaultLinks.php 5 months ago PPRESS_Session.php 1 year ago PROFILEPRESS_sql.php 1 year ago PasswordReset.php 1 year ago ProfileUrlRewrite.php 4 years ago RegistrationAuth.php 1 week ago SendEmail.php 3 years ago ShortcodeThemeFactory.php 5 years ago UserAvatar.php 1 year ago UserSignupLocationListingPage.php 3 years ago UsernameEmailRestrictLogin.php 4 years ago WPProfileFieldParserTrait.php 1 year ago WelcomeEmailAfterSignup.php 1 year ago default-email-template.php 1 year ago index.php 3 years ago
SendEmail.php
146 lines
1 <?php
2
3 namespace ProfilePress\Core\Classes;
4
5 use ProfilePressVendor\Pelago\Emogrifier;
6
7 class SendEmail
8 {
9 protected $sender_name;
10
11 protected $sender_email;
12
13 protected $content_type;
14
15 protected $to;
16
17 protected $subject;
18
19 protected $message;
20
21 public function __construct($to, $subject, $message)
22 {
23 $this->to = $to;
24 $this->subject = $subject;
25 $this->message = $message;
26 }
27
28 public function email_content_type()
29 {
30 return ppress_get_setting('email_content_type', 'text/html', true);
31 }
32
33 public function email_sender_name()
34 {
35 return sanitize_text_field(
36 ppress_get_setting('email_sender_name', ppress_site_title(), true)
37 );
38 }
39
40 public function email_sender_email()
41 {
42 return sanitize_email(
43 ppress_get_setting('email_sender_email', 'wordpress@' . ppress_site_url_without_scheme(), true)
44 );
45 }
46
47 public function get_headers()
48 {
49 $headers = [];
50 if ( ! defined('W3GUY_LOCAL')) {
51 $headers[] = "From: {$this->email_sender_name()} <{$this->email_sender_email()}>";
52 $headers[] = "Reply-To: {$this->email_sender_name()} <{$this->email_sender_email()}>";
53 }
54 $headers[] = sprintf("Content-type: %s", $this->email_content_type());
55 $headers[] = 'charset=UTF-8';
56
57 return apply_filters('ppress_email_headers', $headers);
58 }
59
60 public function before_send()
61 {
62 add_action('wp_mail_failed', [$this, 'log_wp_mail_failed']);
63
64 add_filter('wp_mail_from', [$this, 'email_sender_email']);
65 add_filter('wp_mail_from_name', [$this, 'email_sender_name']);
66 add_filter('wp_mail_content_type', [$this, 'email_content_type']);
67 }
68
69 public function after_send()
70 {
71 remove_action('wp_mail_failed', [$this, 'log_wp_mail_failed']);
72
73 remove_filter('wp_mail_from', [$this, 'email_sender_email']);
74 remove_filter('wp_mail_from_name', [$this, 'email_sender_name']);
75 remove_filter('wp_mail_content_type', [$this, 'email_content_type']);
76 }
77
78 public function templatified_email()
79 {
80 $message = $this->message;
81
82 if ($this->email_content_type() == 'text/html') {
83 $message = htmlspecialchars_decode(stripslashes($message));
84 $email_template = ppress_get_setting('email_template_type', 'default', true);
85
86 if ($email_template == 'default') {
87 ob_start();
88 $email_subject = $this->subject;
89 $email_content = $this->message;
90 require dirname(__FILE__) . '/default-email-template.php';
91 $message = ob_get_clean();
92 }
93
94 if (class_exists('DOMDocument') && ! is_customize_preview()) {
95 try {
96 $message = Emogrifier\CssInliner::fromHtml($message)->inlineCss()->render();
97 } catch (\Exception $e) {
98 //
99 }
100 }
101 }
102
103 return $message;
104 }
105
106 /**
107 * @param \WP_Error $wp_error
108 */
109 public function log_wp_mail_failed($wp_error)
110 {
111 $mail_error_data = $wp_error->get_error_data();
112
113 $context = [
114 'to' => $mail_error_data['to'],
115 'subject' => $mail_error_data['subject']
116 ];
117
118 ppress_log_error($wp_error->get_error_message() . ' => ' . json_encode($context));
119 }
120
121 public function send()
122 {
123 if (empty($this->to) || empty($this->message) || empty($this->subject)) {
124 return false;
125 }
126
127 $this->message = $this->templatified_email();
128
129 $this->before_send();
130
131 $result = wp_mail($this->to, $this->subject, $this->message, $this->get_headers());
132
133 // if failed, try without the header.
134 if ( ! $result) {
135 $result = wp_mail($this->to, $this->subject, $this->message);
136 }
137
138 $this->after_send();
139
140 if ( ! $result) {
141 return false;
142 }
143
144 return $result;
145 }
146 }