Correo no enviado cuando configuro los encabezados HTML

2
$subject = get_the_title(); 
$sender_name = get_bloginfo('name');
$blog_url = get_bloginfo('url');

$to      = 'myemail@mydomainname.com';
$subject = 'the subject';
$message = 'hello';
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= 'From: '.$sender_name.' <no-reply@'.$blog_url.'>' . "\r\n";

$headersssssssssssss = 'From: webmaster@example.com' . "\r\n" .
    'Reply-To: webmaster@example.com' . "\r\n" .
    'Content-type: text/html; charset=iso-8859-1' . "\r\n" .
    'X-Mailer: PHP/' . phpversion();

Cuando uso la variable $headersssssssssssss como parámetro en la función mail() , funciona y envía un correo electrónico.
Pero cuando uso $headers como parámetro, no lo hace.

Nota: Ya he intentado usar wp_mail en su lugar, con los mismos resultados.

if( mail($to, $subject, $message, $headersssssssssssss) )
{
    echo '<script>alert("mail sent success!");</script>';
} else {
    echo '<script>alert("mail where not sent");</script>';
} 

exit;
    
pregunta Rameez SOOMRO 30.04.2013 - 13:01

1 respuesta

4

Existe la función wp_mail() en WordPress. Los encabezados deben agregarse como matriz sin arrastrar \n\r o similar.

Ejemplo

wp_mail(
    'test@example.com',
    'Hello World!',
    'Just saying...',
    array(
        'MIME-Version: 1.0',
        'Content-type: text/html; charset=iso-8859-1',
        sprintf(
            'From: %s <no-reply@%s>',
            get_bloginfo('name'),
            site_url()
        ),
        sprintf( 'X-Mailer: PHP/%s', phpversion() ),
     )
);

Para cambiar el tipo de contenido, también puede utilizar un filtro:

<?php
/* Plugin Name: WP Mail Content Type text/html */
function wpse_97789_mail_contenttype( $content_type )
{
    remove_filter( current_filter(), __FUNCTION__ );
    return 'text/html';
}

// Then, whereever you need it, just add the filter before calling the function
// It removes itself after firing once
add_filter( 'wp_mail_content_type', 'wpse_97789_mail_contenttype' );
wp_mail(
    'test@example.com',
    'Hello World!',
    'Just saying...',
    array(
        'MIME-Version: 1.0',
        sprintf(
            'From: %s <no-reply@%s>',
            get_bloginfo('name'),
            site_url()
        ),
        sprintf( 'X-Mailer: PHP/%s', phpversion() ),
    )
);
    
respondido por el kaiser 30.04.2013 - 18:19

Lea otras preguntas en las etiquetas