Header Ads Widget

Ticker

6/recent/ticker-posts

Cómo personalizar el método de envío de correo de WordPress

La semana pasada, de repente dejé de recibir notificaciones por correo electrónico en este blog alojado en openshift . Después de leer un poco, supe que los hosts en la nube de uso común, como openshift, aws, etc., generalmente están en la lista negra de la mayoría de los servidores de correo electrónico, por lo que no es una buena idea usarlos para enviar correos.

En cualquier caso, ¿por qué debería depender de mi proveedor de alojamiento para el envío de correo electrónico? Hasta ahora, nunca me había preocupado por cómo funcionaba el envío de correo en wordpress, ya que solía funcionar desde el primer momento. Así que la semana pasada, me levanté los calcetines y decidí poner mi IDE php depurador en un buen trabajo.

Decidí usar mi cuenta de sendgrid para enviar correos. Todo lo que se necesita ahora es llamar al servicio web con las credenciales que han proporcionado. Pero, ¿cómo integrar esto con mi blog de wordpress?

Una vez que localicé dónde está la funcionalidad de envío de correo en el código de WordPress, ¡agregar un nuevo método fue muy fácil! Resulta que wordpress, por defecto, simplemente ejecuta el comando "mail", que normalmente es un enlace simbólico en cajas de Unix que en realidad apunta a / usr / bin / sendmail o algo así. Lo encontré en una función conectable wp_mail () . (ver /wp-includes/pluggable.php ). También supe por el códice que los complementos pueden anular fácilmente las funciones conectables .

Ahora todo lo que tenía que hacer era escribir un pequeño complemento en la carpeta / wp-content / plugins / sendgrid / y anular esta función wp_mail () con lo que quisiera.

¡He aquí! Comencé a recibir notificaciones de todos los comentarios y formularios de contacto llenos, simplemente escribiendo este complemento. Encontré el proceso tan simple y fácil de integrar con wordpress que no pude evitar compartirlo contigo. Aquí están los dos fragmentos de php que necesita colocar en / wp-content / plugins / your-plugin-name / y activarlo. ¡WordPress hará el resto!

(El primero es el archivo php del complemento principal que muestra el complemento en el menú de administración y anula la función wp_mail. El segundo archivo php contiene la función personalizada real que envía correo a través de sendgrid).

wp-content / plugins / sendgrid / myplugin.php:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
dieciséis
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<?php
/**
 * Plugin Name: Sendgrid Plugin
 * Plugin URI:  http://www.prahladyeri.com
 * Description: Mail sending using Sendgrid Web API
 * Version:     0.1
 * Author:      Prahlad Yeri
 * Author URI:  http://www.prahladyeri.com
 * License:     MIT
 */
 
//namespace MailDemo;
require_once('sendgrid.php');
 
add_action( 'init', 'plugin_init' );
 
/**
 * Plugin Name: Prahlad's mail
 * Description: Alternative way to send a mail
 */
if (!function_exists('wp_mail'))
{
    function wp_mail($to, $subject, $message, $headers = '', $attachments = array())
    {
        $sto = '';
        if (is_array($to))
        {
            $sto = implode(',',$to);
        } else {
            $sto = $to;
        }
        sendgridmail('wpadmin@mywebsite.com', $sto, $subject, $message, $headers);
    }
}
 
function plugin_init()
{
}

wp-content / plugins / sendgrid / sendgrid.php:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
dieciséis
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<?php
//wp-content/plugins/sendgrid/sendgrid.php
function sendgridmail($from, $to, $subject, $message, $headers) {
$user='your-sendgrid-username';
$pass='your-sendgrid-password';        
 
$params = array(
'api_user'  => $user,
        'api_key'   => $pass,
        'to'        => $to,
        'subject'   => $subject,
        'html'      => '',
        'text'      => $message,
        'from'      => $from,
      );
 
    $request $url.'api/mail.send.json';
 
    // Generate curl request
    $session = curl_init($request);
    // Tell curl to use HTTP POST
    curl_setopt ($session, CURLOPT_POST, true);
    // Tell curl that this is the body of the POST
    curl_setopt ($session, CURLOPT_POSTFIELDS, $params);
    // Tell curl not to return headers, but do return the response
    curl_setopt($session, CURLOPT_HEADER, false);
    curl_setopt($session, CURLOPT_RETURNTRANSFER, true);
 
    print_r('obtaining the response');
    // obtain response
    $response = curl_exec($session);
    print_r('closing curl session');
    curl_close($session);
 
    // print everything out
    //print_r($response);
}
 
//only for testing:
/*$to      = 'prahladyeri@yahoo.com';
$subject = 'Testemail';
$message = 'It works!!';
echo 'To is: ' + $to;
#wp_mail($to, $subject, $message, array() );
sendgridmail($to, $subject, $message, array());
print_r('Just sent!');*/

Publicar un comentario

0 Comentarios