C'è un modo per inviare e-mail in formato HTML con la funzione wp_mail () di WordPress?
5 risposta
- voti
-
- 2011-09-06
dalla wp_mail codexpage :
Iltipo di contenutopredefinito è "text/plain" chenon consente l'utilizzo di HTML.Tuttavia,puoiimpostareiltipo di contenuto dell'email utilizzandoilfiltro "wp_mail_content_type".
// In theme's functions.php or plug-in code: function wpse27856_set_content_type(){ return "text/html"; } add_filter( 'wp_mail_content_type','wpse27856_set_content_type' );
from wp_mail codex page:
The default content type is 'text/plain' which does not allow using HTML. However, you can set the content type of the email by using the 'wp_mail_content_type' filter.
// In theme's functions.php or plug-in code: function wpse27856_set_content_type(){ return "text/html"; } add_filter( 'wp_mail_content_type','wpse27856_set_content_type' );
-
Hmm sembra utile.Solo una domanda,qualchemotivoparticolareper cui hai chiamato latuafunzione wpse27856_set_content_type?Hmm sounds useful. Just a question, any particular reason why you named your function wpse27856_set_content_type?
- 2
- 2011-09-06
- racl101
-
No,è solo unnome univocobasato sull'ID di questaparticolare domanda.wpse=wp stachexchange,27856 è l'id di questa domandanell'URL.Lofaccio soloperevitarepotenziali collisioni se lepersone copiano/incollanoil codice da qui.No, it's just a unique name based on the id of this particular question. wpse = wp stachexchange, 27856 is the id of this question in the URL. I just do that to avoid potential collisions if people copy/paste code out of here.
- 18
- 2011-09-06
- Milo
-
Puoi ancheincludere semplicementeiltipo di contenutonelleintestazioni delletueemail.Scopri come lofailplugin Notifly.You can also just include the Content-Type in your email headers. Check out how the Notifly plugin does it.
- 3
- 2011-09-07
- Otto
-
oh sì,ah ah.Chen00b sono.Immagino sia l'id di questopost.oh yeah, ha ha. What a n00b I am. Guess it is the id of this post.
- 0
- 2011-09-07
- racl101
-
L'email dovrebbeessere unfile .txt o unfile .html?Sto usando questometodoma se visualizzo la sorgente è unfile .txte l'immagineincorporatanon vieneelaborata.Should the email be a .txt file or a .html file? I'm using this method but if I view source it is a .txt file and the embedded image is not processed.
- 0
- 2012-07-27
- AlxVallejo
-
@AlxVallejo se staiinviando dafileprobabilmente dovraiprima leggereilfile come stringa.@AlxVallejo if your sending from file you will probably need to read the file as a string first.
- 0
- 2013-01-28
- Blowsie
-
passare leintestazioni è unmetodopiùefficiente rispetto all'aggiunta di un hook.-1passing the headers in is a more efficient method than adding a hook. -1
- 0
- 2016-11-01
- Jeremy
-
@ Jeremy certo,mapassare direttamente leintestazioninon è un'opzionein molti casi,come quandonon èiltuo codice che chiama `wp_mail`.@Jeremy sure, but passing the headers directly is not an option in many cases, like when it's not your code calling `wp_mail`.
- 0
- 2016-11-02
- Milo
-
@Milo Hai ragionemaper questa domanda leintestazioni sono la risposta corretta.@Milo You are correct but for this question the headers are the correct answer.
- 0
- 2016-11-02
- Jeremy
-
Ciòinterromperà l'email di reimpostazione dellapassword,perchéil link di ripristino è racchiusoin <>.This will break your password reset email, because the reset link is wrapped in <>.
- 2
- 2017-10-24
- Simon Josef Kok
-
Questononinterrompenessun altro codice che si aspetta che `wp_mail`inviie-mailin testonormale,piuttosto chee-mail HTML?Doesn't this break any other code that expects `wp_mail` to send plain text email, rather than HTML email?
- 0
- 2019-04-04
- Flimm
-
@SimonJosefKok,se sto leggendo correttamente questo rapporto dibug,ilproblema dell'interruzione delleemail di reimpostazione dellapassword è stato risolto apartire da WordPress 5.4.Sembra che abbiano deciso di rimuovere leparentesi angolari dall'indirizzoe-mail.https://core.trac.wordpress.org/ticket/23578#comment:24@SimonJosefKok, if I'm reading this bug report correctly, the issue of breaking password reset emails is resolved as of WordPress 5.4. Sounds like they decided to remove the angle brackets from the email address. https://core.trac.wordpress.org/ticket/23578#comment:24
- 0
- 2020-02-11
- Mark Berry
-
- 2015-07-26
In alternativa,puoi specificare l'intestazione HTTP Content-Typenelparametro $ headers:
$to = '[email protected]'; $subject = 'The subject'; $body = 'The email body content'; $headers = array('Content-Type: text/html; charset=UTF-8'); wp_mail( $to, $subject, $body, $headers );
As an alternative, you can specify the Content-Type HTTP header in the $headers parameter:
$to = '[email protected]'; $subject = 'The subject'; $body = 'The email body content'; $headers = array('Content-Type: text/html; charset=UTF-8'); wp_mail( $to, $subject, $body, $headers );
-
Funzionameglioin quanto a volte add_filter viene visualizzato come allegato.Grazieper la condivisione!This works better as the add_filter sometimes shows as attachment. Thanks for sharing!
- 4
- 2018-02-17
- deepakssn
-
Questo ègeneralmenteilmodomiglioreperfarlo.La rispostamiglioreinterferirà con altriplugine causeràproblemi.This is the generally best way to-do this. The top answer will interfere with other plugins and cause problems.
- 2
- 2019-12-06
- Alex Standiford
-
- 2015-01-02
Non dimenticare di rimuovereilfiltro deltipo di contenuto dopo aver utilizzato lafunzione wp_mail. Seguendo la denominazione della risposta accettata,dovrestifarlo dopo avereseguito wp_mail:
remove_filter( 'wp_mail_content_type','wpse27856_set_content_type' );
Controlla questoticket qui - Reimpostailtipo di contenutoperevitare conflitti - http://core.trac.wordpress.org/ticket/23578
Don't forget to remove the content type filter after you use the wp_mail function. Following the accepted answer naming you should do this after wp_mail is executed:
remove_filter( 'wp_mail_content_type','wpse27856_set_content_type' );
Check this ticket here - Reset content-type to avoid conflicts -- http://core.trac.wordpress.org/ticket/23578
-
Questo dovrebbeessere un commento,non una risposta,no?This should be a comment, not an answer, no?
- 12
- 2017-07-26
- Bob Diego
-
- 2020-04-05
Un altromodo semplice che condividerò di seguito.Anchetupuoimodellareil corpo deltuomessaggio come desideri.Forse è utileperte.
$email_to = '[email protected]'; $email_subject = 'Email subject'; // <<<EOD it is PHP heredoc syntax $email_body = <<<EOD This is your new <b style="color: red; font-style: italic;">password</b> : {$password} EOD; $headers = ['Content-Type: text/html; charset=UTF-8']; $send_mail = wp_mail( $email_to, $email_subject, $email_body, $headers );
Ulterioriinformazioni sulla sintassi heredoc di PHP https://www.php.net/manual/en/language.types.string.php#language.types.string.syntax.heredoc
Another easy way I'm going to share below. Even you can style your mail body as your wish. Maybe it's helpful for you.
$email_to = '[email protected]'; $email_subject = 'Email subject'; // <<<EOD it is PHP heredoc syntax $email_body = <<<EOD This is your new <b style="color: red; font-style: italic;">password</b> : {$password} EOD; $headers = ['Content-Type: text/html; charset=UTF-8']; $send_mail = wp_mail( $email_to, $email_subject, $email_body, $headers );
More about PHP heredoc syntax https://www.php.net/manual/en/language.types.string.php#language.types.string.syntax.heredoc
-
- 2020-03-05
Usa
ob_start
,perché questoti permetterà di utilizzare variabili/funzioni WP comebloginfoecc.crea unfile PHPe incollailtuo HTMLin quelfile (usa le variabili wp all'interno di quelfilephp senecessario).
Utilizzail codice seguente:
$to = 'Email Address'; $subject = 'Your Subject'; ob_start(); include(get_stylesheet_directory() . '/email-template.php');//Template File Path $body = ob_get_contents(); ob_end_clean(); $headers = array('Content-Type: text/html; charset=UTF-8','From: Test <[email protected]>'); wp_mail( $to, $subject, $body, $headers );
questomanterràiltuo codicepulitoe,grazie a ob_start,risparmieremo ancheiltempo di caricamento delfile.
Use
ob_start
, because this will allow you to use WP variables/functions like bloginfo etc.make a PHP file and paste your HTML in that file(use wp variables inside that php file if needed).
Use the below code:
$to = 'Email Address'; $subject = 'Your Subject'; ob_start(); include(get_stylesheet_directory() . '/email-template.php');//Template File Path $body = ob_get_contents(); ob_end_clean(); $headers = array('Content-Type: text/html; charset=UTF-8','From: Test <[email protected]>'); wp_mail( $to, $subject, $body, $headers );
this will keep your code clean and due to ob_start we will also save the time of loading the file.
Esiste un action_hook o qualcosa di simile chepotrebbe aiutarmi a raggiungere questo obiettivo?
Hoprovato ad aggiungereilmarkupin una variabile di stringa PHPe ho appenainviato un'e-mail con lafunzione
wp_mail()
in questomodo:Ma è apparso cometestonormale?
Qualcheidea?