يحتوي هذا الريبو على قائمة بنطاقات عناوين البريد الإلكتروني المؤقتة والمستخدمة التي تستخدم غالبًا لتسجيل مستخدمين وهميين من أجل إرسال بريد عشوائي أو إساءة استخدام بعض الخدمات.
لا يمكننا أن نضمن أنه لا يزال من الممكن اعتبار كل هذه الأشياء قابلة للاستخدام مرة واحدة ولكننا نجري فحصًا أساسيًا لذا فمن المحتمل أن يتم التخلص منها في وقت ما.
يجمع الملفallowlist.conf نطاقات البريد الإلكتروني التي غالبًا ما يتم تحديدها على أنها يمكن التخلص منها ولكنها في الواقع ليست كذلك.
لا تتردد في إنشاء علاقات عامة مع إضافات أو طلب إزالة بعض النطاقات (مع الأسباب).
على وجه التحديد، يرجى الإشارة في العلاقات العامة الخاصة بك إلى حيث يمكن للمرء إنشاء عنوان بريد إلكتروني يمكن التخلص منه يستخدم هذا النطاق، حتى يتمكن المشرفون من التحقق منه.
الرجاء إضافة مجالات جديدة يمكن التخلص منها مباشرة إلى Disable_email_blocklist.conf بنفس التنسيق (نطاقات المستوى الثاني فقط في السطر الجديد بدون @)، ثم قم بتشغيل keep.sh. سيساعدك البرنامج النصي Shell على تحويل الأحرف الكبيرة إلى أحرف صغيرة وفرز التكرارات وإزالتها وإزالة النطاقات المدرجة في القائمة المسموح بها.
يمكنك نسخ العمل وتعديله وتوزيعه واستخدامه، حتى لأغراض تجارية، وكل ذلك دون طلب إذن.
11/2/21 أنشأنا حساب مؤسسة github وقمنا بنقل المستودع إليه.
18/04/19 انضم @di كمشرف أساسي على هذا المشروع. شكرًا لك!
31/07/17 انضم @deguif كمشرف أساسي على هذا المشروع. شكرًا!
12/6/16 - متاح كوحدة PyPI بفضل @di
27/07/16 - تحويل كافة النطاقات إلى المستوى الثاني. وهذا يعني أنه بدءًا من هذا الالتزام، يجب على المنفذين الاهتمام بمطابقة أسماء نطاقات المستوى الثاني بشكل صحيح، أي يجب أن يتطابق @xxx.yyy.zzz
مع yyy.zzz
في قائمة الحظر حيث تكون zzz
لاحقة عامة. مزيد من المعلومات في رقم 46
2/9/14 - الالتزام الأول 393c21f5
TOC: Python، PHP، Go، Ruby on Rails، NodeJS، C#، bash، Java، Swift
with open ( 'disposable_email_blocklist.conf' ) as blocklist :
blocklist_content = { line . rstrip () for line in blocklist . readlines ()}
if email . partition ( '@' )[ 2 ] in blocklist_content :
message = "Please enter your permanent email address."
return ( False , message )
else :
return True
متاح كوحدة PyPI بفضل @di
>> > from disposable_email_domains import blocklist
>> > 'bearsarefuzzy.com' in blocklist
True
ساهم بها @txt3rob وdeguif و@pjebs و@Wruczek
function isDisposableEmail ( $ email , $ blocklist_path = null ) {
if (! $ blocklist_path ) $ blocklist_path = __DIR__ . ' /disposable_email_blocklist.conf ' ;
$ disposable_domains = file ( $ blocklist_path , FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES );
$ domain = mb_strtolower ( explode ( ' @ ' , trim ( $ email ))[ 1 ]);
return in_array ( $ domain , $ disposable_domains );
}
وبدلاً من ذلك، تحقق من حزمة الملحن https://github.com/elliotjreed/disposable-emails-filter-php.
ساهم بها @pjebs
import ( "bufio" ; "os" ; "strings" ;)
var disposableList = make ( map [ string ] struct {}, 3500 )
func init () {
f , _ := os . Open ( "disposable_email_blocklist.conf" )
for scanner := bufio . NewScanner ( f ); scanner . Scan (); {
disposableList [ scanner . Text ()] = struct {}{}
}
f . Close ()
}
func isDisposableEmail ( email string ) ( disposable bool ) {
segs := strings . Split ( email , "@" )
_ , disposable = disposableList [ strings . ToLower ( segs [ len ( segs ) - 1 ])]
return
}
وبدلاً من ذلك، تحقق من حزمة Go https://github.com/rocketlaunchr/anti-disposable-email.
ساهم بهاMitsunChieh
في نموذج الموارد، عادةً ما يكون user.rb
:
before_validation :reject_email_blocklist
def reject_email_blocklist
blocklist = File . read ( 'config/disposable_email_blocklist.conf' ) . split ( " n " )
if blocklist . include? ( email . split ( '@' ) [ 1 ] )
errors [ :email ] << 'invalid email'
return false
else
return true
end
end
ساهم بها @boywithkeyboard
import { readFile } from 'node:fs/promises'
let blocklist
async function isDisposable ( email ) {
if ( ! blocklist ) {
const content = await readFile ( 'disposable_email_blocklist.conf' , { encoding : 'utf-8' } )
blocklist = content . split ( 'rn' ) . slice ( 0 , - 1 )
}
return blocklist . includes ( email . split ( '@' ) [ 1 ] )
}
وبدلاً من ذلك، تحقق من حزمة NPM https://github.com/mziyut/disposable-email-domains-js.
private static readonly Lazy < HashSet < string > > _emailBlockList = new Lazy < HashSet < string > > ( ( ) =>
{
var lines = File . ReadLines ( " disposable_email_blocklist.conf " )
. Where ( line => ! string . IsNullOrWhiteSpace ( line ) && ! line . TrimStart ( ) . StartsWith ( " // " ) ) ;
return new HashSet < string > ( lines , StringComparer . OrdinalIgnoreCase ) ;
} ) ;
private static bool IsBlocklisted ( string domain ) => _emailBlockList . Value . Contains ( domain ) ;
.. .
var addr = new MailAddress ( email ) ;
if ( IsBlocklisted ( addr . Host ) ) )
throw new ApplicationException ( " Email is blocklisted. " ) ;
#!/bin/bash
# This script checks if an email address is temporary.
# Read blocklist file into a bash array
mapfile -t blocklist < disposable_email_blocklist.conf
# Check if email domain is in blocklist
if [[ " ${blocklist[@]} " =~ " ${email#*@} " ]]; then
message="Please enter your permanent email address."
return_value=false
else
return_value=true
fi
# Return result
echo "$return_value"
يفترض الكود أنك أضفت disposable_email_blocklist.conf
بجوار صفك كمورد classpath.
private static final Set < String > DISPOSABLE_EMAIL_DOMAINS ;
static {
Set < String > domains = new HashSet <>();
try ( BufferedReader in = new BufferedReader (
new InputStreamReader (
EMailChecker . class . getResourceAsStream ( "disposable_email_blocklist.conf" ), StandardCharsets . UTF_8 ))) {
String line ;
while (( line = in . readLine ()) != null ) {
line = line . trim ();
if ( line . isEmpty ()) {
continue ;
}
domains . add ( line );
}
} catch ( IOException ex ) {
LOG . error ( "Failed to load list of disposable email domains." , ex );
}
DISPOSABLE_EMAIL_DOMAINS = domains ;
}
public static boolean isDisposable ( String email ) throws AddressException {
InternetAddress contact = new InternetAddress ( email );
return isDisposable ( contact );
}
public static boolean isDisposable ( InternetAddress contact ) throws AddressException {
String address = contact . getAddress ();
int domainSep = address . indexOf ( '@' );
String domain = ( domainSep >= 0 ) ? address . substring ( domainSep + 1 ) : address ;
return DISPOSABLE_EMAIL_DOMAINS . contains ( domain );
}
ساهم بها @1998code
func checkBlockList ( email : String , completion : @escaping ( Bool ) -> Void ) {
let url = URL ( string : " https://raw.githubusercontent.com/disposable-email-domains/disposable-email-domains/master/disposable_email_blocklist.conf " ) !
let task = URLSession . shared . dataTask ( with : url ) { data , response , error in
if let data = data {
if let string = String ( data : data , encoding : . utf8 ) {
let lines = string . components ( separatedBy : " n " )
for line in lines {
if email . contains ( line ) {
completion ( true )
return
}
}
}
}
completion ( false )
}
task . resume ( )
}