Skip to content

Commit

Permalink
(js) Fix parsing of pasted email addresses
Browse files Browse the repository at this point in the history
Fixes #4258 and fixes #4097
  • Loading branch information
cgx committed Sep 1, 2017
1 parent dff30d6 commit 84edeb8
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 3 deletions.
1 change: 1 addition & 0 deletions NEWS
Expand Up @@ -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)
-------------------
Expand Down
23 changes: 20 additions & 3 deletions UI/WebServerResources/js/Mailer/MessageEditorController.js
Expand Up @@ -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;
}

Expand Down

0 comments on commit 84edeb8

Please sign in to comment.