PhpMyNewsLetter 2.0

Support et annonces PhpMyNewsLetter.

Vous n'êtes pas identifié(e).

Annonce

Pour me permettre de mieux vous aider au mieux, merci d'être le plus précis possible en donnant :
- la version de phpmynewsletter utilisée
- votre hébergement : personnel, dédié, mutualisé
- votre hébergeur (OVH, free, Infomaniak, 1and1,...)
- votre OS : linux, windows
- version de PHP (5.3, 5.6, 7.0, hhvm...)
Toutes les réponses à mes questions qui sont sans retour de votre part seront considérées comme résolues !

#876 Re : Support général » [2.0.4] fusion de listes » 16-11-2016 09:12:06

Durs les travaux ! big_smile
L'intérêt de la fusion de ces listes est de conserver d'une part les listes initiales, et d'autre part de créer une liste complète (temporaire pourquoi pas !) de tous les mails pour une campagne spécifique...

Si ce sont les stats complètes que tu cherches, je pencherais pour un cumul stats à afficher à la demande...

#877 Re : Support général » [2.0.4] fusion de listes » 16-11-2016 09:12:06

Bonjour Johnny,

Réponse tardive, milles excuses.

Fusionner, mixer deux ou plusieurs listes ne sert qu'à mixer (dédoublonnage inclus) les listes des emails.
Chaque liste est maintenue, entretenue individuellement et conserve ses spécificités.

Une liste issue de fusions, mixages, est crée comme une nouvelle liste et aura ses propres spécifictés.
Si une liste A a été épurée par des désinscriptions, les désinscrits ne seront pas ajoutés à la nouvelle liste obtenue.

Voilà voilà... Bien en retard...

#878 Re : Support général » DKIM FAIL si HTML dans envois » 09-11-2016 17:37:43

A noter que c'est compliqué de gérer la balise body en ouverture, car elle peut avoir des règles css appliquée dans la balise...

#879 Re : Support général » DKIM FAIL si HTML dans envois » 09-11-2016 17:37:43

Bonjour,

Je te rassure Skygui, tu n'es pas tout seul !
Mauvaise nouvelle : mon Git m'ennuie avec un conflit sur le fichier install et ma station pro a planté.
Donc réinstallation complète, mais sauvegarde de la machine complète en cours.... Suis très énervé !!!  devil

Toutes tes remarques sont intéressantes, et pour une bonne information, je redonne les send.php et compose.php qui ont changé depuis ce qui est en ligne sur Github :
compose.php (avec les changements en JS ) :

<?php
$subject = ( !empty($_POST['subject']) ) ? $_POST['subject'] : '';
$message = ( !empty($_POST['message']) ) ? $_POST['message'] : '';
$format  = ( !empty($_POST['format']) )  ? $_POST['format']  : '';
$encode  = ( !empty($_POST['encode']) ) ? 'base64'  : '8bit';
switch($op){
    case 'init':
        $newsletter=getConfig($cnx,$list_id,$row_config_globale['table_listsconfig']);
        $newsletter_autosave=getConfig($cnx,$list_id,$row_config_globale['table_sauvegarde']);
        if (!empty($_POST['import_id'])) {
            $import_id  =  $_POST['import_id'];
        }
        $reset  = (!empty($_GET['reset'])&&$_GET['reset']=='true') ? 'true' : 'false';
        $ft  = (!empty($_GET['ft'])) ? $_GET['ft'] : '';
        if(getSubscribersNumbers($cnx,$row_config_globale['table_email'],$list_id)){
            if (isset($import_id) && is_numeric($import_id)) {
                $row = $cnx->query("SELECT date, type, subject, message, list_id FROM "
                    . $row_config_globale['table_archives']." WHERE id='$import_id'")->fetch(PDO::FETCH_ASSOC);
                $textarea = addslashes(@htmlspecialchars($row['message']));
                $subject  = addslashes(@htmlspecialchars($row['subject']));
                $type     = $row['type'];
                $cnx->query("INSERT INTO "
                    . $row_config_globale['table_sauvegarde']."(list_id,subject,textarea,type) VALUES ('$list_id','$subject','$textarea','$type')");
            } elseif(isset($newsletter_autosave['textarea'])&&trim($newsletter_autosave['textarea'])!=''&&$reset=='false') {
                $textarea = $newsletter_autosave['textarea'];
                $type    = 'html';
                $subject = @htmlspecialchars($newsletter_autosave['subject']);
            } else {
                $textarea = addslashes($newsletter['header']."\n\n\n".$newsletter['footer']);
                $subject = @addslashes(htmlspecialchars($newsletter['subject']));
                $type    = 'html';
                $cnx->query("INSERT INTO "
                    . $row_config_globale['table_sauvegarde']."(list_id,subject,textarea,type) VALUES ('$list_id','$subject','$textarea','$type')");
            }
            echo "<form id='mailform' name='mailform' method='post' action='' class='post_message'>";
            echo "<div align='center'><h4 class='alert_info'>".tr("COMPOSE_AND_PREVIEW").".</h4></div>";
            echo '<article class="module width_3_quarter">';
            echo '<header><h3 class="tabs_involved">'.tr("COMPOSE_NEW").'</h3></header>';
            echo tr("COMPOSE_SUBJECT")." : ".tr("RFC_2822")."<br><br>
                <input type='text' name='subject' value=\"".  stripslashes($subject)  
                . "\" size='50' maxlength='255' id='subject' />&nbsp;<span id='chars'>78</span>
                <br><br>".tr("COMPOSE_MSG_BODY")." :";
            /*
            if($ft=="") {
                echo " (<a href='".$_SERVER['PHP_SELF']
                    . "?page=compose&token=$token&list_id=$list_id&ft=else'>".tr("CLICK_TO_COMPOSE_HTML")."</a>)<br><br>";
            } elseif($ft=='else') {
                echo " (<a href='".$_SERVER['PHP_SELF']
                    . "?page=compose&token=$token&list_id=$list_id'>".tr("CLICK_TO_COMPOSE_WITH_EDITOR")."</a>)<br><br>";
            }
            */
            echo "<textarea name='message' id='redac' rows='20' cols='70'>".   stripslashes($textarea)  ."</textarea>";
            echo "<div id='as'><h4 class='alert_info'>".tr("START_INITIALISATION")."...</h4></div><br>&nbsp;</article>";
            echo '<article class="module width_quarter"><div class="sticky-scroll-box">';
            echo '<header><h3>'.tr("ACTIONS").' :</h3></header><div align="center">';
            echo "<input type='button' value='".tr("SAVE_THIS_MESSAGE")."' id='rec' type='button' class='button' />"
                ."<br><br><input type='button' value='".tr("COMPOSE_RESET")."' onClick=\"parent.location='".$_SERVER['PHP_SELF'] 
                ."?page=compose&token=$token&list_id=$list_id&reset=true'\" />"
                ."<br><br><input type='button' value='".tr("COMPOSE_PREVIEW")." &gt;&gt;' onclick='Soumettre()' disabled id='send_preview' />";
            echo "<br><br><input type='checkbox' name='encode' value='base64'><b>".tr("COMPOSE_ENCODE")." ?</b>";
            echo "</div>";
            echo '<header></header>';
            echo '<header><h3>'.tr("ATTACHMENTS").'</h3></header>';
            echo "<div id='pjs'></div>";
            echo "<div align='center'><a href='upload.php?token=$token&list_id=$list_id' class='iframe'>".tr("ADD_ONE_OR_MORE_ATTACHMENT")."</a></div>";
            echo "</div></article>";
            echo "<script>$(function(){function pjs(){ $.ajax({type:\"POST\", url:\"include/pjq.php\", 
                data:\"token=$token&list_id=$list_id\",success:function(data){ $('#pjs').html(data);}});setTimeout(pjs,10000);}pjs();});</script>";
            echo "<input type='hidden' id='type' name='format' value='html' />
            <input type='hidden' name='op' value='preview' />
            <input type='hidden' name='action' value='compose' />
            <input type='hidden' name='page' value='compose' />
            <input type='hidden' id='list_id' name='list_id' value='$list_id' />
            <input type='hidden' id='token' name='token' value='$token' />
            </form>";
            if($ft==""){
                echo "<script src='/".$row_config_globale['path']."js/tinymce/tinymce.min.js'></script>
                    <script>
                    tinymce.init({
                        selector : 'textarea#redac',
                        plugins : [
                            'fullscreen fullpage visualblocks, preview searchreplace print insertdatetime hr',
                            'charmap  anchor code link image paste pagebreak table contextmenu',
                            'filemanager table code media autoresize textcolor emoticons'
                        ],
                        /*toolbar1 : 'insertfile undo redo | bold italic | forecolor colorpicker backcolor | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent',
                        toolbar2 : 'styleselect | fontselect fontsizeselect | emoticons | link image | filemanager | template',*/
                        toolbar1 : 'newdocument,print,|,bold,italic,underline,|,strikethrough,superscript,subscript,|,forecolor,backcolor,|,bullist,numlist,outdent,indent,|,visualchars,visualblocks,|,charmap,|,hr,',
                        toolbar2 : 'table,|,cut,copy,paste,searchreplace,|,blockquote,|,undo,redo,|,link,unlink,anchor,|,image,emoticons,media,|,inserttime,|,preview,fullscreen,code,',
                        toolbar3 : 'styleselect,|,formatselect,|,fontselect,|,fontsizeselect,',
                        style_formats: [
                            {title: 'Open Sans', inline: 'span', styles: { 'font-family':'Open Sans'}},
                            {title: 'Arial', inline: 'span', styles: { 'font-family':'arial'}},
                            {title: 'Book Antiqua', inline: 'span', styles: { 'font-family':'book antiqua'}},
                            {title: 'Comic Sans MS', inline: 'span', styles: { 'font-family':'comic sans ms,sans-serif'}},
                            {title: 'Courier New', inline: 'span', styles: { 'font-family':'courier new,courier'}},
                            {title: 'Georgia', inline: 'span', styles: { 'font-family':'georgia,palatino'}},
                            {title: 'Helvetica', inline: 'span', styles: { 'font-family':'helvetica'}},
                            {title: 'Impact', inline: 'span', styles: { 'font-family':'impact,chicago'}},
                            {title: 'Symbol', inline: 'span', styles: { 'font-family':'symbol'}},
                            {title: 'Tahoma', inline: 'span', styles: { 'font-family':'tahoma'}},
                            {title: 'Terminal', inline: 'span', styles: { 'font-family':'terminal,monaco'}},
                            {title: 'Times New Roman', inline: 'span', styles: { 'font-family':'times new roman,times'}},
                            {title: 'Verdana', inline: 'span', styles: { 'font-family':'Verdana'}}
                        ],
                        templates : [
                            {title: 'Basic',url: '/".$row_config_globale['path']."js/tinymce/templates/basic.html',description: 'MODULE EN TEST !'},
                            {title: 'Hero',url: '/".$row_config_globale['path']."js/tinymce/templates/hero.html',description: 'MODULE EN TEST !'},
                            {title: 'Newsletter',url: '/".$row_config_globale['path']."js/tinymce/templates/newsletter.html',description: 'MODULE EN TEST !'}
                        ],
                        cleanup : true,
                        cleanup_on_startup : true,
                        convert_urls : true,
                        custom_undo_redo_levels : 20,
                        doctype : '<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">',
                        entity_encoding : 'named',
                        external_filemanager_path:'/".$row_config_globale['path']."js/tinymce/plugins/filemanager/',
                        external_plugins: { 'filemanager' : '/".$row_config_globale['path']."js/tinymce/plugins/filemanager/plugin.min.js'},
                        extended_valid_elements: 'pre[*],style[*]',
                        filemanager_title:'Responsive Filemanager' ,
                        fontsize_formats : '8px 9px 10px 11px 12px 13px 14px 18px 24px',
                        forced_root_block : false,
                        force_br_newlines : true,
                        force_p_newlines : false,
                        height : '350',
                        image_advtab: true ,
                        inline_styles : true,
                        language : '".tr("TINYMCE_LANGUAGE")."',
                        relative_urls: false,
                        remove_script_host : false,
                        theme: 'modern',
                        valid_children : '+body[style|section],pre[section|div|p|br|span|img|style|h1|h2|h3|h4|h5],+*[*]',
                        valid_elements : '+*[*]',
                        verify_html : false,
                        menu: {
                            edit: {title: 'Edit', items: 'undo redo | cut copy paste | selectall'},
                            insert: {title: 'Insert', items: 'media image link | pagebreak'},
                            view: {title: 'View', items: 'visualaid'},
                            format: {title: 'Format', items: 'bold italic underline strikethrough superscript subscript | formats | removeformat'},
                            table: {title: 'Table', items: 'inserttable tableprops deletetable | cell row column'},
                            tools: {title: 'Tools', items: 'code'}
                        }
                        /* http://stackoverflow.com/questions/10290121/how-to-prevent-tinymce-from-stripping-the-style-attribute-from-input-element */
                        /* valid_elements : '@[id|class|style|title|dir<ltr?rtl|lang|xml::lang],'
                                + '+body[style],'
                                + 'a[rel|rev|charset|hreflang|tabindex|accesskey|type|name|href|target|title|class],strong/b,em/i,strike,u,'
                                + '#p[style],-ol[type|compact],-ul[type|compact],-li,br,img[longdesc|usemap|src|border|alt=|title|hspace|vspace|width|height|align],-sub,-sup,'
                                + '-blockquote,-table[border=0|cellspacing|cellpadding|width|frame|rules|'
                                + 'height|align|summary|bgcolor|background|bordercolor],-tr[rowspan|width|height|align|valign|bgcolor|background|bordercolor],tbody,thead,tfoot,'
                                + '#td[colspan|rowspan|width|height|align|valign|bgcolor|background|bordercolor|scope],#th[colspan|rowspan|width|height|align|valign|scope],caption,-div,'
                                + '-span,-code,-pre,address,-h1,-h2,-h3,-h4,-h5,-h6,hr[size|noshade],-font[face|size|color],dd,dl,dt,cite,abbr,acronym,del[datetime|cite],ins[datetime|cite],'
                                + 'object[classid|width|height|codebase|*],param[name|value|_value],embed[type|width|height|src|*],map[name],area[shape|coords|href|alt|target],bdo,'
                                + 'button,col[align|char|charoff|span|valign|width],colgroup[align|char|charoff|span|valign|width],dfn,fieldset,form[action|accept|accept-charset|enctype|method],'
                                + 'input[accept|alt|checked|disabled|maxlength|name|readonly|size|src|type|value],'
                                + 'kbd,label[for],legend,noscript,optgroup[label|disabled],option[disabled|label|selected|value],'
                                + 'q[cite],samp,select[disabled|multiple|name|size],small,'
                                + 'textarea[cols|rows|disabled|name|readonly],tt,var,big',*/
                    });
                    var elem=$('#chars');
                    $('#subject').limiter(78,elem);
                    $(document).ready(function() { Si=setInterval(save,10000); });
                    function save(){
                        tinyMCE.triggerSave();
                        var ds=$('#mailform').serialize();
                        $.ajax({
                            type: 'POST',
                            url: 'autosave.php',
                            data: ds,
                            cache: false,
                            success: function(msg) {
                                $('#as').html(msg).show();
                                $('#send_preview').removeAttr('disabled');
                            },
                            error: function() {
                                $('#as').html('<h4 class=alert_error>".tr("UNSAVED_MESSAGE")." !</h4>').show();
                            }
                        });
                    }
                    $('#rec').click(function(){ save(); });
                    </script>";
            } elseif($ft=='else') {
                echo "<script>var elem=$('#chars');$('#subject').limiter(78,elem);
                        $(document).ready(function() { Si=setInterval(save,10000); });
                        function save(){";
                            echo ($ft=='else'?"":"tinyMCE.triggerSave();");
                            echo "
                            $('#as').html('".tr("SAVE_PROCESS")."...').show();
                            var ds=$('#mailform').serialize();
                            $.ajax({
                                type: 'POST',
                                url: 'autosave.php',
                                data: ds,
                                cache: false,
                                success: function(msg) {
                                    $('#as').html(msg).show();
                                },
                                error: function() {
                                    $('#as').html('<h4 class=alert_error>".tr("UNSAVED_MESSAGE")." !</h4>').show();
                                }
                            });
                        }
                        $('#rec').click(function(){ save(); });
                    </script>";
            }
            echo "<script>
            function Soumettre(){
                if ( (document.mailform.subject.value=='') || (document.mailform.message.value=='') )
                    alert('".tr("ERROR_ALL_FIELDS_REQUIRED")."');
                else {
                    document.mailform.submit();
                }
            }
            </script>";
        } else {
            echo "<h4 class='alert_error'>".tr("ERROR_UNABLE_TO_SEND")."</h4>";
        }
    break;
    case "preview":
        $up = @($_GET['up']=='false' ? false : true);
        if($up){
            $cnx->query("UPDATE ".$row_config_globale['table_sauvegarde']." 
                    SET textarea = '".addslashes($message)."',
                        subject='".addslashes($subject)."',
                        type='$format' 
                WHERE list_id='$list_id'");
        }
        $newsletter     = getConfig($cnx,$list_id,$row_config_globale['table_listsconfig']);
        $msg            = getConfig($cnx,$list_id,$row_config_globale['table_sauvegarde']);
        $format         = $msg['type'];
        if(empty($message)){
            $message    = stripslashes($msg['textarea']);
        }
        if(empty($subject)){
            $subject    = stripslashes($msg['subject']);
        }
        $subj           = htmlspecialchars($subject);
        if($format == "html"){
            $msg        = $message;
        } else {
            $msg        = htmlspecialchars($message);
        }
        echo "<form method='get' action='send_preview.php' id='mailform' name='mailform'>";
        echo "<div align='center'><h4 class='alert_info'>".tr("STEP_SEND_PREVIEW", $newsletter['preview_addr']).".</h4></div>";
        echo "<article class='module width_full'><div style='margin:3px;'>";
        echo "Preview for : <a href='' onClick='xx(320);return false;'>iPhone 4/5 (320x480),</a> "
                         . "<a href='' onClick='xx(360);return false;'>Nexus 5 (360x598),</a> "
                         . "<a href='' onClick='xx(375);return false;'>iPhone 6 (375x667),</a> " 
                         . "<a href='' onClick='xx(384);return false;'>Nexus 4 (384x598),</a> " 
                         . "<a href='' onClick='xx(414);return false;'>iPhone 6 Plus (414x736),</a> "
                         . "<a href='' onClick='xx(600);return false;'>Nexus 7 2013 (600x960),</a> "
                         . "<a href='' onClick='xx(750);return false;'>iPhone 6S (750x1334),</a> "
                         . "<a href='' onClick='xx(768);return false;'>iPad 3 (768x1024),</a> "
                         . "<a href='' onClick='xx(800);return false;'>Nexus 10 (800x1280)</a> ";
        echo "</div></article>";
        echo '<article class="module width_3_quarter">';
        echo '<header><h3 class="tabs_involved">'.tr("COMPOSE_PREVIEW_TITLE").' : ' . $subj . '</h3></header>';
        echo "<iframe src='preview.php?list_id=$list_id&token=$token' width='100%' height='650px' style='border:0;' id='_preview'><p>".tr("ERROR_IFRAME")."...</p></iframe></div>";
        echo "<input type='hidden' name='list_id' value='$list_id'>
              <input type='hidden' name='encode' value='$encode'>
              <input type='hidden' name='op' value='send_preview'>
              <input type='hidden' id='token' name='token' value='$token'>";
        echo "</article>";
        echo '<article class="module width_quarter"><div class="sticky-scroll-box">';
        echo '<header><h3>Actions :</h3></header><div align="center">';
        echo "<input type='button' onClick=\"window.location.href='".$_SERVER['PHP_SELF']."?page=compose&token=$token&list_id=$list_id&op=init'\" 
            value=\"".tr("COMPOSE_BACK")."\" />";
        echo "<br><br><input type='submit' value='".tr("COMPOSE_SEND")."  (Mode PREVIEW)' />";
        echo "</div>";
        echo '<header></header>';
        echo '<header><h3>'.tr("ATTACHMENTS").'</h3></header>';
        echo "<div id='pjs'></div>";
        echo "<div align='center'><a href='upload.php?token=$token&list_id=$list_id' class='iframe'>".tr("ADD_ONE_OR_MORE_ATTACHMENT")."</a></div>";
        echo '</article>';
        echo "</form>";
        echo "<script>";
        echo "$(function(){function pjs(){ $.ajax({type:\"POST\", url:\"include/pjq.php\", data:\"token=$token&list_id=$list_id\",success:function(data){ $('#pjs').html(data);}});setTimeout(pjs,10000);}pjs();});";
        echo "</script>";
        echo "<script>
            function Soumettre(){
                document.mailform.submit();
            }
            </script>";
    break;
    case "send_preview":
        $newsletter     = getConfig($cnx,$list_id,$row_config_globale['table_listsconfig']);
        $msg            = getConfig($cnx,$list_id,$row_config_globale['table_sauvegarde']);
        $format         = $msg['type'];
        if(empty($message)){
            $message    = stripslashes($msg['textarea']);
        }
        if(empty($subject)){
            $subject    = stripslashes($msg['subject']);
        }
        $subj           = htmlspecialchars($subject);
        if($format == "html"){
            $msg = $message;
        } else {
            $msg = htmlspecialchars($message);
        }
        $error          = ( empty($_GET['error']) ? "" : $_GET['error'] );
        $encode         = ( !empty($_GET['encode']) && $_GET['encode'] == 'base64' ) ? 'base64'  : '8bit';
        echo '<div class="archmsg">';
        if($error==""){
            echo "<div align='center'><h4 class='alert_success'>".tr("PREVIEW_SEND_OK").".</h4>";
            if(isset($code_mailtester) && $code_mailtester!='') {
                echo "<h4 class='advt alert_success' align='center'><a href='https://www.mail-tester.com/" . $code_mailtester . "' target='_blank'>" 
                    . tr("CHECK_SPAM_SCORE_MAIL_TESTER")."</a></h4>";
            } 
            echo "<h4 class='advt alert_info' align='center'>".tr("PREVIEW_OK")." ?<br>"
                . tr("CLICK_TO_SEND", tr("COMPOSE_SEND")).", ".tr("COMPOSE_ELSE_BACK")."</h4></div>";
        } else {
            echo "<div align='center'><h4 class='alert_error'>Attention ! Le message de preview est en erreur. Motif : "
                . $error ." ! Merci de corriger, puis relancer le message de preview en cliquant ici : <a href='"
                . $_SERVER['PHP_SELF']."?page=compose&op=init&list_id=$list_id&token=$token'>".tr("RE_SEND_PREVIEW")."</a></h4></div>";
        }
        echo '<article class="module width_3_quarter">';
        echo '<header><h3 class="tabs_involved">'.tr("COMPOSE_PREVIEW_TITLE").' :</h3></header>';
        echo "<iframe src='preview.php?list_id=$list_id&token=$token' width='100%' height='400px' style='border:0;'><p>"
            . tr("ERROR_IFRAME")."...</p></iframe>";
        echo "</article>";
        echo '<article class="module width_quarter"><div class="sticky-scroll-box">';
        echo '<header><h3>Actions :</h3></header><div align="center">';
        echo "<br><br><input type='button' value='".tr("COMPOSE_BACK")."' onClick=\"parent.location='"
            . $_SERVER['PHP_SELF']."?page=compose&token=$token&list_id=$list_id&op=preview&up=false&encode=$encode'\" />";
        if($error==""){
            echo "<br><br><input type='button' value='".tr("COMPOSE_SEND")."' class='button' id='SendIt'>";
        } else {
            echo "<h4 class='alert_error'>".tr("STOP_ON_PREVIEW_ERROR")." !</h4>";
        }
        if($type_serveur=='dedicated'&&$exec_available){
        echo "<br><br><form method='post' action=''>
            <input type='submit' value='".tr("SCHEDULE_THIS_SEND")."' />
            <input type='hidden' name='NEWTASK' value='SCHEDULE_NEW_TASK' />
            <input type='hidden' name='list_id' value='$list_id' />
            <input type='hidden' name='encode' value='$encode'>
            <input type='hidden' name='page' value='task' />";
        }
        echo '</div>';
        echo "<script>$(function(){function pjs(){ $.ajax({type:\"POST\", url:\"include/pjq.php\", data:\"token="
            . $token . "&list_id=" . $list_id . "\",success:function(data){ $('#pjs').html(data);}});setTimeout(pjs,10000);}pjs();});
        </script>";
        echo '<header></header>';
        echo '<header><h3>'.tr("ATTACHMENTS").'</h3></header>';
        echo "<div id='pjs'></div>";
        echo "<div align='center'><a href='upload.php?token=$token&list_id=$list_id' class='iframe'>".tr("ADD_ONE_OR_MORE_ATTACHMENT")."</a></div>";
        echo '</article></div>';
        ?>
        <script type="text/javascript">
            $("#SendIt").click(function(){
                $('.advt').hide('slow');
                $('.archmsg').hide('slow');
                $('.button').hide('slow');
                $('html,body').animate({scrollTop:'0px'},500);
                $('#msg').show();
                $('#smail').html("<?php echo tr("PROGRESSION_OF_CURRENT_SEND");?>");
                $(function(){
                    var begin   = 0;
                    var sn      = 0;
                    var step    = '';
                    var pct     = 0;
                    var list_id = <?php echo (($list_id)+0);?>;
                    var token   = '<?php echo $token;?>';
                    var msg_id  = 0;
                    var tts     = 0;
                    var encode  = '<?php echo $encode;?>';
                    function progresspump(){ 
                        $.ajax({
                            url:"send.php",
                            type: "GET",
                            dataType:"json",
                            data:'list_id=' + list_id + '&token=' + token + '&begin=' + begin + '&sn=' + sn + '&step=' + step + '&msg_id=' + msg_id + '&encode=' + encode,
                            success:function(rj){
                                begin = rj.begin;
                                sn    = rj.sn;
                                step  = rj.step;
                                pct   = (rj.pct!=''?rj.pct:0);
                                msg_id= rj.msg_id;
                                tts   = (typeof rj.TTS!='undefined'?rj.TTS:0);
                                $("#pct").css('width',pct+'%');
                                $("#done").html(pct+'%');
                                $("#total_to_send").html(sn);
                                $("#ch_last").html(tts);
                                if(pct > 99.999) {
                                    clearInterval(progresspump);
                                    $("#send_title").text("<?php echo tr("SEND_ENDED");?>...");
                                    $("#all_done").html("<?php echo tr("REDIRECT_NOW");?>...");
                                    $('#smail').html("<?php echo tr("SCHEDULE_END_PROCESS");?>");
                                    setTimeout(function() {
                                        window.location.href='?page=tracking&list_id=<?php echo $list_id;?>&token=<?php echo $token;?>';
                                    },1000);
                                }
                            }
                        });
                        setTimeout(progresspump,5000);
                    }progresspump();
                });
            });
        </script>
        <div id='msg' style='display:none'>
            <article class="module width_full">
            <header><h3 id='send_title'><?php echo tr("PROGRESSION_OF_CURRENT_SEND");?></h3></header>
                <div class="module_content">
                    <article class='stats_graph' style='height:143px;'>
                        <div class='record' style='height:30px;border: 1px solid #9BA0AF;'><div id='pct' class='bar' style='width:0%'></div></div>
                        <h4 id='all_done'></h4>
                    </article>
                    <article class="stats_overview">
                        <div class="overview_today">
                            <p class="overview_day"><?php echo tr("COMPOSE_SENDING");?></p>
                            <p class="overview_count" id='done'>0,00%</p>
                            <p class="overview_type">% <?php echo tr("SENDED");?></p>
                            <p class="overview_count" id='total_to_send'>0</p>
                            <p class="overview_type"><?php echo tr("TOTAL_TO_SEND");?></p>
                        </div>
                        <div class="overview_previous">
                            <p class="overview_day"><?php echo tr("CHRONO");?></p>
                            <p class="overview_count" id='ch_last'>0</p>
                            <p class="overview_type"><?php echo tr("LAST_TIME_SEND");?></p>
                        </div>
                    </article>
                    <div class="clear"></div>
                </div>
            <div id='if' style="height:0;"></div>
            </article>
        </div>
        <?php
    break;
    /*case "done":
        echo "<div align='center' class='info'>".tr("COMPOSE_SENDING")."</div>";
        $error=(empty($_GET['error']) ? "0" : $_GET['error']);
        $errorlog=(empty($_GET['errorlog']) ? "0" : $_GET['errorlog']);
        if($error!=0){
            echo "<h4 class=alert_error>".tr("ERROR_SENDING")."</h4>";
        } else {
            echo "<h4 class=alert_success>".tr("COMPOSE_SENT").".</h4>";
        }
        if($errorlog) {
            echo "<h4 class=alert_error>".tr("ERROR_LOG_CREATE")."</h4>";
        }
        echo "<br><div align='center'><img align='middle' src='css/puce.gif'> <a href='?page=compose&list_id=".$list_id."&token=$token'>".tr("BACK")."</a></div>";
    break;*/
    default :
        echo 'oups !';
    break;
}
?>

et send.php :

<?php
header('Access-Control-Allow-Origin: *');
header('Cache-Control: no-cache, must-revalidate');
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
header('Content-type: application/json');
if(!file_exists("include/config.php")) {
    header("Location:install.php");
    exit;
} else {
    session_start();
    include("_loader.php");
    if(isset($_POST['token'])){$token=$_POST['token'];}elseif(isset($_GET['token'])){$token=$_GET['token'];}else{$token='';}
    if(!tok_val($token)){
        quick_Exit();
        die();
    }
}
$cnx->query("SET NAMES UTF8");
$row_config_globale = $cnx->SqlRow("SELECT * FROM $table_global_config");
(count($row_config_globale)>0)?$r='SUCCESS':$r='';
if($r != 'SUCCESS') {
    include("include/lang/english.php");
    echo "<div class='error'>" . tr($r). "<br>";
    echo "</div>";
    exit;
}
if(empty($row_config_globale['language']))$row_config_globale['language']="english";
include("include/lang/" . $row_config_globale['language']. ".php");
require('include/lib/PHPMailerAutoload.php');
require('include/lib/Html2Text.php');
$step    = (empty($_GET['step']) ? "" : $_GET['step']);
$subject = (!empty($_SESSION['subject'])) ? $_SESSION['subject'] : '';
$message = (!empty($_SESSION['message'])) ? $_SESSION['message'] : '';
$format  = (!empty($_SESSION['format'])) ? $_SESSION['format'] : '';
$list_id = (!empty($_POST['list_id'])) ? (($_POST['list_id'])+0) : '';
$list_id = (!empty($_GET['list_id']) && empty($list_id)) ? (($_GET['list_id'])+0) : (($list_id)+0);
$begin   = (!empty($_POST['begin'])) ? $_POST['begin'] : '';
$begin   = (!empty($_GET['begin']) && empty($begin)) ? (($_GET['begin'])+0) : 0;
$msg_id  = (!empty($_GET['msg_id'])) ? (($_GET['msg_id'])+0) : '';
$sn      = (!empty($_GET['sn'])) ? (($_GET['sn'])+0) : '';
$error   = (!empty($_GET['error'])) ? $_GET['error'] : '';
$encode  = (!empty($_GET['encode'])&&$_GET['encode']=='base64')  ? 'base64' : 'quoted-printable';
switch ($step) {
    case "send":
        $tts = 0;
        $start = microtime(true);
        $dontlog = 0;
        if (!$handler = @fopen('logs/list' . $list_id . '-msg' . $msg_id . '.txt', 'a+')){
            $dontlog = 1;
        }
        $daylog = @fopen('logs/daylog-' . date("Y-m-d") . '.txt', 'a+');
        $limit            = $row_config_globale['sending_limit'];
        $mail             = new PHPMailer();
        $mail->SMTPOptions = array(
            'ssl' => array(
                'verify_peer' => false,
                'verify_peer_name' => false,
                'allow_self_signed' => true
            )
        );
        $mail->CharSet    = $row_config_globale['charset'];
        $mail->ContentType= "text/html";
        //$mail->Encoding   = $encode;
        $mail->PluginDir  = "include/lib/";
        $newsletter       = getConfig($cnx, $list_id, $row_config_globale['table_listsconfig']);
        $mail->From       = $newsletter['from_addr'];
        $mail->FromName   = ( strtoupper($row_config_globale['charset']) == "UTF-8" ? 
                                $newsletter['from_name'] : 
                                    iconv("UTF-8", $row_config_globale['charset'], $newsletter['from_name']) 
                            );
        $addr             = getAddress($cnx, $row_config_globale['table_email'],$list_id,$begin,$limit,$msg_id);
        if ( $type_env == 'dev' ) {
            $daylogmsg        ="LIST_ID : $list_id\tBEGIN : $begin\tLIMIT : $limit\tMSG_ID : $msg_id\n";
            fwrite($daylog, $daylogmsg, strlen($daylogmsg));
        }
        if ( $row_config_globale['sending_method'] != 'php_mail_infomaniak' ) {
            $mail->Sender    = $newsletter['from_addr'];
            $mail->SetFrom($newsletter['from_addr'],$newsletter['from_name']);
        }
        $msg             = get_message($cnx, $row_config_globale['table_archives'], $msg_id);
        $format          = $msg['type'];
        $list_pj = $cnx->query("SELECT * 
            FROM " . $row_config_globale['table_upload']. " 
                WHERE list_id=$list_id 
                AND msg_id=$msg_id 
            ORDER BY id ASC")->fetchAll(PDO::FETCH_ASSOC);
        if(count($list_pj)>0){
            foreach  ($list_pj as $item) {
                $mail->AddAttachment('upload/'.$item['name']);
            }
        }
        $message    = stripslashes($msg['message']);
        $to_replace = array( "  ", "\t", "\n", "\r", "\0", "\x0B", "\xA0" );
        $message    = str_replace( $to_replace , " " , $message );
        $message    = str_replace( "  "," ",$message );
        $subject    = stripslashes( $msg['subject'] );
        if ( $format == "html" ){
            $mail->IsHTML(true);
        }
        $mail->WordWrap = 76;    
        if ( file_exists("DKIM/DKIM_config.php")&&($row_config_globale['sending_method']=='smtp'||$row_config_globale['sending_method']=='php_mail') ) {
            include("DKIM/DKIM_config.php");
            $mail->DKIM_domain     = $DKIM_domain;
            $mail->DKIM_private    = $DKIM_private;
            $mail->DKIM_selector   = $DKIM_selector;
            $mail->DKIM_passphrase = $DKIM_passphrase;
            $mail->DKIM_identity   = $DKIM_identity;
        }
        $to_send = count($addr);
        require_once("include/lib/class.valideMail.php");
        for ($i = 0; $i < $to_send; $i++) {
            $last_id_send = $addr[$i]['id'];
            $cnx->query("UPDATE " . $row_config_globale['table_send_suivi']. " 
                    SET nb_send=nb_send+1,last_id_send=" . $last_id_send . " 
                        WHERE `msg_id`='" . $msg_id. "' AND `list_id`='" . $list_id. "'");
            
            include("include/lib/switch_smtp.php");
            $time_info = "";
            $begintimesend = microtime(true);
            $unsubLink = "";
            $headtrc   = "";
            $body      = "";
            $mail->ClearAllRecipients();
            $mail->ClearCustomHeaders();
            $mail->AddAddress($addr[$i]['email']);
            $mail->XMailer = ' ';
            if ( $row_config_globale['active_tracking'] == '1' ) {
                $trac = "<img style='border:0' src='" . $row_config_globale['base_url'] . $row_config_globale['path'] . "trc.php?i=" .$msg_id. "&h=" 
                      . $addr[$i]['hash'] . "' width='1'  height='1 alt='" . $list_id. "' />";
            } else {
                $trac = "";
            }
            if ( $format == "html" ){
                $headtrc = "<div align='center' style='font-size:10pt;font-family:arial,helvetica,sans-serif;padding-bottom:5px;color:#878e83;'>";
                $headtrc .= tr("READ_ON_LINE", "<a href='" . $row_config_globale['base_url']
                      .$row_config_globale['path']. "online.php?i=$msg_id&list_id=$list_id&email_addr="
                      .$addr[$i]['email']. "&h=" . $addr[$i]['hash']. "'>"). "<br />";
                $headtrc .= tr("ADD_ADRESS_BOOK", $newsletter['from_addr']). "<br />";
                $headtrc .= "<hr noshade='' color='#D4D4D4' width='90%' size='1'></div>";
                if(strpos($message,'<body>')===false) {
                    $message = "<html><head></head><body>" . $headtrc . $message ;
                } else {
                    $message = str_replace( '<body>' , '<body>' . $headtrc , $message );
                }
                $new_url = 'href="' . $row_config_globale['base_url'] . $row_config_globale['path'] .'r.php?m='.$msg_id.'&h='.$addr[$i]['hash'].'&l='.$list_id.'&r=';
                $message = preg_replace_callback(
                    '/href="(http[s]?:\/\/)([^"]+)"/',
                    function($matches) {
                        global $new_url;
                        return $new_url . (urlencode(@$matches[1] . $matches[2])) . '"';
                    },$message);
                $unsubLink = "<br /><div align='center' style='padding-top:10px;font-size:10pt;font-family:arial,helvetica,sans-serif;padding-bottom:10px;color:#878e83;'>
                           <hr noshade='' color='#D4D4D4' width='90%' size='1'>"
                           . tr("UNSUBSCRIBE_LINK", "<a href='" . $row_config_globale['base_url'] . $row_config_globale['path']
                           . "subscription.php?i=$msg_id&list_id=$list_id&op=leave&email_addr=" . $addr[$i]['email'] 
                           . "&h=" . $addr[$i]['hash']. "' style='' target='_blank'>")
                           . "<br /><a href='http://www.phpmynewsletter.com/' style='' target='_blank'>Phpmynewsletter 2.0</a></div></body></html>";
            } else {
                $body = tr("READ_ON_LINE", "<a href='" . $row_config_globale['base_url'].$row_config_globale['path']
                      . "online.php?i=$msg_id&list_id=$list_id&email_addr=" . $addr[$i]['email']. "&h=" . $addr[$i]['hash']. "'>"). "<br />";
                $body .= tr("ADD_ADRESS_BOOK", $newsletter['from_addr']). "<br />";
                $unsubLink = $row_config_globale['base_url'] . $row_config_globale['path'] . "subscription.php?i=" .$msg_id
                           . "&list_id=$list_id&op=leave&email_addr=" . urlencode($addr[$i]['email']). "&h=" . $addr[$i]['hash'];
            }
            $AltBody = new \Html2Text\Html2Text($body.$message.$unsubLink);
            $mail->AltBody = quoted_printable_encode($AltBody->getText());
            $subject = (strtoupper($row_config_globale['charset']) == "UTF-8" ? $subject : iconv("UTF-8", $row_config_globale['charset'], $subject));
            $body = str_replace( '</body>' , $unsubLink . $trac .'</body>', $message );
            $mail->Subject = $subject;
            $mail->Body    = $body;
            $mail->addCustomHeader("List-Unsubscribe",'<'. $row_config_globale['base_url'] . $row_config_globale['path'] 
                  . 'subscription.php?i='.$msg_id.'&list_id='.$list_id.'&op=leave&email_addr=' . $addr[$i]['email'] . '&h=' . $addr[$i]['hash'] . '>');
            @set_time_limit(300);
            $ms_err_info = '';
            if (!$mail->Send()) {
                $cnx->query("UPDATE " . $row_config_globale['table_send']. " 
                                SET error=error+1 
                            WHERE `id_mail`='" . $msg_id. "' 
                                AND `id_list`='" . $list_id. "'");
                $ms_err_info = $mail->ErrorInfo;
                $cnx->query("UPDATE " . $row_config_globale['table_email']. " 
                                SET error='Y',long_desc='" . $cnx->CleanInput($ms_err_info). "',campaign_id='" . $msg_id. "' 
                            WHERE email='" . $addr[$i]['email']. "' 
                                AND list_id='" . $list_id. "'");
                $daylogmsg=date("Y-m-d H:i:s") . " : envoi à " . $addr[$i]['email']. " en erreur $ms_err_info\n";
                fwrite($daylog, $daylogmsg, strlen($daylogmsg));
            } else {
                $cnx->query("UPDATE " . $row_config_globale['table_email']. " 
                                SET campaign_id='" . $msg_id. "' 
                            WHERE email='" . $addr[$i]['email']. "' 
                                AND list_id='" . $list_id. "'");
                $cnx->query("UPDATE " . $row_config_globale['table_send']. " 
                                SET cpt=cpt+1 
                            WHERE `id_mail`='" . $msg_id. "' 
                                AND `id_list`='" . $list_id. "'");
                $ms_err_info = 'OK';
                $daylogmsg=date("Y-m-d H:i:s") . " : envoi à " . $addr[$i]['email']. " OK\n";
                fwrite($daylog, $daylogmsg, strlen($daylogmsg));
            }
            $cnx->query("UPDATE " . $row_config_globale['table_send_suivi']. " 
                        SET nb_send=nb_send+1,last_id_send=" . $addr[$i]['id']. " 
                            WHERE `msg_id`='" . $msg_id. "' AND `list_id`='" . $list_id. "'");
            $endtimesend = microtime(true);
            $time_info = substr(($endtimesend-$begintimesend),0,5);
            $errstr = date("Y-m-d H:i:s"). "\tID : " .$addr[$i]['id'] . "\t" . $time_info . "\t\t " .$ms_err_info. " \t" . $addr[$i]['email'] . "\r\n";
            if (!$dontlog){
                fwrite($handler, $errstr, strlen($errstr));
            }
            $daylogmsg=date("Y-m-d H:i:s") . " : envoi à " . $addr[$i]['email']. " OK\n";
            fwrite($daylog,  $errstr, strlen($errstr));
        }
        $end = microtime(true);
        $tts = substr(($end - $start),0,5);
        $begin=$begin+$limit;
        if ($begin < $sn) {
            $arr=array(
                'step'   => 'send',
                'error'  => $error,
                'begin'  => $begin,
                'list_id'=> $list_id,
                'msg_id' => $msg_id,
                'sn'     => $sn,
                'token'  => $token,
                'pct'    => number_format((($begin/$sn)*100),2),
                'TTS'    => $tts
               );
            echo json_encode($arr);
            $cnx->query("UPDATE " . $row_config_globale['table_send_suivi']. " 
                        SET tts=tts+'" . $tts. "',last_id_send='" . $last_id_send. "',nb_send=nb_send+" . $to_send. " 
                            WHERE list_id='" . $list_id. "' 
                                AND msg_id='" . $msg_id. "'");
        } else {
            $errstr = "------------------------------------------------------------\r\n";
            $errstr .= "Finished at " . date("Y-m-d H:i:s"). "\r\n";
            $errstr .= "============================================================\r\n";
            if (!$dontlog){
                fwrite($handler, $errstr, strlen($errstr));
                fclose($handler);
            }
            $daylogmsg=date("Y-m-d H:i:s") . " : fin globale de l envoi du message $msg_id, sujet \"$subject\", sur liste $list_id\n";
            fwrite($daylog, $daylogmsg, strlen($daylogmsg));
            $arr=array(
                    'step'   => 'send',
                    'error'  => $error,
                    'begin'  => $sn,
                    'list_id'=> $list_id,
                    'msg_id' => $msg_id,
                    'encode' => $encode,
                    'sn'     => $sn,
                    'token'  => $token,
                    'pct'    => 100,
                    'TTS'    => $tts
                   );
            echo json_encode($arr);
        }
        fclose($daylog);
        break;
    default:
        $message = $_SESSION['message'];
        $subject = $_SESSION['subject'];
        $format  = $_SESSION['format'];
        $date    = date("Y-m-d H:i:s");
        $msg_id  = save_message($cnx, $row_config_globale['table_archives'], addslashes($subject), $format, addslashes($message), $date, $list_id);
        $dontlog = 0;
        if (!$handler = @fopen('logs/list' . $list_id . '-msg' . $msg_id . '.txt', 'a+')){
            $dontlog = 1;
        }
        $daylog = @fopen('logs/daylog-' . date("Y-m-d") . '.txt', 'a+');
        $daylogmsg=$date. " : message sauvegardé sous Numéro d'envoi : $msg_id\n";
        fwrite($daylog, $daylogmsg, strlen($daylogmsg));
        $cnx->query("UPDATE " . $row_config_globale['table_upload']. " 
                SET msg_id=" . $msg_id. "
                WHERE list_id=" . $list_id. "
                    AND msg_id=0");
        $daylogmsg="\r\n**********************************************************\r\n" . $date. " : initialisation envoi message $msg_id liste $list_id\n";
        fwrite($daylog, $daylogmsg, strlen($daylogmsg));
        $num    = get_newsletter_total_subscribers($cnx, $row_config_globale['table_email'],$list_id,$msg_id);
        $cnx->query("INSERT into " . $row_config_globale['table_send']. " (`id_mail`, `id_list`, `cpt`) VALUES ('" . $msg_id. "','" . $list_id. "','0')");
        $cnx->query("INSERT into " . $row_config_globale['table_send_suivi']. " (`list_id`, `msg_id`, `total_to_send`) VALUES ('" . $list_id. "','" . $msg_id. "','" . $num. "')");
        $errstr =  "=GLOBAL=ENVIRONNEMENT=======================================\r\n";
        if (version_compare(PHP_VERSION, '5.3.0', '>')) {
            $errstr .= "PHP : " . phpversion(). " " . tr("OK_BTN"). "\r\n";
        } else {
            $errstr .= "PHP : " . phpversion(). " " . tr("INSTALL_OBSOLETE"). "<\r\n";
        }
        if (extension_loaded('imap')) {
            $errstr .= "imap " . tr("OK_BTN"). "\r\n";
        } else {
            $errstr .= "imap " . tr("NOT_FOUND"). "\r\n";
        }
        if (extension_loaded('curl')) {
            $errstr .= "curl " . tr("OK_BTN"). "\r\n";
        } else {
            $errstr .= "curl " . tr("NOT_FOUND"). "\r\n";
        }
        if (is_exec_available()){
            $errstr .= "exec " . tr("OK_BTN"). "\r\n";
        } else {
            $errstr .= "exec " . tr("NOT_FOUND"). "\r\n";
        }
        $errstr .= "============================================================\r\n";
        $errstr .= date("d M Y") . "\r\n";
        $errstr .= "Started at " . date("Y-m-d H:i:s"). "\r\n";
        $errstr .= "N° \t Date \t\t Time \t\t Status \t\t Recipient  \r\n";
        $errstr .= "------------------------------------------------------------\r\n";
        if (!$dontlog){
            fwrite($handler, $errstr, strlen($errstr));
            fclose($handler);
        }
        fwrite($daylog, $errstr, strlen($errstr));
        fclose($daylog);
        DelMsgTemp($cnx, $list_id, $row_config_globale['table_sauvegarde']);
        echo json_encode(
            array(
                'step'    => 'send',
                'error'   => 0,
                'begin'   => 0,
                'list_id' => ( ($list_id)+0 ),
                'msg_id'  => ( ($msg_id)+0 ),
                'encode'  => $encode,
                'sn'      => ( ($num)+0 ),
                'token'   => $token,
                'pct'     => 0)
            );
        break;
}

#880 Re : Vos requêtes » un support ovh vps classic 1 en release 3 c'est possible ? » 09-11-2016 12:59:20

Bonjour Titi,

J'avoue que je ne sais plus trop ce que j'avais fait...
L'idée était de repasser en IPv4, et il fallait donc modifier tout le système.
Une recherche pour t'aider :
https://www.centos.org/forums/viewtopic.php?t=7989
http://linoxide.com/linux-how-to/disabl … dora-rhel/
et
https://wiki.centos.org/FAQ/CentOS7#hea … 67f2fcd8ee

Je sais, c'est une lecture un peu complexe.

Après il faut revoir postfix.

Pour vérifier si ton IP est blacklistée ou pas, :
http://mxtoolbox.com/blacklists.aspx
Note bien ton IP v4 depuis ton manager, et bon courage !

#881 Re : Recensement des bugs par version » [2.0.4] envoi manuel s'arrête en cours de route » 08-11-2016 15:33:59

Parce que archive n'est pas mis à jour des paramètres nécessaires à un envoi.
Je me dépêche...

#882 Re : Support général » DKIM FAIL si HTML dans envois » 09-11-2016 17:37:43

oui, sauf si tu n'as pas 2 fois de head et body.
Vérifie un code source avec l'icône "<>"

#883 Re : Support général » DKIM FAIL si HTML dans envois » 09-11-2016 17:37:43

Bonjour Skygui,

Je vais mettre en ligne cet après midi sur Github la nouvelle version de compose.php et send.php.
Je t'invite à faire une petite pause et je vais te rassurer :
- Ton serveur est trèèèèèès propre, c'est très bien ! (On est voisin d'ailleurs  cool  cool )
- Tes clés sont correctement installées, pas de soucis ! encore un emoticon tiens :  cool
- compose a un bug : en mettant une balise <body>, celle ci n'est pas détectée, et donc dans ton mail (regarde la source), tu as 2 ouvertures fermetures de body et head.... D'où le plantage !


<html><head></head><body><div align=3D'center' style=3D'font-size:10pt;fo=
nt-family:arial,helvetica,sans-serif;padding-bottom:5px;color:#878e83;'>S=
i cet e-mail ne s'affiche pas correctement, veuillez <a href=3D'http://xxxxxxx/online.php?i=3D'=
43&list_id=3D1&email_addr=3Dweb-dx2o2b@m=
ail-tester.com&h=3Df08b4807b3115fd444ec53a4296d81cb'> cliquer ici</a><br =
/>Ajoutez news@kolagui.com &agrave; votre carnet d'adresses pour &ecirc;t=
re s&ucirc;r de recevoir toutes nos newsletters !<br /><hr noshade=3D'' c=
olor=3D'#D4D4D4' width=3D'90%' size=3D'1'></div><!DOCTYPE html> <html> <h=
ead> </head> <body>
bonjour,<br /><br />comment vas tu ?<br /><br />n'h=C3=
=A9site pas a m'appeler salut. </body> </html><br /><br /><div align=3D'c=
enter' style=3D'padding-top:10px;font-size:10pt;font-family:arial,helveti=
ca,sans-serif;padding-bottom:10px;color:#878e83;'>
                               <hr noshade=3D'' color=3D'#D4D4D4' width=3D=
'90%' size=3D'1'>Je ne souhaite plus recevoir la newsletter : <a href=3D'=
http://xxxxxx/subscription.php?i=3D43&list_id=3D1&op=3Dleave=
&email_addr=3Dweb-dx2o2b@mail-tester.com&h=3Df08b4807b3115fd444ec53a4296d=
81cb' style=3D'' target=3D'_blank'> d=C3=A9sinscription</a><br /></div></=
body></html><img style=3D'border:0' src=3D'http://xxxxxxx/trc=
.php?i=3D43&h=3Df08b4807b3115fd444ec53a4296d81cb' width=3D'1'  height=3D'=
1 alt=3D'1' />

#884 Re : Recensement des bugs par version » [2.0.4] envoi manuel s'arrête en cours de route » 08-11-2016 15:33:59

Avec un envoi de combien de mails ?
Et sur quel navigateur ?

Car voilà ce qu'il se passe : en fonction d'un navigateur, d'une version, d'un paramétrage, d'un OS, etc,... le navigateur peut arrêter de tourner et de faire tourner javascript en background.
Javascript n'est alors actif que si la fenêtre est active et devant l’administrateur de la liste !
L'envoi manuel est très bien pour les listes modestes, jusqu'environ 1000 mails.
Au delà, j'invite vivement à utiliser la planification

#886 Re : Authentification des mails » [Résolu] senderscore et PB infrastructure » 08-11-2016 09:21:54

Sincèrement, oui !
Sinon, en me connectant avec mon compte Linkedin, voici le screen qui montre bien ce que je te dis :
1478593262_return_path.gif

#887 Re : Recensement des bugs par version » [2.0.4] rapport bizzare » 08-11-2016 09:44:55

????
Honnêtement, je ne vois pas d'où cela peut sortir, sauf à ce que soit des liens créés manuellement pour tester ton portail...
A partir du moment où tu as un traceur de liens, tout est possible...

#888 Re : Recensement des bugs par version » [2.0.4] import liste + de 10.000 ne fonctionne pas » 29-06-2017 17:36:36

Il faut vérifier ton error log de php.
Et vérifier quel est ton max upload de php.ini
Vérifier également ce qui a été importé en base, et voir si la base est toujours OK.

#889 Re : Authentification des mails » [Résolu] senderscore et PB infrastructure » 08-11-2016 09:21:54

Oui, mais toujours comme ça.
Je ne connais pas les services, je n'y suis pas abonné, et c'est un template de présentation.
Si tu es abonné, tu pourras avoir surement d'autres couleurs ;-)
Le mien :
1478540633_srp.png

#890 Re : Les évolutions de PhpMyNewsLetter » 2.0.4 CHANGELOG (announcement) » 07-11-2016 15:23:20

ajout dans GESTION DU TRACKING
* Détection des clients sur ouverture d'un mail (Outlook, Icedove, Thunderbird, Lotus,...)

#891 Re : Authentification des mails » [Résolu] senderscore et PB infrastructure » 08-11-2016 09:21:54

Je vais mettre le sujet directe en résolu !  lol

Les cadres sont rouges pour présentation dans l'interface senderscore et ne présument en rien de la qualité de ta campagne  wink
En bref, c'est pour attirer les clients !

Et bravo pour le 10/10, voilà qui me fait vraiment plaisir ! Un petit screen ?

#892 Re : Support général » [Résolu] maj vers 2.4 » 06-11-2016 16:39:41

Le sous domaine, c'est bien pour gérer tout ça, mais en fonction des hébergeurs, OS et cie, détecter le bon sous répertoire de sous-domaine est parfois un peu compliqué.
J'étais sur la route, un peu difficile de répondre davantage, mais vu que c'est réglé, je suis content :-)
Bon usage, et n'oublie pas : une question, une demande d'aide = un nouveau topic ;-)
ATTENTION : 2.0.4 n'est pas officiellement ouverte !

#893 Re : Support général » [Résolu] maj vers 2.4 » 06-11-2016 16:39:41

Bonjour Skygui et bienvenue sur le forum

Nouveau bug, nouveau post merci ;-)

C est une installation en sous domaine ?

#896 Re : Recensement des bugs par version » [2.0.4] impossible d'ajouter du code html » 04-11-2016 15:59:44

Bonjour Johnny,

tu as changé le script compose.php ?
Et OK pour envoyer les identifiants sur ton test, via MP STP

A.

#897 Re : Recensement des bugs par version » [2.0.4] impossible d'ajouter du code html » 04-11-2016 15:59:44

Sinon, le problème de retour en arrière, je n'ai pas réussi à le reproduire... Donc sauf si tu as été jusqu'à envoyer ta campagne, le retour devrait se faire sans problèmes.

#898 Re : Recensement des bugs par version » [2.0.4] impossible d'ajouter du code html » 04-11-2016 15:59:44

Bonjour,

voici le code de la nouvelle compose.php, à remplacer entièrement (https://raw.githubusercontent.com/Arnau … ompose.php)
- suppression du switch entre code html et usage de l'éditeur
- import de code html possible comme tu l'as décrit
- amélioration de tinymce avec de belles toolbar et ajouts de fonctions.

<?php
$subject = ( !empty($_POST['subject']) ) ? $_POST['subject'] : '';
$message = ( !empty($_POST['message']) ) ? $_POST['message'] : '';
$format  = ( !empty($_POST['format']) )  ? $_POST['format']  : '';
$encode  = ( !empty($_POST['encode']) ) ? 'base64'  : '8bit';
switch($op){
    case 'init':
        $newsletter=getConfig($cnx,$list_id,$row_config_globale['table_listsconfig']);
        $newsletter_autosave=getConfig($cnx,$list_id,$row_config_globale['table_sauvegarde']);
        if (!empty($_POST['import_id'])) {
            $import_id  =  $_POST['import_id'];
        }
        $reset  = (!empty($_GET['reset'])&&$_GET['reset']=='true') ? 'true' : 'false';
        $ft  = (!empty($_GET['ft'])) ? $_GET['ft'] : '';
        if(getSubscribersNumbers($cnx,$row_config_globale['table_email'],$list_id)){
            if (isset($import_id) && is_numeric($import_id)) {
                $row = $cnx->query("SELECT date, type, subject, message, list_id FROM "
                    . $row_config_globale['table_archives']." WHERE id='$import_id'")->fetch(PDO::FETCH_ASSOC);
                $textarea = addslashes(@htmlspecialchars($row['message']));
                $subject  = addslashes(@htmlspecialchars($row['subject']));
                $type     = $row['type'];
                $cnx->query("INSERT INTO "
                    . $row_config_globale['table_sauvegarde']."(list_id,subject,textarea,type) VALUES ('$list_id','$subject','$textarea','$type')");
            } elseif(isset($newsletter_autosave['textarea'])&&trim($newsletter_autosave['textarea'])!=''&&$reset=='false') {
                $textarea = $newsletter_autosave['textarea'];
                $type    = 'html';
                $subject = @htmlspecialchars($newsletter_autosave['subject']);
            } else {
                $textarea = addslashes($newsletter['header']."\n\n\n".$newsletter['footer']);
                $subject = @addslashes(htmlspecialchars($newsletter['subject']));
                $type    = 'html';
                $cnx->query("INSERT INTO "
                    . $row_config_globale['table_sauvegarde']."(list_id,subject,textarea,type) VALUES ('$list_id','$subject','$textarea','$type')");
            }
            echo "<form id='mailform' name='mailform' method='post' action='' class='post_message'>";
            echo "<div align='center'><h4 class='alert_info'>".tr("COMPOSE_AND_PREVIEW").".</h4></div>";
            echo '<article class="module width_3_quarter">';
            echo '<header><h3 class="tabs_involved">'.tr("COMPOSE_NEW").'</h3></header>';
            echo tr("COMPOSE_SUBJECT")." : ".tr("RFC_2822")."<br><br>
                <input type='text' name='subject' value=\"".  stripslashes($subject)  
                . "\" size='50' maxlength='255' id='subject' />&nbsp;<span id='chars'>78</span>
                <br><br>".tr("COMPOSE_MSG_BODY")." :";
            /*
            if($ft=="") {
                echo " (<a href='".$_SERVER['PHP_SELF']
                    . "?page=compose&token=$token&list_id=$list_id&ft=else'>".tr("CLICK_TO_COMPOSE_HTML")."</a>)<br><br>";
            } elseif($ft=='else') {
                echo " (<a href='".$_SERVER['PHP_SELF']
                    . "?page=compose&token=$token&list_id=$list_id'>".tr("CLICK_TO_COMPOSE_WITH_EDITOR")."</a>)<br><br>";
            }
            */
            echo "<textarea name='message' id='redac' rows='20' cols='70'>".   stripslashes($textarea)  ."</textarea>";
            echo "<div id='as'><h4 class='alert_info'>".tr("START_INITIALISATION")."...</h4></div><br>&nbsp;</article>";
            echo '<article class="module width_quarter"><div class="sticky-scroll-box">';
            echo '<header><h3>'.tr("ACTIONS").' :</h3></header><div align="center">';
            echo "<input type='button' value='".tr("SAVE_THIS_MESSAGE")."' id='rec' type='button' class='button' />"
                ."<br><br><input type='button' value='".tr("COMPOSE_RESET")."' onClick=\"parent.location='".$_SERVER['PHP_SELF'] 
                ."?page=compose&token=$token&list_id=$list_id&reset=true'\" />"
                ."<br><br><input type='button' value='".tr("COMPOSE_PREVIEW")." &gt;&gt;' onclick='Soumettre()' disabled id='send_preview' />";
            echo "<br><br><input type='checkbox' name='encode' value='base64'><b>".tr("COMPOSE_ENCODE")." ?</b>";
            echo "</div>";
            echo '<header></header>';
            echo '<header><h3>'.tr("ATTACHMENTS").'</h3></header>';
            echo "<div id='pjs'></div>";
            echo "<div align='center'><a href='upload.php?token=$token&list_id=$list_id' class='iframe'>".tr("ADD_ONE_OR_MORE_ATTACHMENT")."</a></div>";
            echo "</div></article>";
            echo "<script>$(function(){function pjs(){ $.ajax({type:\"POST\", url:\"include/pjq.php\", 
                data:\"token=$token&list_id=$list_id\",success:function(data){ $('#pjs').html(data);}});setTimeout(pjs,10000);}pjs();});</script>";
            echo "<input type='hidden' id='type' name='format' value='html' />
            <input type='hidden' name='op' value='preview' />
            <input type='hidden' name='action' value='compose' />
            <input type='hidden' name='page' value='compose' />
            <input type='hidden' id='list_id' name='list_id' value='$list_id' />
            <input type='hidden' id='token' name='token' value='$token' />
            </form>";
            if($ft==""){
                echo "<script src='/".$row_config_globale['path']."js/tinymce/tinymce.min.js'></script>
                    <script>
                    tinymce.init({
                        selector : 'textarea#redac',
                        plugins : [
                            'fullscreen fullpage visualblocks, preview searchreplace print insertdatetime hr',
                            'charmap colorpicker anchor code link image paste pagebreak table contextmenu',
                            'filemanager table code media autoresize textcolor emoticons'
                        ],
                        /*toolbar1 : 'insertfile undo redo | bold italic | forecolor backcolor | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent',
                        toolbar2 : 'styleselect | fontselect fontsizeselect | emoticons | link image | filemanager | template',*/
                        toolbar1 : 'newdocument,print,|,bold,italic,underline,|,strikethrough,superscript,subscript,|,forecolor,colorpicker,backcolor,|,bullist,numlist,outdent,indent,|,visualchars,visualblocks,|,charmap,|,hr,',
                        toolbar2 : 'table,|,cut,copy,paste,searchreplace,|,blockquote,|,undo,redo,|,link,unlink,anchor,|,image,emoticons,media,|,inserttime,|,preview,fullscreen,code,',
                        toolbar3 : 'styleselect,|,formatselect,|,fontselect,|,fontsizeselect,',
                        style_formats: [
                            {title: 'Open Sans', inline: 'span', styles: { 'font-family':'Open Sans'}},
                            {title: 'Arial', inline: 'span', styles: { 'font-family':'arial'}},
                            {title: 'Book Antiqua', inline: 'span', styles: { 'font-family':'book antiqua'}},
                            {title: 'Comic Sans MS', inline: 'span', styles: { 'font-family':'comic sans ms,sans-serif'}},
                            {title: 'Courier New', inline: 'span', styles: { 'font-family':'courier new,courier'}},
                            {title: 'Georgia', inline: 'span', styles: { 'font-family':'georgia,palatino'}},
                            {title: 'Helvetica', inline: 'span', styles: { 'font-family':'helvetica'}},
                            {title: 'Impact', inline: 'span', styles: { 'font-family':'impact,chicago'}},
                            {title: 'Symbol', inline: 'span', styles: { 'font-family':'symbol'}},
                            {title: 'Tahoma', inline: 'span', styles: { 'font-family':'tahoma'}},
                            {title: 'Terminal', inline: 'span', styles: { 'font-family':'terminal,monaco'}},
                            {title: 'Times New Roman', inline: 'span', styles: { 'font-family':'times new roman,times'}},
                            {title: 'Verdana', inline: 'span', styles: { 'font-family':'Verdana'}}
                        ],
                        templates : [
                            {title: 'Basic',url: '/".$row_config_globale['path']."js/tinymce/templates/basic.html',description: 'MODULE EN TEST !'},
                            {title: 'Hero',url: '/".$row_config_globale['path']."js/tinymce/templates/hero.html',description: 'MODULE EN TEST !'},
                            {title: 'Newsletter',url: '/".$row_config_globale['path']."js/tinymce/templates/newsletter.html',description: 'MODULE EN TEST !'}
                        ],
                        cleanup : true,
                        cleanup_on_startup : true,
                        convert_urls : true,
                        custom_undo_redo_levels : 20,
                        doctype : '<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">',
                        entity_encoding : 'raw',
                        external_filemanager_path:'/".$row_config_globale['path']."js/tinymce/plugins/filemanager/',
                        external_plugins: { 'filemanager' : '/".$row_config_globale['path']."js/tinymce/plugins/filemanager/plugin.min.js'},
                        extended_valid_elements: 'pre[*],style[*]',
                        filemanager_title:'Responsive Filemanager' ,
                        fontsize_formats : '8px 9px 10px 11px 12px 13px 14px 18px 24px',
                        forced_root_block : false,
                        force_br_newlines : true,
                        force_p_newlines : false,
                        height : '350',
                        image_advtab: true ,
                        inline_styles : true,
                        language : '".tr("TINYMCE_LANGUAGE")."',
                        relative_urls: false,
                        remove_script_host : false,
                        theme: 'modern',
                        valid_children : '+body[style|section],pre[section|div|p|br|span|img|style|h1|h2|h3|h4|h5],+*[*]',
                        valid_elements : '+*[*]',
                        verify_html : false,
                        menu: {
                            edit: {title: 'Edit', items: 'undo redo | cut copy paste | selectall'},
                            insert: {title: 'Insert', items: 'media image link | pagebreak'},
                            view: {title: 'View', items: 'visualaid'},
                            format: {title: 'Format', items: 'bold italic underline strikethrough superscript subscript | formats | removeformat'},
                            table: {title: 'Table', items: 'inserttable tableprops deletetable | cell row column'},
                            tools: {title: 'Tools', items: 'code'}
                        }
                        /* http://stackoverflow.com/questions/10290121/how-to-prevent-tinymce-from-stripping-the-style-attribute-from-input-element */
                        /* valid_elements : '@[id|class|style|title|dir<ltr?rtl|lang|xml::lang],'
                                + '+body[style],'
                                + 'a[rel|rev|charset|hreflang|tabindex|accesskey|type|name|href|target|title|class],strong/b,em/i,strike,u,'
                                + '#p[style],-ol[type|compact],-ul[type|compact],-li,br,img[longdesc|usemap|src|border|alt=|title|hspace|vspace|width|height|align],-sub,-sup,'
                                + '-blockquote,-table[border=0|cellspacing|cellpadding|width|frame|rules|'
                                + 'height|align|summary|bgcolor|background|bordercolor],-tr[rowspan|width|height|align|valign|bgcolor|background|bordercolor],tbody,thead,tfoot,'
                                + '#td[colspan|rowspan|width|height|align|valign|bgcolor|background|bordercolor|scope],#th[colspan|rowspan|width|height|align|valign|scope],caption,-div,'
                                + '-span,-code,-pre,address,-h1,-h2,-h3,-h4,-h5,-h6,hr[size|noshade],-font[face|size|color],dd,dl,dt,cite,abbr,acronym,del[datetime|cite],ins[datetime|cite],'
                                + 'object[classid|width|height|codebase|*],param[name|value|_value],embed[type|width|height|src|*],map[name],area[shape|coords|href|alt|target],bdo,'
                                + 'button,col[align|char|charoff|span|valign|width],colgroup[align|char|charoff|span|valign|width],dfn,fieldset,form[action|accept|accept-charset|enctype|method],'
                                + 'input[accept|alt|checked|disabled|maxlength|name|readonly|size|src|type|value],'
                                + 'kbd,label[for],legend,noscript,optgroup[label|disabled],option[disabled|label|selected|value],'
                                + 'q[cite],samp,select[disabled|multiple|name|size],small,'
                                + 'textarea[cols|rows|disabled|name|readonly],tt,var,big',*/
                    });
                    var elem=$('#chars');
                    $('#subject').limiter(78,elem);
                    $(document).ready(function() { Si=setInterval(save,10000); });
                    function save(){
                        tinyMCE.triggerSave();
                        var ds=$('#mailform').serialize();
                        $.ajax({
                            type: 'POST',
                            url: 'autosave.php',
                            data: ds,
                            cache: false,
                            success: function(msg) {
                                $('#as').html(msg).show();
                                $('#send_preview').removeAttr('disabled');
                            },
                            error: function() {
                                $('#as').html('<h4 class=alert_error>".tr("UNSAVED_MESSAGE")." !</h4>').show();
                            }
                        });
                    }
                    $('#rec').click(function(){ save(); });
                    </script>";
            } elseif($ft=='else') {
                echo "<script>var elem=$('#chars');$('#subject').limiter(78,elem);
                        $(document).ready(function() { Si=setInterval(save,10000); });
                        function save(){";
                            echo ($ft=='else'?"":"tinyMCE.triggerSave();");
                            echo "
                            $('#as').html('".tr("SAVE_PROCESS")."...').show();
                            var ds=$('#mailform').serialize();
                            $.ajax({
                                type: 'POST',
                                url: 'autosave.php',
                                data: ds,
                                cache: false,
                                success: function(msg) {
                                    $('#as').html(msg).show();
                                },
                                error: function() {
                                    $('#as').html('<h4 class=alert_error>".tr("UNSAVED_MESSAGE")." !</h4>').show();
                                }
                            });
                        }
                        $('#rec').click(function(){ save(); });
                    </script>";
            }
            echo "<script>
            function Soumettre(){
                if ( (document.mailform.subject.value=='') || (document.mailform.message.value=='') )
                    alert('".tr("ERROR_ALL_FIELDS_REQUIRED")."');
                else {
                    document.mailform.submit();
                }
            }
            </script>";
        } else {
            echo "<h4 class='alert_error'>".tr("ERROR_UNABLE_TO_SEND")."</h4>";
        }
    break;
    case "preview":
        $up = @($_GET['up']=='false' ? false : true);
        if($up){
            $cnx->query("UPDATE ".$row_config_globale['table_sauvegarde']." 
                    SET textarea = '".addslashes($message)."',
                        subject='".addslashes($subject)."',
                        type='$format' 
                WHERE list_id='$list_id'");
        }
        $newsletter     = getConfig($cnx,$list_id,$row_config_globale['table_listsconfig']);
        $msg            = getConfig($cnx,$list_id,$row_config_globale['table_sauvegarde']);
        $format         = $msg['type'];
        if(empty($message)){
            $message    = stripslashes($msg['textarea']);
        }
        if(empty($subject)){
            $subject    = stripslashes($msg['subject']);
        }
        $subj           = htmlspecialchars($subject);
        if($format == "html"){
            $msg        = $message;
        } else {
            $msg        = htmlspecialchars($message);
        }
        echo "<form method='get' action='send_preview.php' id='mailform' name='mailform'>";
        echo "<div align='center'><h4 class='alert_info'>".tr("STEP_SEND_PREVIEW", $newsletter['preview_addr']).".</h4></div>";
        echo "<article class='module width_full'><div style='margin:3px;'>";
        echo "Preview for : <a href='' onClick='xx(320);return false;'>iPhone 4/5 (320x480),</a> "
                         . "<a href='' onClick='xx(360);return false;'>Nexus 5 (360x598),</a> "
                         . "<a href='' onClick='xx(375);return false;'>iPhone 6 (375x667),</a> " 
                         . "<a href='' onClick='xx(384);return false;'>Nexus 4 (384x598),</a> " 
                         . "<a href='' onClick='xx(414);return false;'>iPhone 6 Plus (414x736),</a> "
                         . "<a href='' onClick='xx(600);return false;'>Nexus 7 2013 (600x960),</a> "
                         . "<a href='' onClick='xx(750);return false;'>iPhone 6S (750x1334),</a> "
                         . "<a href='' onClick='xx(768);return false;'>iPad 3 (768x1024),</a> "
                         . "<a href='' onClick='xx(800);return false;'>Nexus 10 (800x1280)</a> ";
        echo "</div></article>";
        echo '<article class="module width_3_quarter">';
        echo '<header><h3 class="tabs_involved">'.tr("COMPOSE_PREVIEW_TITLE").' : ' . $subj . '</h3></header>';
        echo "<iframe src='preview.php?list_id=$list_id&token=$token' width='100%' height='650px' style='border:0;' id='_preview'><p>".tr("ERROR_IFRAME")."...</p></iframe></div>";
        echo "<input type='hidden' name='list_id' value='$list_id'>
              <input type='hidden' name='encode' value='$encode'>
              <input type='hidden' name='op' value='send_preview'>
              <input type='hidden' id='token' name='token' value='$token'>";
        echo "</article>";
        echo '<article class="module width_quarter"><div class="sticky-scroll-box">';
        echo '<header><h3>Actions :</h3></header><div align="center">';
        echo "<input type='button' onClick=\"window.location.href='".$_SERVER['PHP_SELF']."?page=compose&token=$token&list_id=$list_id&op=init'\" 
            value=\"".tr("COMPOSE_BACK")."\" />";
        echo "<br><br><input type='submit' value='".tr("COMPOSE_SEND")."  (Mode PREVIEW)' />";
        echo "</div>";
        echo '<header></header>';
        echo '<header><h3>'.tr("ATTACHMENTS").'</h3></header>';
        echo "<div id='pjs'></div>";
        echo "<div align='center'><a href='upload.php?token=$token&list_id=$list_id' class='iframe'>".tr("ADD_ONE_OR_MORE_ATTACHMENT")."</a></div>";
        echo '</article>';
        echo "</form>";
        echo "<script>";
        echo "$(function(){function pjs(){ $.ajax({type:\"POST\", url:\"include/pjq.php\", data:\"token=$token&list_id=$list_id\",success:function(data){ $('#pjs').html(data);}});setTimeout(pjs,10000);}pjs();});";
        echo "</script>";
        echo "<script>
            function Soumettre(){
                document.mailform.submit();
            }
            </script>";
    break;
    case "send_preview":
        $newsletter     = getConfig($cnx,$list_id,$row_config_globale['table_listsconfig']);
        $msg            = getConfig($cnx,$list_id,$row_config_globale['table_sauvegarde']);
        $format         = $msg['type'];
        if(empty($message)){
            $message    = stripslashes($msg['textarea']);
        }
        if(empty($subject)){
            $subject    = stripslashes($msg['subject']);
        }
        $subj           = htmlspecialchars($subject);
        if($format == "html"){
            $msg = $message;
        } else {
            $msg = htmlspecialchars($message);
        }
        $error          = ( empty($_GET['error']) ? "" : $_GET['error'] );
        $encode         = ( !empty($_GET['encode']) && $_GET['encode'] == 'base64' ) ? 'base64'  : '8bit';
        echo '<div class="archmsg">';
        if($error==""){
            echo "<div align='center'><h4 class='alert_success'>".tr("PREVIEW_SEND_OK").".</h4>";
            echo "<h4 class='advt alert_info' align='center'>".tr("PREVIEW_OK")." ?<br>"
                . tr("CLICK_TO_SEND", tr("COMPOSE_SEND")).", ".tr("COMPOSE_ELSE_BACK")."</h4></div>";
        } else {
            echo "<div align='center'><h4 class='alert_error'>Attention ! Le message de preview est en erreur. Motif : "
                . $error ." ! Merci de corriger, puis relancer le message de preview en cliquant ici : <a href='"
                . $_SERVER['PHP_SELF']."?page=compose&op=init&list_id=$list_id&token=$token'>".tr("RE_SEND_PREVIEW")."</a></h4></div>";
        }
        echo '<article class="module width_3_quarter">';
        echo '<header><h3 class="tabs_involved">'.tr("COMPOSE_PREVIEW_TITLE").' :</h3></header>';
        echo "<iframe src='preview.php?list_id=$list_id&token=$token' width='100%' height='400px' style='border:0;'><p>"
            . tr("ERROR_IFRAME")."...</p></iframe>";
        echo "</article>";
        echo '<article class="module width_quarter"><div class="sticky-scroll-box">';
        echo '<header><h3>Actions :</h3></header><div align="center">';
        echo "<br><br><input type='button' value='".tr("COMPOSE_BACK")."' onClick=\"parent.location='"
            . $_SERVER['PHP_SELF']."?page=compose&token=$token&list_id=$list_id&op=preview&up=false&encode=$encode'\" />";
        if($error==""){
            echo "<br><br><input type='button' value='".tr("COMPOSE_SEND")."' class='button' id='SendIt'>";
        } else {
            echo "<h4 class='alert_error'>".tr("STOP_ON_PREVIEW_ERROR")." !</h4>";
        }
        if($type_serveur=='dedicated'&&$exec_available){
        echo "<br><br><form method='post' action=''>
            <input type='submit' value='".tr("SCHEDULE_THIS_SEND")."' />
            <input type='hidden' name='NEWTASK' value='SCHEDULE_NEW_TASK' />
            <input type='hidden' name='list_id' value='$list_id' />
            <input type='hidden' name='encode' value='$encode'>
            <input type='hidden' name='page' value='task' />";
        }
        echo '</div>';
        echo "<script>$(function(){function pjs(){ $.ajax({type:\"POST\", url:\"include/pjq.php\", data:\"token="
            . $token . "&list_id=" . $list_id . "\",success:function(data){ $('#pjs').html(data);}});setTimeout(pjs,10000);}pjs();});
        </script>";
        echo '<header></header>';
        echo '<header><h3>'.tr("ATTACHMENTS").'</h3></header>';
        echo "<div id='pjs'></div>";
        echo "<div align='center'><a href='upload.php?token=$token&list_id=$list_id' class='iframe'>".tr("ADD_ONE_OR_MORE_ATTACHMENT")."</a></div>";
        echo '</article></div>';
        ?>
        <script type="text/javascript">
            $("#SendIt").click(function(){
                $('.advt').hide('slow');
                $('.archmsg').hide('slow');
                $('.button').hide('slow');
                $('html,body').animate({scrollTop:'0px'},500);
                $('#msg').show();
                $('#smail').html("<?php echo tr("PROGRESSION_OF_CURRENT_SEND");?>");
                $(function(){
                    var begin   = 0;
                    var sn      = 0;
                    var step    = '';
                    var pct     = 0;
                    var list_id = <?php echo (($list_id)+0);?>;
                    var token   = '<?php echo $token;?>';
                    var msg_id  = 0;
                    var tts     = 0;
                    var encode  = '<?php echo $encode;?>';
                    function progresspump(){ 
                        $.ajax({
                            url:"send.php",
                            type: "GET",
                            dataType:"json",
                            data:'list_id=' + list_id + '&token=' + token + '&begin=' + begin + '&sn=' + sn + '&step=' + step + '&msg_id=' + msg_id + '&encode=' + encode,
                            success:function(rj){
                                begin = rj.begin;
                                sn    = rj.sn;
                                step  = rj.step;
                                pct   = (rj.pct!=''?rj.pct:0);
                                msg_id= rj.msg_id;
                                tts   = (typeof rj.TTS!='undefined'?rj.TTS:0);
                                $("#pct").css('width',pct+'%');
                                $("#done").html(pct+'%');
                                $("#total_to_send").html(sn);
                                $("#ch_last").html(tts);
                                if(pct > 99.999) {
                                    clearInterval(progresspump);
                                    $("#send_title").text("<?php echo tr("SEND_ENDED");?>...");
                                    $("#all_done").html("<?php echo tr("REDIRECT_NOW");?>...");
                                    $('#smail').html("<?php echo tr("SCHEDULE_END_PROCESS");?>");
                                    setTimeout(function() {
                                        window.location.href='?page=tracking&list_id=<?php echo $list_id;?>&token=<?php echo $token;?>';
                                    },1000);
                                }
                            }
                        });
                        setTimeout(progresspump,5000);
                    }progresspump();
                });
            });
        </script>
        <div id='msg' style='display:none'>
            <article class="module width_full">
            <header><h3 id='send_title'><?php echo tr("PROGRESSION_OF_CURRENT_SEND");?></h3></header>
                <div class="module_content">
                    <article class='stats_graph' style='height:143px;'>
                        <div class='record' style='height:30px;border: 1px solid #9BA0AF;'><div id='pct' class='bar' style='width:0%'></div></div>
                        <h4 id='all_done'></h4>
                    </article>
                    <article class="stats_overview">
                        <div class="overview_today">
                            <p class="overview_day"><?php echo tr("COMPOSE_SENDING");?></p>
                            <p class="overview_count" id='done'>0,00%</p>
                            <p class="overview_type">% <?php echo tr("SENDED");?></p>
                            <p class="overview_count" id='total_to_send'>0</p>
                            <p class="overview_type"><?php echo tr("TOTAL_TO_SEND");?></p>
                        </div>
                        <div class="overview_previous">
                            <p class="overview_day"><?php echo tr("CHRONO");?></p>
                            <p class="overview_count" id='ch_last'>0</p>
                            <p class="overview_type"><?php echo tr("LAST_TIME_SEND");?></p>
                        </div>
                    </article>
                    <div class="clear"></div>
                </div>
            <div id='if' style="height:0;"></div>
            </article>
        </div>
        <?php
    break;
    /*case "done":
        echo "<div align='center' class='info'>".tr("COMPOSE_SENDING")."</div>";
        $error=(empty($_GET['error']) ? "0" : $_GET['error']);
        $errorlog=(empty($_GET['errorlog']) ? "0" : $_GET['errorlog']);
        if($error!=0){
            echo "<h4 class=alert_error>".tr("ERROR_SENDING")."</h4>";
        } else {
            echo "<h4 class=alert_success>".tr("COMPOSE_SENT").".</h4>";
        }
        if($errorlog) {
            echo "<h4 class=alert_error>".tr("ERROR_LOG_CREATE")."</h4>";
        }
        echo "<br><div align='center'><img align='middle' src='css/puce.gif'> <a href='?page=compose&list_id=".$list_id."&token=$token'>".tr("BACK")."</a></div>";
    break;*/
    default :
        echo 'oups !';
    break;
}
?>

#900 Re : Base de connaissance » accès denied insertion image tinymce responsive file manager » 15-10-2016 16:26:04

C'est tout à fait vrai, sauf que l'on fait de la newsletter, avec des images destiées évidemment aux lecteurs, et pour la gestion de ces images, on a parfois besoin de créer des répertoires.
Une fois fait à la main, c'est bon.
Sauf que dans le filemanager on peut créer des répertoires (normalement), pour gérer les différentes news par exemple, et avec cette restriction, tu ne pourras plus...

Pied de page des forums

Propulsé par FluxBB