PluginProbe ʕ •ᴥ•ʔ
Paid Membership Plugin, Ecommerce, User Registration Form, Login Form, User Profile & Restrict Content – ProfilePress / 3.1
Paid Membership Plugin, Ecommerce, User Registration Form, Login Form, User Profile & Restrict Content – ProfilePress v3.1
4.16.19 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
AdminNotices.php 5 years ago AjaxHandler.php 5 years ago Autologin.php 5 years ago BuddyPressBbPress.php 5 years ago EditUserProfile.php 5 years ago ExtensionManager.php 5 years ago FileUploader.php 5 years ago FormPreviewHandler.php 5 years ago FormRepository.php 5 years ago FormShortcodeDefaults.php 5 years ago GDPR.php 5 years ago GlobalSiteAccess.php 5 years ago ImageUploader.php 5 years ago LoginAuth.php 5 years ago Miscellaneous.php 5 years ago ModifyRedirectDefaultLinks.php 5 years ago PPRESS_Session.php 5 years ago PROFILEPRESS_sql.php 5 years ago PasswordReset.php 5 years ago ProfileUrlRewrite.php 5 years ago RegistrationAuth.php 5 years ago SendEmail.php 5 years ago ShortcodeThemeFactory.php 5 years ago UserAvatar.php 5 years ago UserSignupLocationListingPage.php 5 years ago UsernameEmailRestrictLogin.php 5 years ago WelcomeEmailAfterSignup.php 5 years ago default-email-template.php 5 years ago index.php 5 years ago
SendEmail.php
143 lines
1 <?php
2
3 namespace ProfilePress\Core\Classes;
4
5 class SendEmail
6 {
7 protected $sender_name;
8
9 protected $sender_email;
10
11 protected $content_type;
12
13 protected $to;
14
15 protected $subject;
16
17 protected $message;
18
19 public function __construct($to, $subject, $message)
20 {
21 $this->to = $to;
22 $this->subject = $subject;
23 $this->message = $message;
24 }
25
26 public function email_content_type()
27 {
28 return ppress_get_setting('email_content_type', 'text/html', true);
29 }
30
31 public function email_sender_name()
32 {
33 return sanitize_text_field(
34 ppress_get_setting('email_sender_name', ppress_site_title(), true)
35 );
36 }
37
38 public function email_sender_email()
39 {
40 return sanitize_email(
41 ppress_get_setting('email_sender_email', 'wordpress@' . ppress_site_url_without_scheme(), true)
42 );
43 }
44
45 public function get_headers()
46 {
47 $headers = [];
48 if ( ! defined('W3GUY_LOCAL')) {
49 $headers[] = "From: {$this->email_sender_name()} <{$this->email_sender_email()}>";
50 $headers[] = "Reply-To: {$this->email_sender_name()} <{$this->email_sender_email()}>";
51 }
52 $headers[] = sprintf("Content-type: %s", $this->email_content_type());
53 $headers[] = 'charset=UTF-8';
54
55 return apply_filters('ppress_email_headers', $headers);
56 }
57
58 public function before_send()
59 {
60 add_action('wp_mail_failed', [$this, 'log_wp_mail_failed']);
61
62 add_filter('wp_mail_from', [$this, 'email_sender_email']);
63 add_filter('wp_mail_from_name', [$this, 'email_sender_name']);
64 add_filter('wp_mail_content_type', [$this, 'email_content_type']);
65 }
66
67 public function after_send()
68 {
69 remove_action('wp_mail_failed', [$this, 'log_wp_mail_failed']);
70
71 remove_filter('wp_mail_from', [$this, 'email_sender_email']);
72 remove_filter('wp_mail_from_name', [$this, 'email_sender_name']);
73 remove_filter('wp_mail_content_type', [$this, 'email_content_type']);
74 }
75
76 public function templatified_email()
77 {
78 $message = $this->message;
79
80 if ($this->email_content_type() == 'text/html') {
81 $message = htmlspecialchars_decode(stripslashes($message));
82 $email_template = ppress_get_setting('email_template_type', 'default', true);
83
84 if ($email_template == 'default') {
85 ob_start();
86 $email_subject = $this->subject;
87 $email_content = $this->message;
88 require dirname(__FILE__) . '/default-email-template.php';
89 $message = ob_get_clean();
90 }
91
92 if ( ! is_customize_preview()) {
93 /** @see https://github.com/MyIntervals/emogrifier/tree/v2.2.0 */
94 $emogrifier = new \Pelago\Emogrifier();
95 $emogrifier->setHtml($message);
96 $message = $emogrifier->emogrify();
97 }
98 }
99
100 return $message;
101 }
102
103 /**
104 * @param \WP_Error $wp_error
105 */
106 public function log_wp_mail_failed($wp_error)
107 {
108 $mail_error_data = $wp_error->get_error_data();
109
110 $context = [
111 'to' => $mail_error_data['to'],
112 'subject' => $mail_error_data['subject']
113 ];
114
115 ppress_log_error($wp_error->get_error_message() . ' => ' . json_encode($context));
116 }
117
118 public function send()
119 {
120 if (empty($this->to) || empty($this->message) || empty($this->subject)) {
121 return false;
122 }
123
124 $this->message = $this->templatified_email();
125
126 $this->before_send();
127
128 $result = wp_mail($this->to, $this->subject, $this->message, $this->get_headers());
129
130 // if failed, try without the header.
131 if ( ! $result) {
132 $result = wp_mail($this->to, $this->subject, $this->message);
133 }
134
135 $this->after_send();
136
137 if ( ! $result) {
138 return false;
139 }
140
141 return $result;
142 }
143 }