【问题标题】:Formatting email text from jsp in HTML format using spring使用spring以HTML格式格式化来自jsp的电子邮件文本
【发布时间】:2016-10-27 14:34:42
【问题描述】:

我正在使用 spring 实现电子邮件服务,用户可以在表单中输入电子邮件主题和电子邮件正文,并可以发送电子邮件。在这里,我能够成功发送电子邮件..但我需要翻译用户在电子邮件正文表单中输入的换行符/制表符,并且需要在将要发送的实际电子邮件中翻译成相同的内容......就像现在一样它不会翻译换行符并将用户输入的所有文本都发送到一行中..需要帮助格式化此..

img 链接是我的电子邮件中带有换行符的用例之一.... http://imgur.com/RMCOjyz

下面是我的代码...

    <div class="email-sm-textDiv">
        <textarea name="emailBodyTxtArea" id="emailBodyTxtArea"
            placeholder="Email Body"></textarea>
   </div>

ajax 调用:

submitHandler:function(form){
        var jsonObj = getData();        
        if(confirm("You are about to send Email Communication, Are you sure..?")){
        $.ajax({
            type: "POST",
            url:  $("#applicationUrl").val() +"/web/utilities/sendEmailMessage",
            dataType: 'json',
            cache:false,
            headers: { 
                'Content-Type': 'application/json' 
                },
            data:JSON.stringify(jsonObj),  
       });
    }
        return false;
    }
function getData(){
            var object ={
                    emailSubject : $("#emailSubTxtArea").val(),
                    emailMsg : $("#emailBodyTxtArea").val()

            };
            return object;


        }

弹簧代码:

    private boolean executeSendingEmail(String[] emailAddrs, String emailSubject, String emailMsg) throws MessagingException,MailException, Exception {
        MimeMessage message = null;
            try{
            message = mailSender.createMimeMessage();
             MimeMessageHelper helper = new MimeMessageHelper(message, true);
             helper.setFrom(emailFrom);
             helper.setTo(emailAddrs);
             helper.setSubject(emailSubject);
             helper.setText(emailMsg, true);
             mailSender.send(message);
             return true;
            }
            catch(MessagingException mesx){
                mesx.printStackTrace();
                return false;
            }
            catch(MailException mx){
                mx.printStackTrace();
                return false;
            }
            catch(Exception ex){
                ex.printStackTrace();
                return false;
            }
    }

}

我能够成功发送电子邮件..但它不是用户在表单中输入的格式..下面是我的 o/p 电子邮件..

输出:

HI Team, this is Test mail sending form Admin Application.... Sending this email for testing purpose... Ignore this mail.. regards, Admin.

因此需要帮助格式化用户输入的电子邮件消息 - 这应该与用户输入的相同.. 谢谢

【问题讨论】:

  • 您需要发送带有 HTML 正文的电子邮件,还是只是纯文本?如果只是纯文本就可以了,则将helper.setText(emailMsg, true); 更改为helper.setText(emailMsg);。否则,您可以搜索“stackoverflow convert textarea value to html”并找到答案。
  • 嗨,约翰,我需要以 HTML 正文/样式发送它...将对此进行探索..如果可以的话,您能帮我吗..?
  • 由于您需要发送 HTML,我认为您必须执行 @Mudassar 建议的操作,或者将文本放入 &lt;pre&gt; 元素中。如果您在 Google 上搜索“stackoverflow 将 textarea 值转换为 html”,您会发现其他建议。这是a question 的一些可能的答案。

标签: java jquery html spring spring-mvc


【解决方案1】:

&lt;textarea&gt; 输入的文本会有换行符 (\n),HTML 会将它们解释为空格。因此,在控制器端,您需要这样做:

String message = input.replace("\n", "<br />\n");

或者

message = input.replace("\n", "<br>");

【讨论】:

  • 谢谢Mudassar ..你说的那个帮助了我,我得到了用户输入的相同格式..干杯..:)
【解决方案2】:

您可以将 TextArea 转换为名为 CKEditor 的富文本编辑器,并将其编辑器配置为全页模式,以通过 fullPage = true; 将其中的 html 制作为完整的 HTML 文档

<script src="http://cdn.ckeditor.com/4.5.9/standard-all/ckeditor.js"></script>
<script>
CKEDITOR.replace('emailBodyTxtArea', {
            fullPage: true,
            toolbar : [
                { name: 'basicstyles', items : [ 'Bold','Italic','Underline','Strike' ] },
                { name: 'colors', items : [ 'TextColor' ] },
                { name: 'paragraph', items : [ 'NumberedList','BulletedList' ] }
    });
</script>

另一个棘手的解决方案:

使用 Iframe 代替 TextArea:

<iframe id="myIframe" srcdoc="<html><body contenteditable='true'></body></html>"></iframe>

使用 JavaScript,您可以使用以下代码获取 iframe 内的内容:

var msg = document.getElementById("myIframe").contentDocument.documentElement.outerHTML;

最后,尝试设置 iframe 的样式,使其看起来像 TextArea。

【讨论】:

    猜你喜欢
    • 2011-06-02
    • 2020-05-09
    • 2018-05-26
    • 1970-01-01
    • 2019-06-22
    • 1970-01-01
    • 1970-01-01
    • 2013-11-08
    • 1970-01-01
    相关资源
    最近更新 更多