PluginProbe ʕ •ᴥ•ʔ
OttoKit: All-in-One Automation Platform / 1.1.32
OttoKit: All-in-One Automation Platform v1.1.32
1.1.32 1.1.31 1.1.30 1.1.29 1.1.28 1.1.27 1.1.9 trunk 1.0.10 1.0.11 1.0.12 1.0.13 1.0.14 1.0.15 1.0.16 1.0.17 1.0.18 1.0.19 1.0.20 1.0.21 1.0.22 1.0.23 1.0.24 1.0.25 1.0.26 1.0.27 1.0.28 1.0.29 1.0.30 1.0.31 1.0.32 1.0.33 1.0.34 1.0.35 1.0.36 1.0.37 1.0.38 1.0.39 1.0.40 1.0.41 1.0.42 1.0.43 1.0.44 1.0.45 1.0.46 1.0.47 1.0.48 1.0.49 1.0.50 1.0.51 1.0.52 1.0.53 1.0.54 1.0.55 1.0.56 1.0.57 1.0.58 1.0.59 1.0.60 1.0.61 1.0.62 1.0.63 1.0.64 1.0.65 1.0.66 1.0.67 1.0.68 1.0.69 1.0.7 1.0.70 1.0.71 1.0.72 1.0.73 1.0.74 1.0.75 1.0.76 1.0.77 1.0.78 1.0.79 1.0.8 1.0.80 1.0.81 1.0.82 1.0.83 1.0.84 1.0.85 1.0.86 1.0.87 1.0.88 1.0.89 1.0.9 1.0.90 1.1.0 1.1.1 1.1.10 1.1.11 1.1.12 1.1.13 1.1.14 1.1.15 1.1.16 1.1.17 1.1.18 1.1.19 1.1.2 1.1.20 1.1.21 1.1.22 1.1.23 1.1.24 1.1.25 1.1.26 1.1.3 1.1.4 1.1.5 1.1.6 1.1.7 1.1.8
suretriggers / src / Integrations / wordpress / actions / send-mail.php
suretriggers / src / Integrations / wordpress / actions Last commit date
add-new-media.php 9 months ago add-new-role.php 9 months ago add-tag-to-post.php 9 months ago add-taxonomy-to-post.php 9 months ago change-role.php 9 months ago create-category.php 9 months ago create-comment.php 9 months ago create-post.php 8 months ago create-role.php 9 months ago create-tag.php 9 months ago create-user-if-not-exists.php 1 year ago delete-user.php 9 months ago find-posts.php 3 months ago find-user-by-email.php 2 years ago find-user-by-id.php 2 years ago find-user-meta-by-key.php 2 years ago find-user-metas.php 2 years ago get-post-by-id.php 9 months ago get-post-metadata.php 9 months ago get-post-taxonomy.php 9 months ago get-post-terms.php 9 months ago get-taxonomy-by-name.php 9 months ago get-user-by-role.php 9 months ago remove-role.php 9 months ago remove-user-meta.php 9 months ago remove-user.php 9 months ago send-mail.php 3 months ago set-post-meta.php 9 months ago set-user-meta.php 9 months ago update-comment-status.php 9 months ago update-post-excerpt.php 9 months ago update-post.php 9 months ago update-user.php 3 months ago
send-mail.php
188 lines
1 <?php
2 /**
3 * SendMail.
4 * php version 5.6
5 *
6 * @category SendMail
7 * @package SureTriggers
8 * @author BSF <username@example.com>
9 * @license https://www.gnu.org/licenses/gpl-3.0.html GPLv3
10 * @link https://www.brainstormforce.com/
11 * @since 1.0.0
12 */
13
14 namespace SureTriggers\Integrations\Wordpress\Actions;
15
16 use Exception;
17 use SureTriggers\Integrations\AutomateAction;
18 use SureTriggers\Integrations\WordPress\WordPress;
19 use SureTriggers\Traits\SingletonLoader;
20
21 /**
22 * SendMail
23 *
24 * @category SendMail
25 * @package SureTriggers
26 * @author BSF <username@example.com>
27 * @license https://www.gnu.org/licenses/gpl-3.0.html GPLv3
28 * @link https://www.brainstormforce.com/
29 * @since 1.0.0
30 */
31 class SendMail extends AutomateAction {
32
33 /**
34 * Integration type.
35 *
36 * @var string
37 */
38 public $integration = 'WordPress';
39
40 /**
41 * Action name.
42 *
43 * @var string
44 */
45 public $action = 'send_mail';
46
47 use SingletonLoader;
48
49 /**
50 * Register action.
51 *
52 * @param array $actions action data.
53 * @return array
54 */
55 public function register( $actions ) {
56 $actions[ $this->integration ][ $this->action ] = [
57 'label' => __( 'Send an email', 'suretriggers' ),
58 'action' => 'send_mail',
59 'function' => [ $this, 'action_listener' ],
60 ];
61
62 return $actions;
63 }
64
65 /**
66 * Action listener.
67 *
68 * @param int $user_id user_id.
69 * @param int $automation_id automation_id.
70 * @param array $fields fields.
71 * @param array $selected_options selectedOptions.
72 * @return array|mixed
73 * @throws Exception Exception.
74 */
75 public function _action_listener( $user_id, $automation_id, $fields, $selected_options ) {
76 $result_arr = [];
77
78 foreach ( $fields as $field ) {
79 if ( ! isset( $field['name'] ) ) {
80 continue;
81 }
82
83 $result_arr[ $field['name'] ] = isset( $selected_options[ $field['name'] ] ) ? $selected_options[ $field['name'] ] : '';
84 }
85
86 $result_arr['headers'] = [];
87 $result_arr['headers'][] = 'Content-Type: text/html; charset=UTF-8';
88
89 $cc_email = isset( $selected_options['cc_email'] ) ? sanitize_email( $selected_options['cc_email'] ) : '';
90 $bcc_email = isset( $selected_options['bcc_email'] ) ? sanitize_email( $selected_options['bcc_email'] ) : '';
91 $from_email = isset( $selected_options['from_email'] ) ? sanitize_email( $selected_options['from_email'] ) : '';
92 $from_name = isset( $selected_options['from_name'] ) ? sanitize_text_field( $selected_options['from_name'] ) : '';
93
94 $to_email = $result_arr['to_email'];
95 $is_valid = WordPress::validate_email( $to_email );
96
97 if ( ! $is_valid->valid ) {
98 if ( $is_valid->multiple ) {
99 return [
100 'status' => 'error',
101 'message' => 'One or more To email address is not valid',
102 ];
103 } else {
104 return [
105 'status' => 'error',
106 'message' => 'To email address is not valid',
107 ];
108 }
109 }
110
111 if ( ! empty( $from_email ) ) {
112 $is_valid = WordPress::validate_email( $from_email );
113
114 if ( ! $is_valid->valid ) {
115 if ( $is_valid->multiple ) {
116 return [
117 'status' => 'error',
118 'message' => 'One or more From email address is not valid',
119 ];
120 } else {
121 return [
122 'status' => 'error',
123 'message' => 'From email address is not valid',
124 ];
125 }
126 }
127 if ( ! empty( $from_name ) ) {
128 $result_arr['headers'][] = 'From: ' . $from_name . ' <' . $from_email . '>';
129 } else {
130 $result_arr['headers'][] = 'From: <' . $from_email . '>';
131 }
132 }
133
134
135 if ( ! empty( $cc_email ) ) {
136 $is_valid = WordPress::validate_email( $cc_email );
137
138 if ( ! $is_valid->valid ) {
139 if ( $is_valid->multiple ) {
140 return [
141 'status' => 'error',
142 'message' => 'One or more CC email address is not valid',
143 ];
144 } else {
145 return [
146 'status' => 'error',
147 'message' => 'CC email address is not valid',
148 ];
149 }
150 }
151
152 $result_arr['headers'][] = 'CC: ' . $cc_email;
153 }
154 if ( ! empty( $bcc_email ) ) {
155 $is_valid = WordPress::validate_email( $bcc_email );
156
157 if ( ! $is_valid->valid ) {
158 if ( $is_valid->multiple ) {
159 return [
160 'status' => 'error',
161 'message' => 'One or more BCC email address is not valid',
162 ];
163 } else {
164 return [
165 'status' => 'error',
166 'message' => 'BCC email address is not valid',
167 ];
168 }
169 }
170
171 $result_arr['headers'][] = 'BCC: ' . $bcc_email;
172 }
173
174 $result = wp_mail( $to_email, $result_arr['subject'], $result_arr['email_body'], $result_arr['headers'], $attachments = [] ); //phpcs:ignore WordPressVIPMinimum.Functions.RestrictedFunctions.wp_mail_wp_mail
175
176 if ( ! $result ) {
177 return [
178 'status' => 'error',
179 'message' => 'Email sending failed!',
180 ];
181 }
182
183 return $result_arr;
184 }
185 }
186
187 SendMail::get_instance();
188