使用带有 TinyMCE 内联图像的 PHPMailer 发送 HTML 封电子邮件

Sending HTML emails using PHPMailer with TinyMCE inline images

请帮忙!几天来我一直在努力解决这个问题,但我做不到。我正在尝试使用 PHPMailer 发送 HTML 电子邮件。对于 include/insert 内联图像,我使用 TinyMCE 的插件 Responsive FileManager。电子邮件发送成功并显示 HTML 但问题是,TinyMCE 编辑器中的图像没有显示。

下面是我在 TinyMCE 编辑器中收到的带有内联图像的测试电子邮件的屏幕截图。

表单代码如下:

<head>
<script src="../js/tinymce/tinymce.min.js"></script>
<script language="javascript" type="text/javascript">
tinymce.init({ 
    selector:'textarea', 
    menubar: false,
    height: '300px',
    themes: 'modern',
    plugins: [
    'advlist autolink lists link image charmap print preview hr anchor pagebreak',
    'searchreplace wordcount visualblocks visualchars code fullscreen',
    'insertdatetime media nonbreaking save table contextmenu directionality',
    'emoticons template paste textcolor colorpicker textpattern imagetools responsivefilemanager'],
    toolbar: ['undo redo | styleselect | bold italic | forecolor backcolor | imageupload responsivefilemanager',
    'alignleft aligncenter alignright | bullist numlist | outdent indent | table | preview'],     

    external_filemanager_path:'/responsivefilemanager/filemanager/',
    filemanager_title:'Responsive Filemanager',
    external_plugins: { 'filemanager' : '/responsivefilemanager/filemanager/plugin.min.js'}
}); 
</script>
</head>
<body>
    <form action="CascadeFunction.php" method="post" name="cascader" id="cascader" enctype="multipart/form-data">
         <label for="details"><span class="required">*</span>DETAILS</label>
            <textarea name="details" cols="70%" rows="10" id="details"></textarea>
         <input class="btn btn-primary" name="Submit" type="submit" id="submit" value="POST &amp; CASCADE" />
    </form>
</body>

下面是我处理电子邮件的代码 (CascadeFunction.php)。

require_once('../PHPMailer_5.2.1/class.phpmailer.php');
$mail = new PHPMailer();
$subject = "CASCADE: Test Subject Cascade"; 
$msgbody = $upload_name;        
$mail->Subject = "$subject";
$mail->IsHTML(true); // This tells the PhPMailer that the messages uses HTML.
$mail->MsgHTML(str_replace(
    array(
        '%Audience%',
        '%Category%',
        '%Title%',
        '%Type%',
        '%quickDescr%',
        '%details%'
    ), 
    array(
        $Audience,
        $Category,
        $Title,
        $Type,
        $QuickDescr,
        $CascadeDetails
    ), file_get_contents('emailtemplates/email.php')), dirname(__FILE__));
$mail->AddEmbeddedImage('images/LogoWhiteBG.png', 'logo');

注意: $mail->AddEmbeddedImage,图像在电子邮件中正确显示。只有 TinyMCE 编辑器中的图像显示为损坏。

我找到了问题的解决方法。只需在 tinymce.init 中添加这 1 个线性代码,即可修复它。

tinymce.init({ 
    convert_urls : false
});