PluginProbe ʕ •ᴥ•ʔ
OttoKit: All-in-One Automation Platform / 1.0.25
OttoKit: All-in-One Automation Platform v1.0.25
1.1.38 1.1.37 1.1.36 1.1.35 1.1.34 1.1.33 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-role.php 3 years ago change-role.php 2 years ago create-comment.php 3 years ago create-post.php 3 years ago create-user-if-not-exists.php 2 years ago find-user-by-id.php 2 years ago find-user-meta-by-key.php 3 years ago find-user-metas.php 3 years ago remove-role.php 3 years ago remove-user.php 3 years ago send-mail.php 3 years ago set-post-meta.php 3 years ago set-user-meta.php 3 years ago update-post.php 3 years ago update-user.php 3 years ago
send-mail.php
168 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 * @throws Exception Exception.
73 *
74 * @return bool|void
75 */
76 public function _action_listener( $user_id, $automation_id, $fields, $selected_options ) {
77 $result_arr = [];
78
79 foreach ( $fields as $field ) {
80 if ( ! isset( $field['name'] ) ) {
81 continue;
82 }
83
84 $result_arr[ $field['name'] ] = isset( $selected_options[ $field['name'] ] ) ? $selected_options[ $field['name'] ] : '';
85 }
86
87 $result_arr['headers'] = [];
88 $result_arr['headers'][] = 'Content-Type: text/html; charset=UTF-8';
89
90 $cc_email = isset( $selected_options['cc_email'] ) ? $selected_options['cc_email'] : '';
91 $bcc_email = isset( $selected_options['bcc_email'] ) ? $selected_options['bcc_email'] : '';
92 $from_email = isset( $selected_options['from_email'] ) ? $selected_options['from_email'] : '';
93 $from_name = isset( $selected_options['from_name'] ) ? $selected_options['from_name'] : '';
94
95 $to_email = $result_arr['to_email'];
96 $is_valid = WordPress::validate_email( $to_email );
97
98 if ( ! $is_valid->valid ) {
99 if ( $is_valid->multiple ) {
100 throw new Exception( 'One or more To email address is not valid' );
101 } else {
102 throw new Exception( 'To email address is not valid' );
103 }
104 }
105
106 if ( ! empty( $from_email ) ) {
107 $is_valid = WordPress::validate_email( $from_email );
108
109 if ( ! $is_valid->valid ) {
110 if ( $is_valid->multiple ) {
111 throw new Exception( 'One or more From email address is not valid' );
112 } else {
113 throw new Exception( 'From email address is not valid' );
114 }
115 }
116 if ( ! empty( $from_name ) ) {
117 $result_arr['headers'][] = 'From: ' . $from_name . ' <' . $from_email . '>';
118 } else {
119 $result_arr['headers'][] = 'From: <' . $from_email . '>';
120 }
121 }
122
123
124 if ( ! empty( $cc_email ) ) {
125 $is_valid = WordPress::validate_email( $cc_email );
126
127 if ( ! $is_valid->valid ) {
128 if ( $is_valid->multiple ) {
129 throw new Exception( 'One or more CC email address is not valid' );
130 } else {
131 throw new Exception( 'CC email address is not valid' );
132 }
133 }
134
135 $result_arr['headers'][] = 'CC: ' . $cc_email;
136 }
137 if ( ! empty( $bcc_email ) ) {
138 $is_valid = WordPress::validate_email( $bcc_email );
139
140 if ( ! $is_valid->valid ) {
141 if ( $is_valid->multiple ) {
142 throw new Exception( 'One or more BCC email address is not valid' );
143 } else {
144 throw new Exception( 'BCC email address is not valid' );
145 }
146 }
147
148 $result_arr['headers'][] = 'BCC: ' . $cc_email;
149 }
150
151 $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
152
153 if ( ! $result ) {
154 $this->set_error(
155 [
156 'email_data' => $result_arr,
157 'msg' => __( 'Email sending failed!', 'suretriggers' ),
158 ]
159 );
160 return false;
161 }
162
163 return true;
164 }
165 }
166
167 SendMail::get_instance();
168