You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取Summernote富文本编辑器内容并通过Gmail发送邮件

首先需要注意,你当前代码中引入的是LineControl富文本编辑器,并非Summernote,两者的内容获取API存在差异,以下是基于你现有代码的完整调整方案:

前端代码调整

需要做两处修改,确保表单提交时能正确传递富文本内容:

  1. 给form标签添加id属性,方便绑定提交事件
  2. 在页面初始化脚本中添加表单提交监听,将编辑器的富文本内容同步到原生textarea中

修改后的核心代码如下:

<!-- 给form添加id -->
<form id="emailForm" action="formSender" method="post">
    <!-- 原有表单内容保持不变 -->
    <div class="form-group">
        <label for="content">Content:</label>
        <textarea class="form-control" id="txtEditor" name="content"></textarea> 
    </div>
    <!-- 原有按钮内容保持不变 -->
</form>

<script>
    $(document).ready(function () {
        $("#txtEditor").Editor();
        // 绑定表单提交事件,同步富文本内容
        $("#emailForm").on("submit", function() {
            // LineControl编辑器获取HTML内容的API
            const editorHtml = $("#txtEditor").Editor("getText");
            // 将内容赋值给原生textarea,随表单提交
            $("#txtEditor").val(editorHtml);
            return true;
        });
    });
</script>

如果后续你切换为Summernote编辑器,只需要把获取内容的API替换为$("#txtEditor").summernote('code')即可。

后端Servlet代码调整

分为参数解析、Gmail邮件发送两部分实现:

1. 参数编码处理

首先要设置请求编码,避免中文内容乱码:

// 必须在获取所有参数前设置编码
request.setCharacterEncoding("UTF-8");
String to = request.getParameter("to");
String cc = request.getParameter("cc");
String subject = request.getParameter("subject");
String content = request.getParameter("content");

2. Gmail邮件发送实现

需要先引入JavaMail依赖(Maven配置如下,非Maven项目可直接导入对应jar包):

<dependency>
    <groupId>com.sun.mail</groupId>
    <artifactId>javax.mail</artifactId>
    <version>1.6.2</version>
</dependency>

邮件发送核心代码:

import java.util.Properties;
import javax.mail.*;
import javax.mail.internet.*;

// 配置Gmail SMTP参数
Properties props = new Properties();
props.put("mail.smtp.host", "smtp.gmail.com");
props.put("mail.smtp.port", "587");
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.starttls.enable", "true");

// 发件人信息:填写你的Gmail账号和应用专用密码
final String senderEmail = "你的Gmail地址";
final String appPassword = "你的Gmail应用专用密码";

Session session = Session.getInstance(props, new Authenticator() {
    @Override
    protected PasswordAuthentication getPasswordAuthentication() {
        return new PasswordAuthentication(senderEmail, appPassword);
    }
});

try {
    MimeMessage msg = new MimeMessage(session);
    msg.setFrom(new InternetAddress(senderEmail));
    // 设置收件人
    msg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to));
    // 设置抄送人
    if (cc != null && !cc.trim().isEmpty()) {
        msg.setRecipients(Message.RecipientType.CC, InternetAddress.parse(cc));
    }
    // 设置邮件主题
    msg.setSubject(subject, "UTF-8");
    // 第二个参数指定为text/html,才能正常解析富文本样式
    msg.setContent(content, "text/html;charset=UTF-8");
    // 发送邮件
    Transport.send(msg);
    request.setAttribute("message", "邮件发送成功");
} catch (MessagingException e) {
    e.printStackTrace();
    request.setAttribute("message", "邮件发送失败:" + e.getMessage());
}
// 后续按你的业务逻辑跳转回发件页面即可
注意事项
  • Gmail授权要求:Gmail现已不支持直接用账号密码调用SMTP服务,你需要先为Gmail账号开启两步验证,再生成专属的应用专用密码,替换代码中的对应字段
  • 内容格式要求:调用setContent方法时必须指定内容类型为text/html;charset=UTF-8,否则收件人收到的会是原始HTML代码,无法正常展示富文本样式
  • 传输方式要求:你当前使用POST提交表单符合要求,不要使用GET提交,避免内容过长被截断

内容的提问来源于stack exchange,提问作者Minh Phan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 06:09:00