(js) Fix parsing of pasted email addresses

Fixes #4258 and fixes #4097
This commit is contained in:
Francis Lachapelle
2017-09-01 11:09:24 -04:00
parent dff30d61fb
commit 84edeb85cd
2 changed files with 21 additions and 3 deletions

View File

@@ -259,14 +259,31 @@
}
function addRecipient(contact, field) {
var recipients, recipient, list;
var recipients, recipient, list, i, address;
var emailRE = /([\w\!\#$\%\&\'\*\+\-\/\=\?\^\`{\|\}\~]+\.)*[\w\!\#$\%\&\'\*\+\-\/\=\?\^\`{\|\}\~]+@((((([a-z0-9]{1}[a-z0-9\-]{0,62}[a-z0-9]{1})|[a-z])\.)+[a-z]{2,})|(\d{1,3}\.){3}\d{1,3}(\:\d{1,5})?)/i;
recipients = vm.message.editable[field];
if (angular.isString(contact)) {
_.forEach(contact.split(/[,;]/), function(address) {
// Examples that are handled:
// Smith, John <john@smith.com>
// <john@appleseed.com>;<foo@bar.com>
// foo@bar.com abc@xyz.com
address = '';
for (i = 0; i < contact.length; i++) {
if ((contact.charCodeAt(i) == 32 || // space
contact.charCodeAt(i) == 44 || // ,
contact.charCodeAt(i) == 59) && // ;
emailRE.test(address)) {
recipients.push(address);
address = '';
}
else {
address += contact.charAt(i);
}
}
if (address)
recipients.push(address);
});
return null;
}