Javascript 缺乏可编辑html电子邮件的概念

Javascript 缺乏可编辑html电子邮件的概念,javascript,php,Javascript,Php,我在php创建的html页面上有一个按钮,单击javascript函数可以将特定元素值发布到另一个php页面,执行mysql查询,创建html电子邮件并自动发送,而无需用户交互。效果很好 现在有人要求我做一个额外的步骤,以便在发送之前能够查看电子邮件并可能对其进行编辑,我对如何做还缺乏概念。最好不要破坏我已有的代码 可能类似于消息框……是否要查看电子邮件(是/否)否继续发送电子邮件,是允许对其进行编辑 任何想法或意见都会很好 添加当前代码: Page1.php echo "<td>"

我在php创建的html页面上有一个按钮,单击javascript函数可以将特定元素值发布到另一个php页面,执行mysql查询,创建html电子邮件并自动发送,而无需用户交互。效果很好

现在有人要求我做一个额外的步骤,以便在发送之前能够查看电子邮件并可能对其进行编辑,我对如何做还缺乏概念。最好不要破坏我已有的代码

可能类似于消息框……是否要查看电子邮件(是/否)否继续发送电子邮件,是允许对其进行编辑

任何想法或意见都会很好

添加当前代码:

Page1.php

echo "<td>";
if ($x == "Y"){$sent1 = "Y"; $checkcolor1 = 'images/greencheck.jpg';} else {$sent1 = "N"; $checkcolor1 = 'images/redcheck.jpg';}
echo "<div id='stepA$a' title='$sent1$a' value='$mycode'><a id='$a' href='' class ='step1'><div id='stepB$a'><img src='$checkcolor1' title='Send Rental Agreement' border='0' height='24' width='24'></img></div></a></div>";
echo "</td>";
Page2.php

<?php
include('connection.php');

$mycode = $_POST['code']; 

if (empty($mycode)) {die("No Value");}

$result = mysql_query("SELECT code FROM code WHERE code = '$mycode'") or die ( mysql_error ());

if (mysql_num_rows($result) > 0) {

$id=$_POST['id'];
$checkname1=$_POST['checkname1'];
$rest = $checkname1 [0];

if ($rest == "Y"){

    $checkchange1 ="Y$id";
    $checkchange2 ="<img src='images/greencheck.jpg' title='Send Rental Agreement' border='0' height='24' width='24'></img>";
    echo $checkchange1.";".$checkchange2.";";   

} else {    

    $change="Y";
    $query = "UPDATE info SET invoice = '$change' WHERE id = $id";
    $result = mysql_query($query) or die ( mysql_error ());

$query = "SELECT * FROM info WHERE id = '$id'";
$result = mysql_query($query) or die ( mysql_error ());


if (mysql_num_rows($result) > 0) {      

while(list($a,$b,$c,$d,$e) = mysql_fetch_row($result)) { 

$mail_body ='
<img src="images/logo.png" alt="Logo" width="174" height="70"></img><br />
<p><b>HTML Email body</b></p>';}

            $to = $e;                       

            $headers = 'MIME-Version: 1.0' . "\r\n" .
                       'Content-Type: text/html; charset=ISO-8859-1' . "\r\n" .
                       'From: Rental<hell@test.com>' . "\r\n" .
                       'Reply-To: hello@test.com' . "\r\n" .
                       'X-Mailer: PHP/' . phpversion();         
            $subject = 'Rental Agreement ' . $d . ', ' . $l . ' - ' . $m;

            mail($to, $subject, $mail_body, $headers);  


    $checkchange1 ="Y$id";
    $checkchange2 ="<img src='images/greencheck.jpg' title='Send Rental Agreement' border='0' height='24' width='24'></img>";
    echo $checkchange1.";".$checkchange2.";";           
}
}
}
}   
?>
首先要做两件事:

  • 显然,您必须在某个地方更改现有代码
  • 你的问题很笼统,所以我的回答也是
您已经有了大部分代码,所以不会有太大的变化(我想,我看不到您的代码)

我会怎么做:

  • 将值发布到PHP脚本
  • 在那里生成电子邮件(到目前为止你还不错)
  • 然后,不要发送此电子邮件(您必须在那里更改代码),而是将其显示在富文本编辑器中的页面上(电子邮件通常是HTML,所以这应该不会太难),以便用户可以编辑它。选一个:
  • 在编辑器所在的页面上,显示另一个按钮,并将编辑后的电子邮件发送到包含发送电子邮件代码(您已经拥有)的PHP脚本
  • 在这个富文本编辑器上:我简单地看了一下TinyMCE。它将普通的
    转换为编辑器,因此您可以将其放入
    中,并使用
    将编辑后的电子邮件提交到服务器

    多亏了Polywhill先生:TinyMCE不再维护,CKEditor似乎是一个不错的选择。这似乎是错误的。TinyMCE在4周前发布了一个版本

    编辑:
    我刚刚阅读了您对自己问题的评论,建议您使用AJAX请求将表单数据发布到脚本中。在这种情况下:

  • 将PHP代码分成两个脚本:一个生成电子邮件,另一个发送电子邮件
  • 将数据发布到邮件生成器。生成器将邮件作为对AJAX调用的响应发送回
  • 然后,在邮件客户端向用户显示RTE(例如,使用来自的内容)
  • 并在用户提交电子邮件时发出另一个AJAX调用,将邮件发送到发送邮件的脚本。(注意人们不要用它发送垃圾邮件。)

  • 你在回答你的问题,付诸实践。电子邮件的文本可以编辑,使用文本框很容易但很难看,使用RTE编辑器有点难但更漂亮。谢谢回复。这篇文章实际上是通过javascript创建的,正在等待回复。我仍然需要回复,但只有在电子邮件发送后才需要回复。谢谢您的回复。这个问题本应是一般性的,以引发对概念的某种讨论,因为我不知所措。我将发布我正在使用的代码。@Mr.Polywhill感谢您的建议!哈哈…我会看看你写的,让你知道…我正忙着得到我正在一起使用的脚本。谢谢。@polywhill先生你在哪里看到的?他们刚刚释放了?真的。看到Mike B的评论后,我检查了他们的Github存储库。上面写着“上次更新是在22分钟前”@波利维勒先生
    <?php
    include('connection.php');
    
    $mycode = $_POST['code']; 
    
    if (empty($mycode)) {die("No Value");}
    
    $result = mysql_query("SELECT code FROM code WHERE code = '$mycode'") or die ( mysql_error ());
    
    if (mysql_num_rows($result) > 0) {
    
    $id=$_POST['id'];
    $checkname1=$_POST['checkname1'];
    $rest = $checkname1 [0];
    
    if ($rest == "Y"){
    
        $checkchange1 ="Y$id";
        $checkchange2 ="<img src='images/greencheck.jpg' title='Send Rental Agreement' border='0' height='24' width='24'></img>";
        echo $checkchange1.";".$checkchange2.";";   
    
    } else {    
    
        $change="Y";
        $query = "UPDATE info SET invoice = '$change' WHERE id = $id";
        $result = mysql_query($query) or die ( mysql_error ());
    
    $query = "SELECT * FROM info WHERE id = '$id'";
    $result = mysql_query($query) or die ( mysql_error ());
    
    
    if (mysql_num_rows($result) > 0) {      
    
    while(list($a,$b,$c,$d,$e) = mysql_fetch_row($result)) { 
    
    $mail_body ='
    <img src="images/logo.png" alt="Logo" width="174" height="70"></img><br />
    <p><b>HTML Email body</b></p>';}
    
                $to = $e;                       
    
                $headers = 'MIME-Version: 1.0' . "\r\n" .
                           'Content-Type: text/html; charset=ISO-8859-1' . "\r\n" .
                           'From: Rental<hell@test.com>' . "\r\n" .
                           'Reply-To: hello@test.com' . "\r\n" .
                           'X-Mailer: PHP/' . phpversion();         
                $subject = 'Rental Agreement ' . $d . ', ' . $l . ' - ' . $m;
    
                mail($to, $subject, $mail_body, $headers);  
    
    
        $checkchange1 ="Y$id";
        $checkchange2 ="<img src='images/greencheck.jpg' title='Send Rental Agreement' border='0' height='24' width='24'></img>";
        echo $checkchange1.";".$checkchange2.";";           
    }
    }
    }
    }   
    ?>
    
        $(".step5").on("click", function () {
        var element = $(this);
        var I = element.attr("id");
        var code =  $("#stepI" + I).attr("value");
        var checkname =  $("#stepI" + I).attr("title");
        $("#email").html("<h3>Loading</h3>").css("display", "block");
        $.get("emailtest1.php?code=" + code + "&id=" + I + "&checkname=" + checkname , function (data) {
            $("#email").html(data);
            $("#snd").click(function () {
                var send_to = document.getElementById("addy").value;                
                var email_body = document.getElementById("content").value;
                $("#email").append("<br /><br /><div><i>Sending...</i></div>");
                $.post("emailtest1.php?code=" + code, {
                    mode: "snd", send_to: send_to, email_body: email_body          
                }, function (data) {
                var response = (data).split("z",3);         
                $("#email").html(response[0]);
                $("#stepI" + I).attr("title", (response[1]));   
                $("#stepJ" + I).html(response[2]);
                $("#stepJ" + I).hide();
                $("#stepJ" + I).fadeIn(1500);
                    });                                 
            });
            $("#cnx").click(function () {
                $.post("emailtest1.php?code=" + code, {
                    mode: "cnx"
                }, function (data) {
                    $("#email").html(data);
    
                });
            });
        });
    });
    
    echo "<td>";
    if ($x == "Y"){$sent1 = "Y"; $checkcolor1 = 'images/greencheck.jpg';} else {$sent1 = "N"; $checkcolor1 = 'images/redcheck.jpg';}
    echo "<div id='stepI$a' title='$sent1$a' value='$mycode'><a id='$a' href='#' class ='step5'><div id='stepJ$a'><img src='$checkcolor1' title='Email Test' border='0' height='24' width='24'></img></div></a></div>";
    echo "<div id='email'></div>";
    
    function showForm(){
    $id = $_GET['id'];
    $checkname =$_GET['checkname'];
    $rest = $checkname [0];
    
    
    $mail_body =' the body of my email';}
    
    
    echo '<script type="text/javascript">
    
    tinymce.init({
    selector: "textarea",
    auto_focus: "elm1",
    width: 1100,
    height: 2500,
    plugins: [
            "advlist autolink lists link image charmap print preview anchor",
            "searchreplace visualblocks code fullscreen",
            "insertdatetime media table contextmenu paste"
        ],
    toolbar: "insertfile undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image"
    });
    
    </script>
    <h3>Email To Send</h3>
    <form name="mf" id="mf" method="post" action="">
    <p><label>Address :</label><input type="text" size="35" name="addy" id="addy" value="'.$e.'"/></p>
    <textarea name="content" id="content" style="width:100%" value="\''.$clean_mail_body.'\'"></textarea>
    <p><a href="#" class="btn" id="snd" name="snd"><img src="images/submitbutton.jpg" title="Send Email" border="0" height="25" width="75"></img></a><a href="#" class="btn" id="cnx" name="cnx">   <img src="images/cancelemail.jpg" title="Send Email" border="0" height="25" width="80"></img></a></p>
    </form>';
    }
    }
    }
    
    function cnxForm(){
                echo '<a href=""><img src="/images/logo.png"></a><br/><h3>Email Not Sent</h3><script type="text/javascript">setTimeout(\'$("#email").fadeOut("fast")\',2000);</script>';
    }
    
    function sndForm(){
    
                $send_to = $_POST['send_to'];
                $email_body = $_POST['email_body'];
    
                $headers = 'MIME-Version: 1.0' . "\r\n" .
                           'Content-Type: text/html; charset=ISO-8859-1' . "\r\n" .
                           'From: Rental<test@test.com>' . "\r\n" .
                           'Reply-To: test@test.com' . "\r\n" .
                           'X-Mailer: PHP/' . phpversion();         
                $subject = 'Rental Agreement';
    
                mail($send_to, $subject, $email_body, $headers);                
    
                $checkchange0 ='<a href=""><img src="/images/logo.png"></a><br/><h3>Email Sent</h3><script type="text/javascript">setTimeout(\'$("#email").fadeOut("fast")\',2000);</script>';
                $checkchange1 ="Y$id";
                $checkchange2 ="<img src='images/greencheck.jpg' title='Send Rental Agreement' border='0' height='24' width='24'></img>";
                echo $checkchange0."z".$checkchange1."z".$checkchange2."z";
    
    }
    
    
    $mode=(!empty($_GET['mode']))?$_GET['mode']:$_POST['mode'];
    switch($mode){
    case 'snd': sndForm();break;
    case 'cnx': cnxForm();break;
    default: showForm();break;
    }
    }