2017-02-02 13 views
0

У меня есть контактная форма, которая при отправке отправляет все данные формы в действие электронной почты, а затем выдает подтверждение по электронной почте в виде простого текста. Данные идут очень хорошо, но некоторые из строк игнорируют их соответствующие разрывы строк.JSP Plain Text Email not render line breaks

JSP:

<%@ page language="java" contentType="text/plain;" %><%@ page import="com.shared.Configuration" %><%@ taglib uri="/WEB-INF/jstl-core.tld" prefix="c" %>Contact Us Form: ${issue} 

Name: ${name} 
Email Address: ${emailAddress} 
<c:if test="${not empty accessCode}">Access Code: ${accessCode}</c:if> 
<c:if test="${not empty itemId}">Inventory Number: ${itemId}</c:if> 
<c:if test="${not empty title}">Title: ${title}</c:if> 
<c:if test="${not empty device_active}">User Device: ${device}</c:if> 
<c:if test="${not empty os_active}">User Operating System/Version: ${operatingSystem}</c:if> 
<c:if test="${not empty browser_active}">User Web Browser/Version: ${webBrowser}</c:if> 
<c:if test="${hasError eq 'Y' or hasError eq 'N'}"><c:choose><c:when test="${hasError eq 'Y'}">Error Message: ${errorMessage}</c:when><c:otherwise>No Error message was present</c:otherwise></c:choose></c:if> 
<c:if test="${not empty otherDetails}">Other Details: ${otherDetails}</c:if> 
<c:if test="${not empty problemDetails}">Problem Details: ${problemDetails}</c:if>** 

Как вы можете видеть, есть много IF условных конструкций, в основном, те, в месте, пространстве заставки, если пользователь не вошел в какой-либо информации в тех полей, а затем не помещайте их в электронное письмо.

По мере того как он сидит, клиент Mac OS X Mail, делает электронное письмо просто прекрасным, как и все веб-клиенты. Перспективы есть только один, который не играет хорошо, и делает свою электронную почту, как например:

Электронная почта Outlook Результат:

Contact Us Form: Can't access the extra PlayBack+ features 

Name: me 
Email Address: [email protected] 
Access Code: aqwsedrftgyhuj87 
Inventory Number: 12345678 
Title:Title: this track 
User Device: Desktop 
User Operating System/Version: Mac OS 10.9.5 User Web Browser/Version: Chrome 55 Error Message: 
Other Details:no other details Problem Details: 

Линия ломает от пользователя ОС, браузера пользователя, появляется сообщение об ошибке и проблемы детали не установлены. Никто в офисе не имеет решения. Кто-нибудь знает, что происходит?

ответ

0

Я искал бы вопросы на трех местах:

1)

Это может быть проблемой с непечатаемыми символами для новой строки в JSP.

<c:if ...></c:if>\r\n 
<c:if ...></c:if>\n 
<c:if ...></c:if>\r 

Новые линейные коды отличаются на разных ОС:
Windows: \r\n.
Unix: \n
Подробнее: wikipedia

Посмотрите, не видимые символы в редакторе. Например, в Notepad ++, щелкнув по ¶.
Унифицируйте его, если есть какие-либо отличия.

2)

Проверьте переменные EL являются символами новой строки, содержащие их значение.
Это может быть результатом плохого анализа или использования неправильно обработанных/обрезанных строк.

Как оцениваются EL ${operatingSystem}? Mac OS 10.9.5\r
Есть ли новые персонажи? Если да. обрезать строку перед установкой переменных.

3)

В сочетании с предыдущими 2 возможностями есть также возможно, что trimDirectiveWhitespaces мешает.

Проверьте, существует ли дескриптор развертывания.XML содержит блок похож на:

<jsp-config> 
    <jsp-property-group> 
    <url-pattern>*.jsp</url-pattern> 
    <trim-directive-whitespaces>true</trim-directive-whitespaces> 
    </jsp-property-group> 
</jsp-config> 

Если trimDirectiveWhitespaces устанавливается истина, которая имеет смысл для многих случаев, вы можете отключить его для этого конкретного случая, добавляя к JSP строки:

<%@ page trimDirectiveWhitespaces="false"%>

Посмотрите пример здесь: Remove Spacing between JSP variables