Как Salesforce.com проверяет поля электронной почты? - PullRequest
2 голосов
/ 24 марта 2012

Я пытаюсь сохранить адреса электронной почты в Salesforce.com из другой службы, которая позволяет указывать недействительные адреса электронной почты. Если один из этих недействительных недействительных адресов электронной почты будет отправлен на Salesforce.com через API-интерфейс веб-служб, Salesforce.com предотвратит сохранение записи с кодом ошибки INVALID_EMAIL_ADDRESS .

Я не могу найти какую-либо документацию о том, как отключить проверку в полях электронной почты, поэтому мне кажется, что мне нужно проверить их в моей интеграции и извлечь те, которые не удалось. Кто-нибудь знает процесс проверки, который Salesforce.com использует для определения правильности адреса электронной почты? Все, что у меня сейчас есть, это Regex, но я бы хотел, чтобы он соответствовал процессу Salesforce.com.

РЕДАКТИРОВАТЬ: Для справки, вот мой Regex (я использую C # /. NET):

^(\w|[!#$%'*+-/=?^_`\{\}~.&])+@\w+([-.]\w+)*\.\w+([-.]\w+)*([,;]\s*\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*)*$

Ответы [ 6 ]

7 голосов
/ 19 сентября 2012

Резюме: мы используем следующее .NET RegEx:

const string SFEmailRegExPattern = @"^[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$";

Если вы можете верить собственной документации SF , тогда:

ДляВ локальной части адреса электронной почты мы принимаем следующие символы.Локальная часть находится перед знаком @.

abcdefg.hijklmnopqrstuvwxyz!#$%&'*/=?^_+-`{|}~0123456789

Примечание. Точка символа . поддерживается;при условии, что это не первый или последний символ в локальной части

Для доменной части адреса электронной почты, которую мы принимаем.Доменная часть - это что угодно после @ в адресе электронной почты:

0-9 and A-Z and a-z and dash -

пара из людей закодировали это как регулярное выражение Java как:

String pat = '[a-zA-Z0-9\\.\\!\\#\\$\\%\\&\\*\\/\\=\\?\\^\\_\\+\\-\\`\\{\\|\\}\\~\'._%+-]+@[a-zA-Z0-9\\-.-]+\\.[a-zA-Z]+';

, хотя мне кажется, что он не может отклонить письмо, начинающееся с "."так не идеально.

1 голос
/ 25 марта 2012

Я не знаю, как salesforce.com проверяет адреса электронной почты, но так как вы используете .NET, я бы посоветовал вам рассмотреть компонент проверки электронной почты, такой как наш EmailVerify.NET , то есть 100% соответствует действующим стандартам IETF (RFC 1123, RFC 2821, RFC 2822, RFC 3490, RFC 3696, RFC 4291, RFC 5321, RFC 5322 и RFC 5336) и не страдает от ReDoS : при необходимостион даже проверяет записи DNS проверяемого почтового домена, его SMTP-доступность, проверяет соответствующий почтовый ящик и даже может определить, является ли целевой почтовый обменник универсальным, или же он является поставщиком одноразовых / бесплатных адресов электронной почты.

0 голосов
/ 05 июля 2019

Вы не можете определенно создать регулярное выражение для электронной почты salesforce из-за несоответствия их собственным требованиям.

Одно правило дает возможность поставить IP-адрес после локальной части. Пример -> email@123.123.123.123.

Второй запрещает ввод цифр в домене верхнего уровня. Например: test@test.com1

Итак, они взаимно исключены.

Но, как я понял, адрес электронной почты с IP после локальной части более важен и обычно используется по сравнению с числами в домене верхнего уровня.

Вот несколько примеров действительных / недействительных электронных писем для salesforce.

Действительно:

a@ua.fm
email@domain.com
firstname.lastname@domain.com
email@subdomain.domain.com
firstname+lastname@domain.com
email@123.123.123.123
1234567890@domain.com
email@domain-one.com
_______@domain.com
email@domain.name
email@buyacar.co.uk
ail@github.dennis.co.uk
email@news.i.ua
firstname-lastname@domain.com
Alexka1!+1123klsn&*^%$%$#^^^@a3432.4s.c4p.uk
frw...??//||/wt'f`fe@wfwfg-----wfwef.mm
a..@test.jp
abcdefg.hijklmnopqrstuvwxyz!#$%&'*/=?^_+-`{|}~0123456789@acme-inc.com

Invalid:

aasd@sdfжжж.rf
plainaddress
#@%^%#$@#$@#.com
@domain.com
email.domain.com
email@domain@domain.com
.email@domain.com
あいうえお@domain.com
email@domain.com (Joe Smith)
email@domain
email@domain..com
email@domain.com.e
email@domain.com.33

В результате вышесказанного, последнее регулярное выражение:
/^(?!\.)(([^<>()\[\]\\a-zA-Z0-9.,;:\s@"]*(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))[a-zA-Z0-9.!#$%&'‘*+\/=?^_ {|} ~ -] + @ [\ ш .-] + [A-Za-Z] * (?.?

0 голосов
/ 23 мая 2012

Apex имеет собственные классы Pattern и Matcher, основанные на Java.

Вы можете проверить свои адреса электронной почты в коде Apex, используя RegEx expression в качестве строки

String emailPattern = {your regex expression);
Boolean validEmail = pattern.match(emailPattern, emailAddress);
0 голосов
/ 26 марта 2012

Я смотрел ранее и не смог найти однозначного ответа о том, какие именно правила SFDC применяются к собственному типу поля «Электронная почта».Самый быстрый путь к успеху, который я хотел бы предложить, был бы таким:

  • при первоначальной интеграции данных из внешнего приложения, сопоставьте поле электронной почты, которое вы описываете, с новым (не электронной почтой,просто текст 255) настраиваемое поле в SFDC.

  • , если это однократная загрузка данных, запустите отдельный процесс, который для каждой строки в SFDC с заполненным этим настраиваемым полем пытается скопироватьсодержимое этого настраиваемого поля в поле родной электронной почты.Если какая-либо строка завершается с ошибкой проверки электронной почты, просто пропустите ее.Затем вы можете решить, что делать с несовместимыми адресами.

  • , если это постоянная интеграция, может быть лучше сделать что-то вроде попытки вставить новые строки по одномуВремя от времени через WS API, и если выдается исключение проверки электронной почты, вы перехватываете его и либо вставляете запись без адреса электронной почты, сохраняете плохую электронную почту в другом поле (например, в настраиваемом поле, называемом «несовместимый адрес электронной почты»)) или вообще пропустить строку (если плохие письма == плохая запись).

Надеюсь, это поможет.

0 голосов
/ 24 марта 2012

Я не знаю, что использует salesforce.com (и я не думаю, что вы можете найти какой-либо способ), но \b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b из здесь является обычным и должен работать для большинство случаев.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...