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

Lacking concept on editable html email

本文关键字:电子邮件 html 编辑      更新时间:2023-09-26

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

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

也许像消息框这样的东西....是否要查看电子邮件(是/否) 否 继续发送电子邮件,"是"允许对其进行编辑。

任何想法或输入都会很棒。

添加当前代码:

页1.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>";

Javascript Function

    $(".step1").on("click", function () {
    var element = $(this);
    var I = element.attr("id");
    var id = $("#id" + I).val();
    var checkname1 =  $("#stepA" + I).attr("title");
    var code =  $("#stepA" + I).attr("value");
    $.post("page2.php", {
        id: id, checkname1: checkname1, code: code          
    },
    function (data) {
        var response = (data).split(";", 2);
        $("#stepA" + I).attr("title", (response[0]));   
        $("#stepB" + I).html(response[1]);
        $("#stepB" + I).hide();
        $("#stepB" + I).fadeIn(1500);
    });
    return false;
});

页2.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.";";           
}
}
}
}   
?>

更新:我按照建议下载了TinyMCE,并在下面进行了更改。 我还有 3 个问题。

1 - TinyMCE不显示任何图像,所以我需要研究一下。2 - 虽然它允许我编辑它....对电子邮件或源的任何编辑实际上都不会在单击按钮时提交。3 - 电子邮件底部显示的html代码,我看不到或找不到...所以还在研究这个问题。

我已经将我的JavaScript更改为以下内容 -

    $(".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);
            });
        });
    });
});

我将我的页面1.php更改为以下内容

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>";

我将我的页面2.php更改为以下内容

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;
}
}

首先做两件事:

  • 您显然必须在某处更改现有代码;
  • 你的问题很笼统,所以我的回答也会。

你已经有了大部分代码,所以它不会是一个很大的变化(我想,我看不到你的代码)。

我会怎么做:

  1. 将值发布到 PHP 脚本;
  2. 那里生成电子邮件(到目前为止你很好);
  3. 然后,不要发送此电子邮件(您必须在那里更改代码),而是在富文本编辑器中将其显示在页面上给用户(电子邮件通常是 HTML,所以这应该不会太难),以便用户可以编辑它。挑一挑:http://www.webdesignerdepot.com/2008/12/20-excellent-free-rich-text-editors/。
  4. 在带有编辑器的页面上,显示另一个按钮并将编辑后的电子邮件发送到包含发送电子邮件代码(您已经拥有)的 PHP 脚本。

在这个富文本编辑器上:我简要地看了一下TinyMCE。它将普通<textarea>转换为编辑器,因此您只需将其放入<form action="[yourScript].php" action="POST">中,然后使用<input type="submit">将编辑后的电子邮件提交到服务器。

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

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

  1. 将您的 PHP 代码拆分为两个脚本:一个生成电子邮件,另一个发送电子邮件。
  2. 将数据发布到邮件生成器。生成器将邮件发回作为对 AJAX 调用的响应。
  3. 然后,您拥有邮件客户端,向用户显示 RTE(例如使用此线程中的某些内容)
  4. 并在用户提交电子邮件时发出另一个 AJAX 调用,将邮件发布到发送邮件的脚本。(请注意,人们不会使用它来发送垃圾邮件。