SpringBoot发送含回车邮件:如何使内容保持单行显示
解决邮件含回车符但显示为一行的问题
问题分析
你当前的Java代码将邮件内容设置为text/html格式,HTML本身会忽略文本中的换行符,但你需要让包含回车符的邮件内容最终显示为一行,核心是处理正文里的换行符。
解决方案
直接对邮件正文进行处理,移除所有回车符(\r)和换行符(\n),确保内容连为一行。
修改后的完整代码
public static void main(String[] args) throws MessagingException { Properties prop = new Properties(); prop.put("mail.smtp.auth", true); prop.put("mail.smtp.starttls.enable", "true"); prop.put("mail.smtp.host", "smtp.suerviciodecorreo.es"); prop.put("mail.smtp.port", "588"); prop.put("mail.smtp.ssl.trust", "smtp.suerviciodecorreo.es"); String mailTo = "ricaik@gmail.co"; String from = "a098@cummmatica.co"; String subject = "hola ? "; String body = "Saludos\r\n" + "\n" + " \n" + "\n" + " \n" + "\n" + "aaaaa\r\n" + "\n" + "bbbbbb\n" + "\n" ; // 移除所有换行符,让内容显示为一行;若要替换为空格,把""改成" "即可 String processedBody = body.replaceAll("\\r|\\n", ""); Session session = Session.getInstance(prop, new Authenticator() { @Override protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication("a098@cummmatica.co", "Eiu8hhuy72024"); } }); Message message = new MimeMessage(session); message.setFrom(new InternetAddress("a098@cummmatica.co")); message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(mailTo)); message.setSubject(subject); MimeBodyPart mimeBodyPart = new MimeBodyPart(); // 使用处理后的正文 mimeBodyPart.setContent(processedBody, "text/html; charset=utf-8"); Multipart multipart = new MimeMultipart(); multipart.addBodyPart(mimeBodyPart); log.info("Setting content"); message.setContent(multipart); log.info("Sending message {} ", message); Transport.send(message); log.info("Sent message {}", message); }
关键说明
replaceAll("\\r|\\n", "")会匹配所有单独的\r、\n以及组合的\r\n,将其全部移除,确保内容显示为一行。- 如果你希望原本换行的位置保留空格(提升可读性),只需把替换目标从
""改成" "即可。
内容的提问来源于stack exchange,提问作者Nunyet Calçada
相关产品推荐
相关产品推荐

