Bonjour, j'essaie d'envoyer un courrier avec des pièces jointes à l'aide de la fonctionnalité wordpress wp_mail
, mais je ne reçois pas de pièce jointe dans ma boîte aux lettres.
Pouvez-vous s'il vous plaît vérifier mon code ci-dessous et me guider où je me trompe. Vous pouvez voir que je sème l'image en pièce jointe.
<?php
$to = '[email protected]';
$subject = 'WordPress wp_mail';
$message = '
<html>
<body>
<table rules="all" style="border-color: #666;" cellpadding="10">
<tr>Hello WordPress</tr>
</table>
</body>
</html>
';
$attachments = array( 'http://sitename/project/wp-content/plugins/my-plugin/uploads/sample_photo_01.jpg' );
//$attachments = array(WP_CONTENT_DIR . '/uploads/'.$_FILES["myfile"]["name"]);
$headers[] = 'MIME-Version: 1.0' . "\r\n";
$headers[] = 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers[] = 'From: '.get_option( 'blogname' ).' <'.get_option( 'admin_email' ).'>';
wp_mail( $to, $subject, $message, $headers, $attachments );
?>
Merci.
Les pièces jointes doivent toujours utiliser le chemin d'accès absolu au système de fichiers.
De plus, pour changer le Content-Type
de l'e-mail, vous devez utiliser le filtre wp_mail_content_type
.
<?php
function my_custom_email() {
$to = '[email protected]';
$subject = 'WordPress wp_mail';
$message = '
<html>
<body>
<table rules="all" style="border-color: #666;" cellpadding="10">
<tr>Hello WordPress</tr>
</table>
</body>
</html>
';
$attachments = array( WP_PLUGIN_DIR . '/my-plugin/uploads/sample_photo_01.jpg' );
$headers[] = 'From: '.get_option( 'blogname' ).' <'.get_option( 'admin_email' ).'>';
add_filter( 'wp_mail_content_type', 'my_custom_email_content_type' );
return wp_mail( $to, $subject, $message, $headers, $attachments );
}
function my_custom_email_content_type() {
return 'text/html';
}
J'ai placé le code complet dans une fonction afin que le filtre wp_mail_content_type
s'applique uniquement à cet email.
Sources:
http://codex.wordpress.org/Function_Reference/wp_mail
http://codex.wordpress.org/Plugin_API/Filter_Reference/wp_mail_content_type
Vous pouvez essayer ce code
$attachments = array( WP_CONTENT_DIR . '/uploads/file_to_attach.Zip' );
$headers = 'From: My Name <[email protected]>' . "\r\n";
wp_mail('[email protected]', 'subject', 'message', $headers, $attachments );
Je l'obtiens de http://codex.wordpress.org/Function_Reference/wp_mail