1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| /**
* Méthode qui à partir d'un header de mail retourne l'adresse mail<br>
* pattern sous la forme "name" <email@email.com><br>
* Caractère d'échapement : \ Le caractère à la suite d'un \ n'est pas pris en compte
* @param header
* @return
*/
private static String retrieveEmailFromHeader(String header) {
StringBuffer nameBuffer = new StringBuffer();
StringBuffer mailBuffer = new StringBuffer();
boolean isName = false;
boolean isMail = false;
int i = 0;
while (i < header.length()) {
if ((!isName) && (!isMail) && (header.charAt(i) == '\"')) {
isName = true;
} else if (isName && (header.charAt(i) == '\\')) {
i++;
if (i < header.length()) {
nameBuffer.append(header.charAt(i));
}
} else if (isName && (header.charAt(i) == '\"')) {
isName = false;
} else if (isName) {
nameBuffer.append(header.charAt(i));
} else if ((!isName) && (!isMail) && (header.charAt(i) == '<')) {
isMail = true;
} else if (isMail && (header.charAt(i) == '>')) {
isMail = false;
} else if (isMail) {
mailBuffer.append(header.charAt(i));
}
i++;
}
log.debug("retrieveEmailFromHeader("+header+")="+nameBuffer+", "+mailBuffer);
return mailBuffer.toString();
} |
Partager