(js) Fix parsing of pasted email addresses

Fixes #4258 and fixes #4097
pull/218/merge
Francis Lachapelle 2017-09-01 11:09:24 -04:00
parent dff30d61fb
commit 84edeb85cd
2 changed files with 21 additions and 3 deletions

1
NEWS
View File

@ -14,6 +14,7 @@ Bug fixes
- [core] increased column size of settings/defaults for MySQL (#4260)
- [web] fixed display of error when the mail editor is in a popup
- [web] attachments are not displayed on IOS (#4150)
- [web] fixed parsing of pasted email addresses from Spreadsheet (#4258)
3.2.10 (2017-07-05)
-------------------

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;
}