This commit is contained in:
Rachit Bhargava
2024-01-10 11:53:33 -05:00
parent 83d223b0df
commit 054b4fffc9
16481 changed files with 0 additions and 3473867 deletions

View File

@@ -1,303 +0,0 @@
<?php
add_filter(
'wpcf7_pre_construct_contact_form_properties',
'wpcf7_sendinblue_register_property',
10, 2
);
/**
* Registers the sendinblue contact form property.
*/
function wpcf7_sendinblue_register_property( $properties, $contact_form ) {
$service = WPCF7_Sendinblue::get_instance();
if ( $service->is_active() ) {
$properties += array(
'sendinblue' => array(),
);
}
return $properties;
}
add_action(
'wpcf7_save_contact_form',
'wpcf7_sendinblue_save_contact_form',
10, 3
);
/**
* Saves the sendinblue property value.
*/
function wpcf7_sendinblue_save_contact_form( $contact_form, $args, $context ) {
$service = WPCF7_Sendinblue::get_instance();
if ( ! $service->is_active() ) {
return;
}
$prop = isset( $_POST['wpcf7-sendinblue'] )
? (array) $_POST['wpcf7-sendinblue']
: array();
$prop = wp_parse_args(
$prop,
array(
'enable_contact_list' => false,
'contact_lists' => array(),
'enable_transactional_email' => false,
'email_template' => 0,
)
);
$prop['contact_lists'] = array_map( 'absint', $prop['contact_lists'] );
$prop['email_template'] = absint( $prop['email_template'] );
$contact_form->set_properties( array(
'sendinblue' => $prop,
) );
}
add_filter(
'wpcf7_editor_panels',
'wpcf7_sendinblue_editor_panels',
10, 1
);
/**
* Builds the editor panel for the sendinblue property.
*/
function wpcf7_sendinblue_editor_panels( $panels ) {
$service = WPCF7_Sendinblue::get_instance();
if ( ! $service->is_active() ) {
return $panels;
}
$contact_form = WPCF7_ContactForm::get_current();
$prop = wp_parse_args(
$contact_form->prop( 'sendinblue' ),
array(
'enable_contact_list' => false,
'contact_lists' => array(),
'enable_transactional_email' => false,
'email_template' => 0,
)
);
$editor_panel = static function () use ( $prop, $service ) {
$description = sprintf(
esc_html(
__( "You can set up the Brevo integration here. For details, see %s.", 'contact-form-7' )
),
wpcf7_link(
__( 'https://contactform7.com/sendinblue-integration/', 'contact-form-7' ),
__( 'Brevo integration', 'contact-form-7' )
)
);
$lists = $service->get_lists();
$templates = $service->get_templates();
?>
<h2><?php echo esc_html( __( 'Brevo', 'contact-form-7' ) ); ?></h2>
<fieldset>
<legend><?php echo $description; ?></legend>
<table class="form-table" role="presentation">
<tbody>
<tr class="<?php echo $prop['enable_contact_list'] ? '' : 'inactive'; ?>">
<th scope="row">
<?php
echo esc_html( __( 'Contact lists', 'contact-form-7' ) );
?>
</th>
<td>
<fieldset>
<legend class="screen-reader-text">
<?php
echo esc_html( __( 'Contact lists', 'contact-form-7' ) );
?>
</legend>
<label for="wpcf7-sendinblue-enable-contact-list">
<input type="checkbox" name="wpcf7-sendinblue[enable_contact_list]" id="wpcf7-sendinblue-enable-contact-list" value="1" <?php checked( $prop['enable_contact_list'] ); ?> />
<?php
echo esc_html(
__( "Add form submitters to your contact lists", 'contact-form-7' )
);
?>
</label>
</fieldset>
</td>
</tr>
<tr>
<th scope="row"></th>
<td>
<fieldset>
<?php
if ( $lists ) {
echo sprintf(
'<legend>%1$s</legend>',
esc_html( __( 'Select lists to which contacts are added:', 'contact-form-7' ) )
);
echo '<ul>';
foreach ( $lists as $list ) {
echo sprintf(
'<li><label><input %1$s /> %2$s</label></li>',
wpcf7_format_atts( array(
'type' => 'checkbox',
'name' => 'wpcf7-sendinblue[contact_lists][]',
'value' => $list['id'],
'checked' => in_array( $list['id'], $prop['contact_lists'] ),
) ),
esc_html( $list['name'] )
);
}
echo '</ul>';
} else {
echo sprintf(
'<legend>%1$s</legend>',
esc_html( __( 'You have no contact list yet.', 'contact-form-7' ) )
);
}
?>
</fieldset>
<?php
echo sprintf(
'<p><a %1$s>%2$s <span class="screen-reader-text">%3$s</span><span aria-hidden="true" class="dashicons dashicons-external"></span></a></p>',
wpcf7_format_atts( array(
'href' => 'https://my.sendinblue.com/lists',
'target' => '_blank',
'rel' => 'external noreferrer noopener',
) ),
esc_html( __( 'Manage your contact lists', 'contact-form-7' ) ),
esc_html( __( '(opens in a new tab)', 'contact-form-7' ) )
);
?>
</td>
</tr>
<tr class="<?php echo $prop['enable_transactional_email'] ? '' : 'inactive'; ?>">
<th scope="row">
<?php
echo esc_html( __( 'Welcome email', 'contact-form-7' ) );
?>
</th>
<td>
<fieldset>
<legend class="screen-reader-text">
<?php
echo esc_html( __( 'Welcome email', 'contact-form-7' ) );
?>
</legend>
<label for="wpcf7-sendinblue-enable-transactional-email">
<input type="checkbox" name="wpcf7-sendinblue[enable_transactional_email]" id="wpcf7-sendinblue-enable-transactional-email" value="1" <?php checked( $prop['enable_transactional_email'] ); ?> />
<?php
echo esc_html(
__( "Send a welcome email to new contacts", 'contact-form-7' )
);
?>
</label>
</fieldset>
</td>
</tr>
<tr>
<th scope="row"></th>
<td>
<fieldset>
<?php
if ( $templates ) {
echo sprintf(
'<legend>%1$s</legend>',
esc_html( __( 'Select an email template:', 'contact-form-7' ) )
);
echo '<select name="wpcf7-sendinblue[email_template]">';
echo sprintf(
'<option %1$s>%2$s</option>',
wpcf7_format_atts( array(
'value' => 0,
'selected' => 0 === $prop['email_template'],
) ),
esc_html( __( '&mdash; Select &mdash;', 'contact-form-7' ) )
);
foreach ( $templates as $template ) {
echo sprintf(
'<option %1$s>%2$s</option>',
wpcf7_format_atts( array(
'value' => $template['id'],
'selected' => $prop['email_template'] === $template['id'],
) ),
esc_html( $template['name'] )
);
}
echo '</select>';
} else {
echo sprintf(
'<legend>%1$s</legend>',
esc_html( __( 'You have no active email template yet.', 'contact-form-7' ) )
);
}
?>
</fieldset>
<?php
echo sprintf(
'<p><a %1$s>%2$s <span class="screen-reader-text">%3$s</span><span aria-hidden="true" class="dashicons dashicons-external"></span></a></p>',
wpcf7_format_atts( array(
'href' => 'https://my.sendinblue.com/camp/lists/template',
'target' => '_blank',
'rel' => 'external noreferrer noopener',
) ),
esc_html( __( 'Manage your email templates', 'contact-form-7' ) ),
esc_html( __( '(opens in a new tab)', 'contact-form-7' ) )
);
?>
</td>
</tr>
</tbody>
</table>
</fieldset>
<?php
};
$panels += array(
'sendinblue-panel' => array(
'title' => __( 'Brevo', 'contact-form-7' ),
'callback' => $editor_panel,
),
);
return $panels;
}

View File

@@ -1,101 +0,0 @@
<?php
/**
* Double Opt-In Helper-related functions
*
* @link https://contactform7.com/doi-helper/
*/
add_action(
'doihelper_init',
'wpcf7_sendinblue_doi_register_agent',
10, 0
);
/**
* Registers wpcf7_sendinblue as an agent.
*/
function wpcf7_sendinblue_doi_register_agent() {
if ( ! function_exists( 'doihelper_register_agent' ) ) {
return;
}
doihelper_register_agent( 'wpcf7_sendinblue', array(
'optin_callback' => apply_filters(
'wpcf7_sendinblue_doi_optin_callback',
'wpcf7_sendinblue_doi_default_optin_callback'
),
'email_callback' => apply_filters(
'wpcf7_sendinblue_doi_email_callback',
'wpcf7_sendinblue_doi_default_email_callback'
),
) );
}
/**
* Default optin_callback function.
*/
function wpcf7_sendinblue_doi_default_optin_callback( $properties ) {
$service = WPCF7_Sendinblue::get_instance();
if ( ! $service->is_active() ) {
return;
}
if ( ! empty( $properties['contact'] ) ) {
$contact_id = $service->create_contact( $properties['contact'] );
if ( $contact_id and ! empty( $properties['email'] ) ) {
$service->send_email( $properties['email'] );
}
}
}
/**
* Default email_callback function.
*/
function wpcf7_sendinblue_doi_default_email_callback( $args ) {
if ( ! isset( $args['token'] ) or ! isset( $args['email_to'] ) ) {
return;
}
$site_title = wp_specialchars_decode(
get_bloginfo( 'name' ),
ENT_QUOTES
);
$link = add_query_arg(
array( 'doitoken' => $args['token'] ),
home_url()
);
$to = $args['email_to'];
$subject = sprintf(
/* translators: %s: blog name */
__( 'Opt-in confirmation from %s', 'contact-form-7' ),
$site_title
);
$message = sprintf(
/* translators: 1: blog name, 2: confirmation link */
__( 'Hello,
This is a confirmation email sent from %1$s.
We have received your submission to our web form, according to which you have allowed us to add you to our contact list. But, the process has not yet been completed. To complete it, please click the following link.
%2$s
If it was not your intention, or if you have no idea why you received this message, please do not click on the link, and ignore this message. We will never collect or use your personal data without your clear consent.
Sincerely,
%1$s', 'contact-form-7' ),
$site_title,
$link
);
wp_mail( $to, $subject, $message );
}

View File

@@ -1,228 +0,0 @@
<?php
/**
* Brevo module main file
*
* @link https://contactform7.com/sendinblue-integration/
*/
wpcf7_include_module_file( 'sendinblue/service.php' );
wpcf7_include_module_file( 'sendinblue/contact-form-properties.php' );
wpcf7_include_module_file( 'sendinblue/doi.php' );
add_action( 'wpcf7_init', 'wpcf7_sendinblue_register_service', 10, 0 );
/**
* Registers the Sendinblue service.
*/
function wpcf7_sendinblue_register_service() {
$integration = WPCF7_Integration::get_instance();
$integration->add_service( 'sendinblue',
WPCF7_Sendinblue::get_instance()
);
}
add_action( 'wpcf7_submit', 'wpcf7_sendinblue_submit', 10, 2 );
/**
* Callback to the wpcf7_submit action hook. Creates a contact
* based on the submission.
*/
function wpcf7_sendinblue_submit( $contact_form, $result ) {
if ( $contact_form->in_demo_mode() ) {
return;
}
$service = WPCF7_Sendinblue::get_instance();
if ( ! $service->is_active() ) {
return;
}
if ( empty( $result['posted_data_hash'] ) ) {
return;
}
if ( empty( $result['status'] )
or ! in_array( $result['status'], array( 'mail_sent', 'mail_failed' ) ) ) {
return;
}
$submission = WPCF7_Submission::get_instance();
$consented = true;
foreach ( $contact_form->scan_form_tags( 'feature=name-attr' ) as $tag ) {
if ( $tag->has_option( 'consent_for:sendinblue' )
and null == $submission->get_posted_data( $tag->name ) ) {
$consented = false;
break;
}
}
if ( ! $consented ) {
return;
}
$prop = wp_parse_args(
$contact_form->prop( 'sendinblue' ),
array(
'enable_contact_list' => false,
'contact_lists' => array(),
'enable_transactional_email' => false,
'email_template' => 0,
)
);
if ( ! $prop['enable_contact_list'] ) {
return;
}
$attributes = wpcf7_sendinblue_collect_parameters();
$params = array(
'contact' => array(),
'email' => array(),
);
if ( ! empty( $attributes['EMAIL'] ) or ! empty( $attributes['SMS'] ) ) {
$params['contact'] = apply_filters(
'wpcf7_sendinblue_contact_parameters',
array(
'email' => $attributes['EMAIL'],
'attributes' => (object) $attributes,
'listIds' => (array) $prop['contact_lists'],
'updateEnabled' => false,
)
);
}
if ( $prop['enable_transactional_email'] and $prop['email_template'] ) {
$first_name = isset( $attributes['FIRSTNAME'] )
? trim( $attributes['FIRSTNAME'] )
: '';
$last_name = isset( $attributes['LASTNAME'] )
? trim( $attributes['LASTNAME'] )
: '';
if ( $first_name or $last_name ) {
$email_to_name = sprintf(
/* translators: 1: first name, 2: last name */
_x( '%1$s %2$s', 'personal name', 'contact-form-7' ),
$first_name,
$last_name
);
} else {
$email_to_name = '';
}
$params['email'] = apply_filters(
'wpcf7_sendinblue_email_parameters',
array(
'templateId' => absint( $prop['email_template'] ),
'to' => array(
array(
'name' => $email_to_name,
'email' => $attributes['EMAIL'],
),
),
'params' => (object) $attributes,
'tags' => array( 'Contact Form 7' ),
)
);
}
if ( is_email( $attributes['EMAIL'] ) ) {
$token = null;
do_action_ref_array( 'wpcf7_doi', array(
'wpcf7_sendinblue',
array(
'email_to' => $attributes['EMAIL'],
'properties' => $params,
),
&$token,
) );
if ( isset( $token ) ) {
return;
}
}
if ( ! empty( $params['contact'] ) ) {
$contact_id = $service->create_contact( $params['contact'] );
if ( $contact_id and ! empty( $params['email'] ) ) {
$service->send_email( $params['email'] );
}
}
}
/**
* Collects parameters for Sendinblue contact data based on submission.
*
* @return array Sendinblue contact parameters.
*/
function wpcf7_sendinblue_collect_parameters() {
$params = array();
$submission = WPCF7_Submission::get_instance();
foreach ( (array) $submission->get_posted_data() as $name => $val ) {
$name = strtoupper( $name );
if ( 'YOUR-' == substr( $name, 0, 5 ) ) {
$name = substr( $name, 5 );
}
if ( $val ) {
$params += array(
$name => $val,
);
}
}
if ( isset( $params['SMS'] ) ) {
$sms = implode( ' ', (array) $params['SMS'] );
$sms = trim( $sms );
$plus = '+' == substr( $sms, 0, 1 ) ? '+' : '';
$sms = preg_replace( '/[^0-9]/', '', $sms );
if ( 6 < strlen( $sms ) and strlen( $sms ) < 18 ) {
$params['SMS'] = $plus . $sms;
} else { // Invalid phone number
unset( $params['SMS'] );
}
}
if ( isset( $params['NAME'] ) ) {
$your_name = implode( ' ', (array) $params['NAME'] );
$your_name = explode( ' ', $your_name );
if ( ! isset( $params['LASTNAME'] ) ) {
$params['LASTNAME'] = implode(
' ',
array_slice( $your_name, 1 )
);
}
if ( ! isset( $params['FIRSTNAME'] ) ) {
$params['FIRSTNAME'] = implode(
' ',
array_slice( $your_name, 0, 1 )
);
}
}
$params = apply_filters(
'wpcf7_sendinblue_collect_parameters',
$params
);
return $params;
}

View File

@@ -1,386 +0,0 @@
<?php
if ( ! class_exists( 'WPCF7_Service' ) ) {
return;
}
class WPCF7_Sendinblue extends WPCF7_Service {
use WPCF7_Sendinblue_API;
private static $instance;
private $api_key;
public static function get_instance() {
if ( empty( self::$instance ) ) {
self::$instance = new self;
}
return self::$instance;
}
private function __construct() {
$option = WPCF7::get_option( 'sendinblue' );
if ( isset( $option['api_key'] ) ) {
$this->api_key = $option['api_key'];
}
}
public function get_title() {
return __( 'Brevo', 'contact-form-7' );
}
public function is_active() {
return (bool) $this->get_api_key();
}
public function get_api_key() {
return $this->api_key;
}
public function get_categories() {
return array( 'email_marketing' );
}
public function icon() {
}
public function link() {
echo wpcf7_link(
'https://www.brevo.com/',
'brevo.com'
);
}
protected function log( $url, $request, $response ) {
wpcf7_log_remote_request( $url, $request, $response );
}
protected function menu_page_url( $args = '' ) {
$args = wp_parse_args( $args, array() );
$url = menu_page_url( 'wpcf7-integration', false );
$url = add_query_arg( array( 'service' => 'sendinblue' ), $url );
if ( ! empty( $args ) ) {
$url = add_query_arg( $args, $url );
}
return $url;
}
protected function save_data() {
WPCF7::update_option( 'sendinblue', array(
'api_key' => $this->api_key,
) );
}
protected function reset_data() {
$this->api_key = null;
$this->save_data();
}
public function load( $action = '' ) {
if ( 'setup' == $action and 'POST' == $_SERVER['REQUEST_METHOD'] ) {
check_admin_referer( 'wpcf7-sendinblue-setup' );
if ( ! empty( $_POST['reset'] ) ) {
$this->reset_data();
$redirect_to = $this->menu_page_url( 'action=setup' );
} else {
$this->api_key = isset( $_POST['api_key'] )
? trim( $_POST['api_key'] )
: '';
$confirmed = $this->confirm_key();
if ( true === $confirmed ) {
$redirect_to = $this->menu_page_url( array(
'message' => 'success',
) );
$this->save_data();
} elseif ( false === $confirmed ) {
$redirect_to = $this->menu_page_url( array(
'action' => 'setup',
'message' => 'unauthorized',
) );
} else {
$redirect_to = $this->menu_page_url( array(
'action' => 'setup',
'message' => 'invalid',
) );
}
}
wp_safe_redirect( $redirect_to );
exit();
}
}
public function admin_notice( $message = '' ) {
if ( 'unauthorized' == $message ) {
echo sprintf(
'<div class="notice notice-error"><p><strong>%1$s</strong>: %2$s</p></div>',
esc_html( __( "Error", 'contact-form-7' ) ),
esc_html( __( "You have not been authenticated. Make sure the provided API key is correct.", 'contact-form-7' ) )
);
}
if ( 'invalid' == $message ) {
echo sprintf(
'<div class="notice notice-error"><p><strong>%1$s</strong>: %2$s</p></div>',
esc_html( __( "Error", 'contact-form-7' ) ),
esc_html( __( "Invalid key values.", 'contact-form-7' ) )
);
}
if ( 'success' == $message ) {
echo sprintf(
'<div class="notice notice-success"><p>%s</p></div>',
esc_html( __( 'Settings saved.', 'contact-form-7' ) )
);
}
}
public function display( $action = '' ) {
echo sprintf(
'<p>%s</p>',
esc_html( __( "Store and organize your contacts while protecting user privacy on Brevo, the leading CRM & email marketing platform in Europe. Brevo offers unlimited contacts and advanced marketing features.", 'contact-form-7' ) )
);
echo sprintf(
'<p><strong>%s</strong></p>',
wpcf7_link(
__( 'https://contactform7.com/sendinblue-integration/', 'contact-form-7' ),
__( 'Brevo integration', 'contact-form-7' )
)
);
if ( $this->is_active() ) {
echo sprintf(
'<p class="dashicons-before dashicons-yes">%s</p>',
esc_html( __( "Brevo is active on this site.", 'contact-form-7' ) )
);
}
if ( 'setup' == $action ) {
$this->display_setup();
} else {
echo sprintf(
'<p><a href="%1$s" class="button">%2$s</a></p>',
esc_url( $this->menu_page_url( 'action=setup' ) ),
esc_html( __( 'Setup integration', 'contact-form-7' ) )
);
}
}
private function display_setup() {
$api_key = $this->get_api_key();
?>
<form method="post" action="<?php echo esc_url( $this->menu_page_url( 'action=setup' ) ); ?>">
<?php wp_nonce_field( 'wpcf7-sendinblue-setup' ); ?>
<table class="form-table">
<tbody>
<tr>
<th scope="row"><label for="publishable"><?php echo esc_html( __( 'API key', 'contact-form-7' ) ); ?></label></th>
<td><?php
if ( $this->is_active() ) {
echo esc_html( wpcf7_mask_password( $api_key, 4, 8 ) );
echo sprintf(
'<input type="hidden" value="%s" id="api_key" name="api_key" />',
esc_attr( $api_key )
);
} else {
echo sprintf(
'<input type="text" aria-required="true" value="%s" id="api_key" name="api_key" class="regular-text code" />',
esc_attr( $api_key )
);
}
?></td>
</tr>
</tbody>
</table>
<?php
if ( $this->is_active() ) {
submit_button(
_x( 'Remove key', 'API keys', 'contact-form-7' ),
'small', 'reset'
);
} else {
submit_button( __( 'Save changes', 'contact-form-7' ) );
}
?>
</form>
<?php
}
}
/**
* Trait for the Sendinblue API (v3).
*
* @link https://developers.sendinblue.com/reference
*/
trait WPCF7_Sendinblue_API {
public function confirm_key() {
$endpoint = 'https://api.sendinblue.com/v3/account';
$request = array(
'headers' => array(
'Accept' => 'application/json',
'Content-Type' => 'application/json; charset=utf-8',
'API-Key' => $this->get_api_key(),
),
);
$response = wp_remote_get( $endpoint, $request );
$response_code = (int) wp_remote_retrieve_response_code( $response );
if ( 200 === $response_code ) { // 200 OK
return true;
} elseif ( 401 === $response_code ) { // 401 Unauthorized
return false;
} elseif ( 400 <= $response_code ) {
if ( WP_DEBUG ) {
$this->log( $endpoint, $request, $response );
}
}
}
public function get_lists() {
$endpoint = add_query_arg(
array(
'limit' => 50,
'offset' => 0,
),
'https://api.sendinblue.com/v3/contacts/lists'
);
$request = array(
'headers' => array(
'Accept' => 'application/json',
'Content-Type' => 'application/json; charset=utf-8',
'API-Key' => $this->get_api_key(),
),
);
$response = wp_remote_get( $endpoint, $request );
$response_code = (int) wp_remote_retrieve_response_code( $response );
if ( 200 === $response_code ) { // 200 OK
$response_body = wp_remote_retrieve_body( $response );
$response_body = json_decode( $response_body, true );
if ( empty( $response_body['lists'] ) ) {
return array();
} else {
return (array) $response_body['lists'];
}
} elseif ( 400 <= $response_code ) {
if ( WP_DEBUG ) {
$this->log( $endpoint, $request, $response );
}
}
}
public function get_templates() {
$endpoint = add_query_arg(
array(
'templateStatus' => 'true',
'limit' => 100,
'offset' => 0,
),
'https://api.sendinblue.com/v3/smtp/templates'
);
$request = array(
'headers' => array(
'Accept' => 'application/json',
'Content-Type' => 'application/json; charset=utf-8',
'API-Key' => $this->get_api_key(),
),
);
$response = wp_remote_get( $endpoint, $request );
$response_code = (int) wp_remote_retrieve_response_code( $response );
if ( 200 === $response_code ) { // 200 OK
$response_body = wp_remote_retrieve_body( $response );
$response_body = json_decode( $response_body, true );
if ( empty( $response_body['templates'] ) ) {
return array();
} else {
return (array) $response_body['templates'];
}
} elseif ( 400 <= $response_code ) {
if ( WP_DEBUG ) {
$this->log( $endpoint, $request, $response );
}
}
}
public function create_contact( $properties ) {
$endpoint = 'https://api.sendinblue.com/v3/contacts';
$request = array(
'headers' => array(
'Accept' => 'application/json',
'Content-Type' => 'application/json; charset=utf-8',
'API-Key' => $this->get_api_key(),
),
'body' => wp_json_encode( $properties ),
);
$response = wp_remote_post( $endpoint, $request );
$response_code = (int) wp_remote_retrieve_response_code( $response );
if ( in_array( $response_code, array( 201, 204 ), true ) ) {
$contact_id = wp_remote_retrieve_body( $response );
return $contact_id;
} elseif ( 400 <= $response_code ) {
if ( WP_DEBUG ) {
$this->log( $endpoint, $request, $response );
}
}
return false;
}
public function send_email( $properties ) {
$endpoint = 'https://api.sendinblue.com/v3/smtp/email';
$request = array(
'headers' => array(
'Accept' => 'application/json',
'Content-Type' => 'application/json; charset=utf-8',
'API-Key' => $this->get_api_key(),
),
'body' => wp_json_encode( $properties ),
);
$response = wp_remote_post( $endpoint, $request );
$response_code = (int) wp_remote_retrieve_response_code( $response );
if ( 201 === $response_code ) { // 201 Transactional email sent
$message_id = wp_remote_retrieve_body( $response );
return $message_id;
} elseif ( 400 <= $response_code ) {
if ( WP_DEBUG ) {
$this->log( $endpoint, $request, $response );
}
}
return false;
}
}