2017-02-02 3 views
0

J'ai un formulaire de contact qui, une fois soumis, affiche toutes les données du formulaire dans une action de courrier électronique, puis affiche un e-mail de confirmation en texte brut. Les données arrivent très bien, mais certaines lignes ignorent leurs sauts de ligne respectifs.JSP Texte brut E-mail ne pas afficher les sauts de ligne

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>** 

Comme vous pouvez le voir, il y a beaucoup de SI Conditionals, essentiellement, ceux qui sont en place comme économiseur d'espace, si l'utilisateur n'a pas à aucune information dans les champs, alors ne les mettez pas dans l'e-mail. Comme il se trouve, client Mac OS X Mail, rend l'email très bien, tout comme tous les clients basés sur le Web. Outlook est le seul qui ne joue pas bien, et rend ses e-mails en tant que tels:

E-mail Outlook Résultat:

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: 

La ligne se casse de l'OS de l'utilisateur, le navigateur de l'utilisateur, le message d'erreur et problème les détails ne sont pas en place. Personne au bureau n'a de solution. Quelqu'un sait-il ce qui se passe?

Répondre

0

Je cherche des questions sur trois lieux:

1)

Il pourrait être un problème avec les caractères non-imprimables pour une nouvelle ligne dans la JSP.

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

Nouveaux codes de ligne diffèrent sur les différents OS:
de Windows: \r\n.
Unix: \n
Plus d'infos: wikipedia

Regardez les caractères non visibles dans votre éditeur. Par exemple dans Notepad ++ en cliquant sur ¶.
Unifiez-le s'il y a des différences.

2)

Vérifiez si les variables EL sont contenant des caractères newline leur valeur.
Cela peut être le résultat d'un mauvais traitement ou de l'utilisation de chaînes mal nettoyées/tronquées.

Comment les EL sont évalués ${operatingSystem}? Mac OS 10.9.5\r
Y a-t-il de nouveaux caractères de ligne? Si oui. coupez la chaîne avant de définir les variables.

3)

En combinaison avec les 2 précédentes possibilités, il est également possible que les trimDirectiveWhitespaces interfère.

Vérifiez si le site web du descripteur de déploiement.xml contient un similaire de bloc:

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

Si les trimDirectiveWhitespaces est à true, ce qui est logique pour de nombreux cas, vous pouvez le désactiver pour ce cas particulier, en ajoutant à la JSP la ligne:

<%@ page trimDirectiveWhitespaces="false"%> Regardez un exemple ici: Remove Spacing between JSP variables