Replay Email HTML format is not working
-
Check the email screenshot in attached image.
How to resolve this issue?
The page I need help with: [log in to see the link]
-
I have the same problem, I thought I broke something, but it turns out the problem is in the plugin.
Please help me fix it
жаль что до сих пор не решили данную проблему. Сам плагин однозначно хороший!
Line 216 in comment-reply-email.php should be changed from esc_attr to esc_html:
$mail_message = esc_html( $this->options[‘mail_message’] );
corypratt – Did as you wrote. https://i.imgur.com/C1lsA4i.png A critical error occurred on the site and the site stopped opening. https://i.imgur.com/GkS8657.png
The entire ‘mailer’ function in the plugin code needs to be replaced by the following:
function mailer($id, $parent_id, $comment_post_id) { global $wpdb, $user_ID, $userdata; $post = get_post($comment_post_id); if (empty($post)) { unset($post); return false; } if ($this->options['mail_notify'] == 'admin') { $cap = $wpdb->prefix . 'capabilities'; if ((strtolower((string) array_shift(array_keys((array)($userdata->$cap)))) !== 'administrator') && ((int)$post->post_author !== (int)$user_ID)) { unset($post, $cap); return false; } } $pc = get_comment($parent_id); if (empty($pc)) { unset($pc); return false; } if (intval($pc->comment_mail_notify) === 0 && ($this->options['mail_notify'] === 'parent_uncheck' || $this->options['mail_notify'] === 'parent_check')) { unset($pc); return false; } $parent_email = trim($pc->comment_author_email); if (empty($parent_email) || !is_email($parent_email)) { unset($pc, $parent_email); return false; } $cc = get_comment($id); if (empty($cc)) { unset($pc, $cc); return false; } if ($cc->comment_approved != '1') { unset($pc, $cc); return false; } if ($parent_email === trim($cc->comment_author_email)) { //Do not send email if you reply to your own comments unset($pc, $cc); return false; } $mail_subject = sanitize_text_field($this->options['mail_subject']); $mail_subject = str_replace('[blogname]', get_option('blogname'), $mail_subject); $mail_subject = str_replace('[postname]', $post->post_title, $mail_subject); $mail_message = wpautop($this->options['mail_message']); $mail_message = str_replace('[pc_date]', mysql2date(get_option('date_format'), $pc->comment_date), $mail_message); $mail_message = str_replace('[pc_content]', $pc->comment_content, $mail_message); $mail_message = str_replace('[pc_author]', $pc->comment_author, $mail_message); $mail_message = str_replace('[cc_author]', $cc->comment_author, $mail_message); $mail_message = str_replace('[cc_date]', mysql2date(get_option('date_format'), $cc->comment_date), $mail_message); $mail_message = str_replace('[cc_url]', esc_url($cc->comment_url), $mail_message); $mail_message = str_replace('[cc_content]', $cc->comment_content, $mail_message); $mail_message = str_replace('[blogname]', get_option('blogname'), $mail_message); $mail_message = str_replace('[blogurl]', esc_url(get_option('home')), $mail_message); $mail_message = str_replace('[postname]', $post->post_title, $mail_message); $permalink = get_comment_link($parent_id); $mail_message = str_replace('[commentlink]', esc_url($permalink), $mail_message); $wp_email = 'no-reply@' . preg_replace('#^www\.#', '', strtolower($_SERVER['SERVER_NAME'])); $from = "From: \"" . get_option('blogname') . "\" <$wp_email>"; $mail_headers = "$from\nContent-Type: text/html; charset=" . get_option('blog_charset') . "\n"; unset($wp_email, $from, $post, $pc, $cc, $cap, $permalink); $mail_message = convert_smilies($mail_message); $mail_message = apply_filters('comment_notification_text', $mail_message, $id); $mail_subject = apply_filters('comment_notification_subject', $mail_subject, $id); $mail_headers = apply_filters('comment_notification_headers', $mail_headers, $id); wp_mail($parent_email, $mail_subject, $mail_message, $mail_headers); unset($mail_subject, $parent_email, $mail_message, $mail_headers); return true; }
I can confirm that the fix in v1.1 of this plugin is to replace this line:
$mailContent = esc_attr($this->options['mail_message']);
With this:
$mailContent = wpautop($this->options['mail_message']);
And also replace this line:
<textarea name="mail_message" id="mail_message" cols="100%" rows="10" ><?php echo esc_attr($this->options['mail_message']); ?></textarea>
With this:
<textarea name="mail_message" id="mail_message" cols="100%" rows="10" ><?php echo esc_html($this->options['mail_message']); ?></textarea>
Hi, Everybody.
Please check a new released version.
There was an issue with the HTML code view directly in email content starting from version 1.0.4. This problem arose during the implementation of a security update.
I fixed plugin code.
Regards,
Yin.
- The topic ‘Replay Email HTML format is not working’ is closed to new replies.