SendGrid - Version 1.10.7

Version Description

  • Add port 2525 for SMTP
  • Use cache for stats widget on dashboard
Download this release

Release Info

Developer team-rs
Plugin Icon 128x128 SendGrid
Version 1.10.7
Comparing to
See all releases

Code changes from version 1.10.6 to 1.10.7

lib/class-sendgrid-mc-optin.php CHANGED
@@ -60,7 +60,7 @@ class Sendgrid_OptIn_API_Endpoint{
60
  exit();
61
  }
62
 
63
- $transient = ( is_multisite() ? Sendgrid_Tools::get_site_transient_sendgrid( $token ) : Sendgrid_Tools::get_transient_sendgrid( $token ) );
64
 
65
  if ( ! $transient or
66
  ! is_array( $transient ) or
@@ -82,11 +82,8 @@ class Sendgrid_OptIn_API_Endpoint{
82
  $page = Sendgrid_Tools::get_mc_signup_confirmation_page_url();
83
 
84
  if ( $page == false ) {
85
- if ( is_multisite() ) {
86
- Sendgrid_Tools::set_site_transient_sendgrid( $token, null );
87
- } else {
88
- Sendgrid_Tools::set_transient_sendgrid( $token, null );
89
- }
90
  wp_redirect( 'sg-subscription-success' );
91
  exit();
92
  }
@@ -131,28 +128,19 @@ class Sendgrid_OptIn_API_Endpoint{
131
 
132
  $token = Sendgrid_OptIn_API_Endpoint::generate_email_token( $email, $first_name, $last_name );
133
 
134
- $transient = ( is_multisite() ? Sendgrid_Tools::get_site_transient_sendgrid( $token ) : Sendgrid_Tools::get_transient_sendgrid( $token ) );
135
 
136
  if ( $transient and isset( $transient['email'] ) and ! $from_settings ) {
137
  return false;
138
  }
139
 
140
- if ( is_multisite() ) {
141
- if ( false == Sendgrid_Tools::set_site_transient_sendgrid( $token,
142
- array(
143
- 'email' => $email,
144
- 'first_name' => $first_name,
145
- 'last_name' => $last_name ),
146
- 24 * 60 * 60 ) and ! $from_settings and $transient ) {
147
- return false;
148
- }
149
- } elseif ( false == Sendgrid_Tools::set_transient_sendgrid( $token,
150
- array(
151
- 'email' => $email,
152
- 'first_name' => $first_name,
153
- 'last_name' => $last_name ),
154
- 24 * 60 * 60 ) and ! $from_settings and $transient ) {
155
- return false;
156
  }
157
 
158
  $confirmation_link = site_url() . '/?__sg_api=1&token=' . $token;
@@ -193,10 +181,6 @@ function register_shortcode_first_name($atts)
193
  $token = $_GET['sg_token'];
194
  $transient = Sendgrid_Tools::get_transient_sendgrid( $token );
195
 
196
- if ( is_multisite() ) {
197
- $transient = Sendgrid_Tools::get_site_transient_sendgrid( $token );
198
- }
199
-
200
  if ( ! $transient ||
201
  ! is_array( $transient ) ||
202
  ! isset( $transient['first_name'] ) )
@@ -223,10 +207,6 @@ function register_shortcode_last_name($atts)
223
  $token = $_GET['sg_token'];
224
  $transient = Sendgrid_Tools::get_transient_sendgrid( $token );
225
 
226
- if ( is_multisite() ) {
227
- $transient = Sendgrid_Tools::get_site_transient_sendgrid( $token );
228
- }
229
-
230
  if ( ! $transient or
231
  ! is_array( $transient ) or
232
  ! isset( $transient['last_name'] ) )
@@ -253,10 +233,6 @@ function register_shortcode_email($atts)
253
  $token = $_GET['sg_token'];
254
  $transient = Sendgrid_Tools::get_transient_sendgrid( $token );
255
 
256
- if ( is_multisite() ) {
257
- $transient = Sendgrid_Tools::get_site_transient_sendgrid( $token );
258
- }
259
-
260
  if ( ! $transient or
261
  ! is_array( $transient ) or
262
  ! isset( $transient['email'] ) )
@@ -287,16 +263,8 @@ function sg_invalidate_token() {
287
  $token = $_GET['sg_token'];
288
  $transient = Sendgrid_Tools::get_transient_sendgrid( $token );
289
 
290
- if ( is_multisite() ) {
291
- $transient = Sendgrid_Tools::get_site_transient_sendgrid( $token );
292
- }
293
-
294
  if ( $token and $transient ) {
295
- if ( is_multisite() ) {
296
- Sendgrid_Tools::set_site_transient_sendgrid( $token, null );
297
- } else {
298
- Sendgrid_Tools::set_transient_sendgrid( $token, null );
299
- }
300
  }
301
  }
302
 
60
  exit();
61
  }
62
 
63
+ $transient = Sendgrid_Tools::get_transient_sendgrid( $token );
64
 
65
  if ( ! $transient or
66
  ! is_array( $transient ) or
82
  $page = Sendgrid_Tools::get_mc_signup_confirmation_page_url();
83
 
84
  if ( $page == false ) {
85
+ Sendgrid_Tools::set_transient_sendgrid( $token, null );
86
+
 
 
 
87
  wp_redirect( 'sg-subscription-success' );
88
  exit();
89
  }
128
 
129
  $token = Sendgrid_OptIn_API_Endpoint::generate_email_token( $email, $first_name, $last_name );
130
 
131
+ $transient = Sendgrid_Tools::get_transient_sendgrid( $token );
132
 
133
  if ( $transient and isset( $transient['email'] ) and ! $from_settings ) {
134
  return false;
135
  }
136
 
137
+ if ( false == Sendgrid_Tools::set_transient_sendgrid( $token,
138
+ array(
139
+ 'email' => $email,
140
+ 'first_name' => $first_name,
141
+ 'last_name' => $last_name ),
142
+ 24 * 60 * 60 ) and ! $from_settings and $transient ) {
143
+ return false;
 
 
 
 
 
 
 
 
 
144
  }
145
 
146
  $confirmation_link = site_url() . '/?__sg_api=1&token=' . $token;
181
  $token = $_GET['sg_token'];
182
  $transient = Sendgrid_Tools::get_transient_sendgrid( $token );
183
 
 
 
 
 
184
  if ( ! $transient ||
185
  ! is_array( $transient ) ||
186
  ! isset( $transient['first_name'] ) )
207
  $token = $_GET['sg_token'];
208
  $transient = Sendgrid_Tools::get_transient_sendgrid( $token );
209
 
 
 
 
 
210
  if ( ! $transient or
211
  ! is_array( $transient ) or
212
  ! isset( $transient['last_name'] ) )
233
  $token = $_GET['sg_token'];
234
  $transient = Sendgrid_Tools::get_transient_sendgrid( $token );
235
 
 
 
 
 
236
  if ( ! $transient or
237
  ! is_array( $transient ) or
238
  ! isset( $transient['email'] ) )
263
  $token = $_GET['sg_token'];
264
  $transient = Sendgrid_Tools::get_transient_sendgrid( $token );
265
 
 
 
 
 
266
  if ( $token and $transient ) {
267
+ Sendgrid_Tools::set_transient_sendgrid( $token, null );
 
 
 
 
268
  }
269
  }
270
 
lib/class-sendgrid-tools.php CHANGED
@@ -5,10 +5,11 @@ class Sendgrid_Tools
5
  const CACHE_GROUP = "sendgrid";
6
  const CHECK_CREDENTIALS_CACHE_KEY = "sendgrid_credentials_check";
7
  const CHECK_API_KEY_CACHE_KEY = "sendgrid_api_key_check";
 
8
  const VALID_CREDENTIALS_STATUS = "valid";
9
 
10
  // used static variable because php 5.3 doesn't support array as constant
11
- public static $allowed_ports = array( Sendgrid_SMTP::TLS, Sendgrid_SMTP::TLS_ALTERNATIVE, Sendgrid_SMTP::SSL );
12
  public static $allowed_auth_methods = array( 'apikey', 'credentials' );
13
  public static $allowed_content_type = array( 'plaintext', 'html' );
14
 
@@ -65,16 +66,11 @@ class Sendgrid_Tools
65
  return false;
66
  }
67
 
68
- if ( $clear_cache and is_multisite() ) {
69
- set_site_transient( self::CHECK_CREDENTIALS_CACHE_KEY, null );
70
- } elseif ( $clear_cache ) {
71
- set_transient( self::CHECK_CREDENTIALS_CACHE_KEY, null );
72
  }
73
 
74
- $valid_username_password = get_transient( self::CHECK_CREDENTIALS_CACHE_KEY );
75
- if ( is_multisite() ) {
76
- $valid_username_password = get_site_transient( self::CHECK_CREDENTIALS_CACHE_KEY );
77
- }
78
 
79
  if ( self::VALID_CREDENTIALS_STATUS == $valid_username_password ) {
80
  return true;
@@ -95,11 +91,7 @@ class Sendgrid_Tools
95
  return false;
96
  }
97
 
98
- if ( is_multisite() ) {
99
- set_site_transient( self::CHECK_CREDENTIALS_CACHE_KEY, self::VALID_CREDENTIALS_STATUS, 2 * 60 * 60 );
100
- } else {
101
- set_transient( self::CHECK_CREDENTIALS_CACHE_KEY, self::VALID_CREDENTIALS_STATUS, 2 * 60 * 60 );
102
- }
103
 
104
  return true;
105
  }
@@ -163,16 +155,11 @@ class Sendgrid_Tools
163
  return false;
164
  }
165
 
166
- if ( $clear_cache and is_multisite() ) {
167
- set_site_transient( self::CHECK_API_KEY_CACHE_KEY, null );
168
- } elseif ( $clear_cache ) {
169
- set_transient( self::CHECK_API_KEY_CACHE_KEY, null );
170
  }
171
 
172
- $valid_apikey = get_transient( self::CHECK_API_KEY_CACHE_KEY );
173
- if ( is_multisite() ) {
174
- $valid_apikey = get_site_transient( self::CHECK_API_KEY_CACHE_KEY );
175
- }
176
 
177
  if ( self::VALID_CREDENTIALS_STATUS == $valid_apikey ) {
178
  return true;
@@ -189,11 +176,7 @@ class Sendgrid_Tools
189
  return false;
190
  }
191
 
192
- if ( is_multisite() ) {
193
- set_site_transient( self::CHECK_API_KEY_CACHE_KEY, self::VALID_CREDENTIALS_STATUS, 2 * 60 * 60 );
194
- } else {
195
- set_transient( self::CHECK_API_KEY_CACHE_KEY, self::VALID_CREDENTIALS_STATUS, 2 * 60 * 60 );
196
- }
197
 
198
  return true;
199
  }
@@ -1320,15 +1303,35 @@ class Sendgrid_Tools
1320
  /**
1321
  * Check apikey stats permissions
1322
  *
1323
- * @param string $apikey sendgrid apikey
 
1324
  *
1325
  * @return bool
1326
  */
1327
- public static function check_api_key_stats( $apikey )
1328
  {
 
 
 
 
 
 
 
 
 
 
 
 
1329
  $required_scopes = array( 'stats.read', 'categories.stats.read', 'categories.stats.sums.read' );
1330
 
1331
- return Sendgrid_Tools::check_api_key_scopes( $apikey, $required_scopes );
 
 
 
 
 
 
 
1332
  }
1333
 
1334
  /**
@@ -1471,26 +1474,13 @@ class Sendgrid_Tools
1471
  public static function set_transient_sendgrid( $transient, $value, $expiration = 0 ) {
1472
  $old_cache_value = wp_using_ext_object_cache();
1473
  wp_using_ext_object_cache( false );
1474
- $set_transient_result = set_transient( $transient, $value, $expiration );
1475
- wp_using_ext_object_cache( $old_cache_value );
1476
 
1477
- return $set_transient_result;
1478
- }
 
 
 
1479
 
1480
- /**
1481
- * Set/update the value of a site transient using database.
1482
- *
1483
- * @param string $transient Transient name. Expected to not be SQL-escaped. Must be
1484
- * 172 characters or fewer in length.
1485
- * @param mixed $value Transient value. Must be serializable if non-scalar.
1486
- * Expected to not be SQL-escaped.
1487
- * @param int $expiration Optional. Time until expiration in seconds. Default 0 (no expiration).
1488
- * @return bool False if value was not set and true if value was set.
1489
- */
1490
- public static function set_site_transient_sendgrid( $transient, $value, $expiration = 0 ) {
1491
- $old_cache_value = wp_using_ext_object_cache();
1492
- wp_using_ext_object_cache( false );
1493
- $set_transient_result = set_site_transient( $transient, $value, $expiration );
1494
  wp_using_ext_object_cache( $old_cache_value );
1495
 
1496
  return $set_transient_result;
@@ -1505,28 +1495,16 @@ class Sendgrid_Tools
1505
  * @param string $transient Transient name. Expected to not be SQL-escaped.
1506
  * @return mixed Value of transient.
1507
  */
1508
- function get_transient_sendgrid( $transient ) {
1509
  $old_cache_value = wp_using_ext_object_cache();
1510
  wp_using_ext_object_cache( false );
1511
- $value = get_transient( $transient );
1512
- wp_using_ext_object_cache( $old_cache_value );
1513
-
1514
- return $value;
1515
- }
 
1516
 
1517
- /**
1518
- * Get the value of a site transient from database.
1519
- *
1520
- * If the transient does not exist, does not have a value, or has expired,
1521
- * then the return value will be false.
1522
- *
1523
- * @param string $transient Transient name. Expected to not be SQL-escaped.
1524
- * @return mixed Value of transient.
1525
- */
1526
- function get_site_transient_sendgrid( $transient ) {
1527
- $old_cache_value = wp_using_ext_object_cache();
1528
- wp_using_ext_object_cache( false );
1529
- $value = get_site_transient( $transient );
1530
  wp_using_ext_object_cache( $old_cache_value );
1531
 
1532
  return $value;
5
  const CACHE_GROUP = "sendgrid";
6
  const CHECK_CREDENTIALS_CACHE_KEY = "sendgrid_credentials_check";
7
  const CHECK_API_KEY_CACHE_KEY = "sendgrid_api_key_check";
8
+ const CHECK_API_KEY_STATS_CACHE_KEY = "sendgrid_api_key_stats_check";
9
  const VALID_CREDENTIALS_STATUS = "valid";
10
 
11
  // used static variable because php 5.3 doesn't support array as constant
12
+ public static $allowed_ports = array( Sendgrid_SMTP::TLS, Sendgrid_SMTP::TLS_ALTERNATIVE, Sendgrid_SMTP::SSL, Sendgrid_SMTP::TLS_ALTERNATIVE_2 );
13
  public static $allowed_auth_methods = array( 'apikey', 'credentials' );
14
  public static $allowed_content_type = array( 'plaintext', 'html' );
15
 
66
  return false;
67
  }
68
 
69
+ if ( $clear_cache ) {
70
+ self::set_transient_sendgrid( self::CHECK_CREDENTIALS_CACHE_KEY, null );
 
 
71
  }
72
 
73
+ $valid_username_password = self::get_transient_sendgrid( self::CHECK_CREDENTIALS_CACHE_KEY );
 
 
 
74
 
75
  if ( self::VALID_CREDENTIALS_STATUS == $valid_username_password ) {
76
  return true;
91
  return false;
92
  }
93
 
94
+ self::set_transient_sendgrid( self::CHECK_CREDENTIALS_CACHE_KEY, self::VALID_CREDENTIALS_STATUS, 2 * 60 * 60 );
 
 
 
 
95
 
96
  return true;
97
  }
155
  return false;
156
  }
157
 
158
+ if ( $clear_cache ) {
159
+ self::set_transient_sendgrid( self::CHECK_API_KEY_CACHE_KEY, null );
 
 
160
  }
161
 
162
+ $valid_apikey = self::get_transient_sendgrid( self::CHECK_API_KEY_CACHE_KEY );
 
 
 
163
 
164
  if ( self::VALID_CREDENTIALS_STATUS == $valid_apikey ) {
165
  return true;
176
  return false;
177
  }
178
 
179
+ self::set_transient_sendgrid( self::CHECK_API_KEY_CACHE_KEY, self::VALID_CREDENTIALS_STATUS, 2 * 60 * 60 );
 
 
 
 
180
 
181
  return true;
182
  }
1303
  /**
1304
  * Check apikey stats permissions
1305
  *
1306
+ * @param string $apikey sendgrid apikey
1307
+ * @param bool $clear_cache true to not use cache
1308
  *
1309
  * @return bool
1310
  */
1311
+ public static function check_api_key_stats( $apikey, $clear_cache = false )
1312
  {
1313
+ // clear cache
1314
+ if ( $clear_cache ) {
1315
+ self::set_transient_sendgrid( self::CHECK_API_KEY_STATS_CACHE_KEY, null );
1316
+ }
1317
+
1318
+ // get info from cache
1319
+ $valid_apikey_stats = self::get_transient_sendgrid( self::CHECK_API_KEY_STATS_CACHE_KEY );
1320
+
1321
+ if ( self::VALID_CREDENTIALS_STATUS == $valid_apikey_stats ) {
1322
+ return true;
1323
+ }
1324
+
1325
  $required_scopes = array( 'stats.read', 'categories.stats.read', 'categories.stats.sums.read' );
1326
 
1327
+ $check_scopes = Sendgrid_Tools::check_api_key_scopes( $apikey, $required_scopes );
1328
+
1329
+ // set cache
1330
+ if ( $check_scopes ) {
1331
+ self::set_transient_sendgrid( self::CHECK_API_KEY_STATS_CACHE_KEY, self::VALID_CREDENTIALS_STATUS, 2 * 60 * 60 );
1332
+ }
1333
+
1334
+ return $check_scopes;
1335
  }
1336
 
1337
  /**
1474
  public static function set_transient_sendgrid( $transient, $value, $expiration = 0 ) {
1475
  $old_cache_value = wp_using_ext_object_cache();
1476
  wp_using_ext_object_cache( false );
 
 
1477
 
1478
+ if ( ! is_multisite() || ( is_multisite() and ! is_main_site() and get_option( 'sendgrid_can_manage_subsite' ) ) ) {
1479
+ $set_transient_result = set_transient( $transient, $value, $expiration );
1480
+ } else {
1481
+ $set_transient_result = set_site_transient( $transient, $value, $expiration );
1482
+ }
1483
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1484
  wp_using_ext_object_cache( $old_cache_value );
1485
 
1486
  return $set_transient_result;
1495
  * @param string $transient Transient name. Expected to not be SQL-escaped.
1496
  * @return mixed Value of transient.
1497
  */
1498
+ public static function get_transient_sendgrid( $transient ) {
1499
  $old_cache_value = wp_using_ext_object_cache();
1500
  wp_using_ext_object_cache( false );
1501
+
1502
+ if ( ! is_multisite() || ( is_multisite() and ! is_main_site() and get_option( 'sendgrid_can_manage_subsite' ) ) ) {
1503
+ $value = get_transient( $transient );
1504
+ } else {
1505
+ $value = get_site_transient( $transient );
1506
+ }
1507
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1508
  wp_using_ext_object_cache( $old_cache_value );
1509
 
1510
  return $value;
lib/sendgrid/class-sendgrid-smtp.php CHANGED
@@ -7,6 +7,7 @@ class Sendgrid_SMTP implements Sendgrid_Send {
7
  //the available ports
8
  const TLS = 587;
9
  const TLS_ALTERNATIVE = 25;
 
10
  const SSL = 465;
11
 
12
  //the list of port instances, to be recycled
7
  //the available ports
8
  const TLS = 587;
9
  const TLS_ALTERNATIVE = 25;
10
+ const TLS_ALTERNATIVE_2 = 2525;
11
  const SSL = 465;
12
 
13
  //the list of port instances, to be recycled
readme.txt CHANGED
@@ -4,7 +4,7 @@ Donate link: http://sendgrid.com/
4
  Tags: email, email reliability, email templates, sendgrid, smtp, transactional email, wp_mail,email infrastructure, email marketing, marketing email, deliverability, email deliverability, email delivery, email server, mail server, email integration, cloud email
5
  Requires at least: 4.2
6
  Tested up to: 4.7
7
- Stable tag: 1.10.6
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
@@ -256,6 +256,9 @@ The settings for all sites in the network can be configured only by the Network
256
 
257
  == Changelog ==
258
 
 
 
 
259
  = 1.10.6 =
260
  * Fixed logos and fonts on Stats page
261
  = 1.10.5 =
@@ -397,6 +400,9 @@ The settings for all sites in the network can be configured only by the Network
397
 
398
  == Upgrade notice ==
399
 
 
 
 
400
  = 1.10.6 =
401
  * Fixed logos and fonts on Stats page
402
  = 1.10.5 =
4
  Tags: email, email reliability, email templates, sendgrid, smtp, transactional email, wp_mail,email infrastructure, email marketing, marketing email, deliverability, email deliverability, email delivery, email server, mail server, email integration, cloud email
5
  Requires at least: 4.2
6
  Tested up to: 4.7
7
+ Stable tag: 1.10.7
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
256
 
257
  == Changelog ==
258
 
259
+ = 1.10.7 =
260
+ * Add port 2525 for SMTP
261
+ * Use cache for stats widget on dashboard
262
  = 1.10.6 =
263
  * Fixed logos and fonts on Stats page
264
  = 1.10.5 =
400
 
401
  == Upgrade notice ==
402
 
403
+ = 1.10.7 =
404
+ * Add port 2525 for SMTP
405
+ * Use cache for stats widget on dashboard
406
  = 1.10.6 =
407
  * Fixed logos and fonts on Stats page
408
  = 1.10.5 =
view/sendgrid_settings_general.php CHANGED
@@ -58,6 +58,7 @@
58
  <select name="sendgrid_port" id="sendgrid_port" <?php disabled( $is_env_port ); ?>>
59
  <option value="<?php echo SendGrid_SMTP::TLS ?>" id="tls" <?php echo ( ( SendGrid_SMTP::TLS == $port ) or (! $port ) ) ? 'selected' : '' ?>><?php _e( SendGrid_SMTP::TLS ) ?></option>
60
  <option value="<?php echo SendGrid_SMTP::TLS_ALTERNATIVE ?>" id="tls_alt" <?php echo ( SendGrid_SMTP::TLS_ALTERNATIVE == $port ) ? 'selected' : '' ?>><?php _e( SendGrid_SMTP::TLS_ALTERNATIVE ) ?></option>
 
61
  <option value="<?php echo SendGrid_SMTP::SSL ?>" id="ssl" <?php echo ( SendGrid_SMTP::SSL == $port ) ? 'selected' : '' ?>><?php _e( SendGrid_SMTP::SSL ) ?></option>
62
  </select>
63
  </td>
58
  <select name="sendgrid_port" id="sendgrid_port" <?php disabled( $is_env_port ); ?>>
59
  <option value="<?php echo SendGrid_SMTP::TLS ?>" id="tls" <?php echo ( ( SendGrid_SMTP::TLS == $port ) or (! $port ) ) ? 'selected' : '' ?>><?php _e( SendGrid_SMTP::TLS ) ?></option>
60
  <option value="<?php echo SendGrid_SMTP::TLS_ALTERNATIVE ?>" id="tls_alt" <?php echo ( SendGrid_SMTP::TLS_ALTERNATIVE == $port ) ? 'selected' : '' ?>><?php _e( SendGrid_SMTP::TLS_ALTERNATIVE ) ?></option>
61
+ <option value="<?php echo SendGrid_SMTP::TLS_ALTERNATIVE_2 ?>" id="tls_alt_2" <?php echo ( SendGrid_SMTP::TLS_ALTERNATIVE_2 == $port ) ? 'selected' : '' ?>><?php _e( SendGrid_SMTP::TLS_ALTERNATIVE_2 ) ?></option>
62
  <option value="<?php echo SendGrid_SMTP::SSL ?>" id="ssl" <?php echo ( SendGrid_SMTP::SSL == $port ) ? 'selected' : '' ?>><?php _e( SendGrid_SMTP::SSL ) ?></option>
63
  </select>
64
  </td>
wpsendgrid.php CHANGED
@@ -3,7 +3,7 @@
3
  Plugin Name: SendGrid
4
  Plugin URI: http://wordpress.org/plugins/sendgrid-email-delivery-simplified/
5
  Description: Email Delivery. Simplified. SendGrid's cloud-based email infrastructure relieves businesses of the cost and complexity of maintaining custom email systems. SendGrid provides reliable delivery, scalability and real-time analytics along with flexible APIs that make custom integration a breeze.
6
- Version: 1.10.6
7
  Author: SendGrid
8
  Author URI: http://sendgrid.com
9
  Text Domain: sendgrid-email-delivery-simplified
3
  Plugin Name: SendGrid
4
  Plugin URI: http://wordpress.org/plugins/sendgrid-email-delivery-simplified/
5
  Description: Email Delivery. Simplified. SendGrid's cloud-based email infrastructure relieves businesses of the cost and complexity of maintaining custom email systems. SendGrid provides reliable delivery, scalability and real-time analytics along with flexible APIs that make custom integration a breeze.
6
+ Version: 1.10.7
7
  Author: SendGrid
8
  Author URI: http://sendgrid.com
9
  Text Domain: sendgrid-email-delivery-simplified