Plugin Email-reminder

WordPress PoradnaKategorie dotazu: PluginyPlugin Email-reminder
Hynek zeptal se před 12 měsíci

Dobrý den,
našel jsem si plugin, který umí v určitý čas odeslat na zadanou adresu informační mail. Vše funguje, ale obsah mailu přijde v tomto tvaru

<p>This message is a reminder created on Friday, February 2, 2018</p>
<p><strong>[/b]REMINDER:[b]</strong><br />
Reminder</p><br />
<p>This
reminder was sent using <a
href="http://pogidude.com/email-reminder/">Email Reminder
plugin</a> by <a href="http://pogidude.com/about/">Pogidude
Web Studio</a></p

Anglickou verzi vím jak přeložit, ale nevím jak odstranit html značky z těla mailu.
Zde je nejspíše asi obsah souboru kde se tvoří tělo mailu.

<?php

class PDER{

   /**
    * Get Ereminders
    *
 
  * Selects all 'ereminders' custom post types from the 'posts' table
whose 'post_date' is less than $date and 'post_status' = draft returns
rows as a numerically indexed array of objects. Uses
$wpdb->get_results() function to fetch the results from the database.
    *
    * @param string $date date in YYYY-MM-DD H:i:s format. Defaults to current local time
    * @param string $status draft|publish. corresponds to scheduled and sent reminders respectively
    * @return array numerically indexed array of row objects
    */
   public function get_ereminders( $date = '', $status = 'draft' ) {
      global $wpdb;
      
      if( $date == '' ){
         $date = current_time( 'mysql',0 );
      }
      
      if( $status == 'sent' )
         $status = 'publish';
      elseif( $status == 'scheduled' )
         $status = 'draft';
      
      $ereminders = $wpdb->get_results( $wpdb->prepare("
         SELECT *
         FROM {$wpdb->posts}
         WHERE post_date < %s
            AND post_type = 'ereminder'
            AND post_status = %s
         ORDER BY post_date ASC
      ", $date, $status) );
      
      return $ereminders;
   }//get_ereminders
   
   /**
    * Send Ereminders
    */
   public static function send_ereminders(){

      
   
   
   
   
      //credits
 
 $credits = sprintf(__('This reminder was sent using <a
href="%s">Email Reminder plugin</a> by <a
href="%s">Pogidude
Web Studio</a>', 'email-reminder'), 'http://pogidude.com/email-reminder/', 'http://pogidude.com/about/');
      
      //get ereminders
      $pd = new PDER;
      $ereminders = $pd->get_ereminders();
      
   foreach( $ereminders as $ereminder ){
      
         $subject = __('[Reminder] ', 'email-reminder') . $ereminder->post_title;
         $to = $ereminder->post_excerpt;
         
         //use the email of the user who scheduled the reminder
         $author = get_userdata( $ereminder->post_author );
         $author_email = $author->user_email;

         $headers =    __('From: Email Reminder', 'email-reminder') . "<{$author_email}>\r\n" . "Content-Type:
         text/html;\r\n";
         
         $creation_date = date( 'l, F j, Y', strtotime( $ereminder->post_date ) );
         $message = "<p>" . sprintf(__('This message is a reminder created on %s', 'email-reminder'),
               $creation_date) .
                    "</p>\n";
         $message .= '<p><strong>' . __('REMINDER:', 'email-reminder') . "</strong><br />\n";
         $message .= $ereminder->post_content . "</p><br />\n";
         $message .= "<p>{$credits}</p>";
         
         $email_result = wp_mail( $to, $subject, $message, $headers );
 
       //$email_result = wp_mail( 'ryannmicua@gmail.com', 'Test
Reminder', 'message', 'From: Email Reminder
<ryannmicua@gmail.com>' );
         
         
         if( $email_result ){//wp_mail() processed the request successfully
            //set post to 'publish' or delete the post
 
          $args = array( 'ID' => $ereminder->ID, 'post_status'
=> 'publish', 'post_date' => $ereminder->post_date,
'post_date_gmt' => $ereminder->post_date_gmt, 'post_modified'
=> current_time('mysql',0), 'post_modified_gmt' =>
current_time('mysql',1) );
            
            wp_update_post( $args );
            //wp_delete_post( $ereminder->ID );
         }
         
      }
   }
   
}

Poradí mi někdo jak toto upravit, aby v těle mailu byl normální text bez značek
Děkuji Hynek

6 Odpovědi
Zdeněk Vojáček Admin odpověděl před 11 měsíci

Dobrý den Hynku,
spíš než v tomhle bych chybu hledal v hlavičce emailu tam se povoluje HTML. Koukněte se tam kde se to odesílá jestli je tam něco takového ‘Content-Type: text/html; charset=UTF-8’. Popřípadě se podívejte do nastavení pluginu jestli tam někde není povolení HTML v těle emailu.

Zdeněk

Hynek odpověděl před 11 měsíci

Našel jsem toto
$headers = __(‘From: Email Reminder’, ’email-reminder’) . “<{$author_email}>\r\n” . “Content-Type:
text/html;\r\n”;
co přesně zde mám upravit? děkuji

Zdeněk Vojáček Admin odpověděl před 11 měsíci

Tady je asi vše v pořádku protože text/html tam je. Nemůže Vám to dělat emailový klient? Někdy když text obsahuje HTML tak se zablokuje jeho výpis. Zkuste si to poslat na jiný email a otevřít to v jiném klientu. Někdy lze přímo u emailu povolit html. 

Hynek odpověděl před 11 měsíci

Tak vyzkoušel jsem Outlook (android), Thunderbirda, google zobrazení je všude stejný s HTML značkama. Bohužel nastavení pluginu žádné není 🙁 Nebo kdyby věděl o něčem co u umí automaticky v určitý čas odeslat mail s upozorněním.
Děkuji

Zdeněk Vojáček Admin odpověděl před 11 měsíci

Bohužel plugin s podobnou fcí neznám. Navíc tento je hodně starý a tvoří velké bezpečnostní riziko. K čemu ho používáte? Nedal by se nahradit něčím jiným?

Hynek odpověděl před 11 měsíci

Odesílám upomínku mail lidem, kteří mají službu, která se opakuje. Asi to udělám přes google kalendář pokud to půjde.

Vaše odpověď

0 + 3 =

Školení tvorby webu s Divi šablonou pro začátečníky a mírně pokročilé (Praha 7.2.2019)
Tomáš Cirkl

Tomáš Cirkl

WordPress specialista

Blog WPlama.cz píši už více než 3 roky. O WordPress přednáším a pořádám školení. Pro své klienty vytvářím a spravuji webové stránky.