Added script
This commit is contained in:
1
.python-version
Normal file
1
.python-version
Normal file
@@ -0,0 +1 @@
|
|||||||
|
3.13
|
||||||
658
Fortune500leads.csv
Normal file
658
Fortune500leads.csv
Normal file
@@ -0,0 +1,658 @@
|
|||||||
|
Rank,"Company Name",Domain,domain,name,first_name,email
|
||||||
|
23,"Phillips 66",phillips66.com,,,,
|
||||||
|
28,"JPMorgan Chase",jpmorganchase.com,,,,
|
||||||
|
58,"Tyson Foods",tysonfoods.com,,,,
|
||||||
|
53,"Lockheed Martin",lockheedmartin.com,,,,
|
||||||
|
60,"Charter Communications",corporate.charter.com,,,,
|
||||||
|
72,"Plains GP Holdings",plainsallamerican.com,,,,
|
||||||
|
4,"UnitedHealth Group",unitedhealthgroup.com,unitedhealthgroup.com,"Sumeet Sethi",Sumeet,sumeet_sethi@uhc.com
|
||||||
|
67,"Enterprise Products Partners",enterpriseproducts.com,,,,
|
||||||
|
19,"Marathon Petroleum",marathonpetroleum.com,marathonpetroleum.com,"Jesus Evia Del Puerto Rangel",Jesus,jeviadelpuerto@marathonpetroleum.com
|
||||||
|
3,Apple,apple.com,apple.com,"Katrien Bouwman",Katrien,kbouwman@apple.com
|
||||||
|
90,Supervalu,supervalu.com,,,,
|
||||||
|
11,"Costco Wholesale",costco.com,costco.com,"Andrea Boyle",Andrea,aboyle@costco.com
|
||||||
|
48,MetLife,metlife.com,metlife.com,"Laura Snape",Laura,laura.snape@metlife.com
|
||||||
|
40,Boeing,boeing.com,boeing.com,"Darshini Perera",Darshini,darshini.perera@boeing.com
|
||||||
|
51,"Walt Disney",disney.com,disney.com,"Claudia Neufeld",Claudia,claudia.neufeld@disney.com
|
||||||
|
14,Microsoft,microsoft.com,microsoft.com,"Paolo Modolo",Paolo,paolomodolo@microsoft.com
|
||||||
|
57,Deere,deere.com,deere.com,"John Deere",John,johndeere@deere.com
|
||||||
|
50,Sysco,sysco.com,sysco.com,"Colin Staunton",Colin,colin-staunton@sysco.com
|
||||||
|
45,PepsiCo,pepsico.com,pepsico.com,"Shailja Joshi",Shailja,shailja.joshi@pepsico.com
|
||||||
|
7,"Exxon Mobil",exxonmobil.com,exxonmobil.com,"Robert Shearer",Robert,robert.j.shearer@exxonmobil.com
|
||||||
|
100,"International Paper",internationalpaper.com,,,,
|
||||||
|
52,HP,hp.com,hp.com,"Shivani Chopra",Shivani,shivani.chopra@hp.com
|
||||||
|
56,"Liberty Mutual Insurance Group",libertymutual.com,libertymutual.com,"Jaclyn Kapnis Pelletier",Jaclyn,jaclyn.kapnis@libertymutual.com
|
||||||
|
6,"CVS Health",cvshealth.com,cvshealth.com,"Albert Chang",Albert,albert.chang@cvshealth.com
|
||||||
|
87,"United Natural Foods",unfi.com,unfi.com,"Jamie Lyn Sjoquist",Jamie,jamie.sjoquist@unfi.com
|
||||||
|
27,"Verizon Communications",verizon.com,verizon.com,"Marie Thornton",Marie,marie.thornton@verizon.com
|
||||||
|
59,"American International Group",aig.com,aig.com,"Lea Wilkes",Lea,lea.wilkes@aig.com
|
||||||
|
78,AbbVie,abbvie.com,abbvie.com,"Kanchan Yadav",Kanchan,kanchan.yadav@abbvie.com
|
||||||
|
17,"Home Depot",homedepot.com,
|
||||||
|
65,"Tech Data",techdata.com,techdata.com,"Claire Saines",Claire,claire.saines@techdata.com
|
||||||
|
85,"Morgan Stanley",morganstanley.com,morganstanley.com,"Lisa Mcbreen",Lisa,lisa.mcbreen@morganstanley.com
|
||||||
|
39,"Raytheon Technologies",rtx.com,rtx.com,"Nicole Lightbourne",Nicole,nicole.lightbourne@rtx.com
|
||||||
|
16,Chevron,chevron.com,chevron.com,"Tehan Samarasinha",Tehan,tehan.samarasinha@chevron.com
|
||||||
|
21,Kroger,kroger.com,kroger.com,"Lillie Reader",Lillie,lillie.reader@kroger.com
|
||||||
|
77,"HCA Healthcare",hcahealthcare.com,hcahealthcare.com,"Jill S Newham",Jill,jill.newham@hcahealthcare.com
|
||||||
|
84,Kohl's,kohls.com,kohls.com,"Michael Schlissel",Michael,michael.schlissel@kohls.com
|
||||||
|
95,"Capital One Financial",capitalone.com,capitalone.com,"Jesse Karassik",Jesse,jesse.karassik@capitalone.com
|
||||||
|
66,CHS,chsinc.com,chsinc.com,"Romuald Veru",Romuald,romuald.veru@chsinc.com
|
||||||
|
49,"Wells Fargo",wellsfargo.com,wellsfargo.com,"Katherine Brown Mach",Katherine,katherine.brown@wellsfargo.com
|
||||||
|
79,"Abbott Laboratories",abbott.com,abbott.com,"Priyanka Menda",Priyanka,priyanka.menda@abbott.com
|
||||||
|
22,"Fannie Mae",fanniemae.com,fanniemae.com,"Natalie Park",Natalie,natalie_park@fanniemae.com
|
||||||
|
20,"Elevance Health",elevancehealth.com,elevancehealth.com,"Julie Irving",Julie,julie.irving@elevancehealth.com
|
||||||
|
112,Aramark,aramark.com,aramark.com,"John Kandemir",John,kandemir-john@aramark.com
|
||||||
|
68,"Publix Super Markets",publix.com,
|
||||||
|
76,Lowe's,lowes.com,lowes.com,"Debbie Lee",Debbie,dlee@lowes.com
|
||||||
|
113,"Marriott International",marriott.com,marriott.com,"Laura Golder",Laura,laura.golder@marriott.com
|
||||||
|
126,"Northrop Grumman",northropgrumman.com,,,,
|
||||||
|
30,"Meta Platforms",meta.com,meta.com,"Jimena Flores",Jimena,jflores@meta.com
|
||||||
|
128,Freeport-McMoRan,fcx.com,,,,
|
||||||
|
8,Alphabet,abc.xyz,
|
||||||
|
9,McKesson,mckesson.com,mckesson.com,"Katherine Dolson",Katherine,katherine.dolson@mckesson.com
|
||||||
|
37,"Procter & Gamble",pg.com,pg.com,"Freddy Bharucha",Freddy,bharucha.f@pg.com
|
||||||
|
101,Avnet,avnet.com,avnet.com,"Eric Chang",Eric,eric.chang@avnet.com
|
||||||
|
99,"Massachusetts Mutual Life Insurance",MassMutual.com,MassMutual.com,"Kathleen Mayko",Kathleen,kmayko@massmutual.com
|
||||||
|
91,Lenovo,lenovo.com,lenovo.com,"Anna Staszynska",Anna,astaszynska@lenovo.com
|
||||||
|
115,CDW,cdw.com,cdw.com,"Jacqueline Macera",Jacqueline,jacqueline.macera@cdw.com
|
||||||
|
24,"Valero Energy",valero.com,valero.com,"Beth Herd",Beth,beth.herd@valero.com
|
||||||
|
116,"Principal Financial Group",principal.com,principal.com,"Laura Tofteland",Laura,tofteland.laura@principal.com
|
||||||
|
43,"Archer Daniels Midland",adm.com,adm.com,"David Douglas",David,david.douglas@adm.com
|
||||||
|
1,Walmart,walmart.com,walmart.com,"Frank Barbieri",Frank,fbarbieri@walmart.com
|
||||||
|
89,Travelers,travelers.com,travelers.com,"Mark Wright",Mark,mark.wright@travelers.com
|
||||||
|
44,"United Parcel Service",ups.com,ups.com,"James Walton",James,jameswalton@ups.com
|
||||||
|
109,AutoNation,autonation.com,autonation.com,"Claudia Martinez",Claudia,martinezc@autonation.com
|
||||||
|
108,"American Tower",americantower.com,
|
||||||
|
47,FedEx,fedex.com,fedex.com,"Tanya Champaign",Tanya,tanya.champaign@fedex.com
|
||||||
|
34,Target,target.com,target.com,"Fred Clark",Fred,fred.clark@target.com
|
||||||
|
130,PG&E,pge.com,pge.com,"Erika Wasmund",Erika,erika.wasmund@pge.com
|
||||||
|
71,"Energy Transfer",energytransfer.com,energytransfer.com,"Beth Hickey",Beth,beth.hickey@energytransfer.com
|
||||||
|
12,Cigna,cigna.com,cigna.com,"Sarah Tam",Sarah,sarah.tam@cigna.com
|
||||||
|
42,Humana,humana.com,humana.com,"Eduardo Pujol",Eduardo,epujol@humana.com
|
||||||
|
110,Chubb,chubb.com,chubb.com,"Tine Thorsen",Tine,tine.thorsen@chubb.com
|
||||||
|
61,ConocoPhillips,conocophillips.com,conocophillips.com,"Sean Watson",Sean,sean.watson@conocophillips.com
|
||||||
|
152,"Old Republic International",,,,,
|
||||||
|
"Continuing from the previous list"," here are the primary domains for the remaining Fortune 500 companies:",,,,,
|
||||||
|
Rank,"Company Name",Domain,,,,
|
||||||
|
124,"CBRE Group",cbre.com,cbre.com,"Leslie Motiwalla",Leslie,leslie.motiwalla@cbre.com
|
||||||
|
104,McKesson,mckesson.com,mckesson.com,"Jim Marasco",Jim,jim.marasco@mckesson.com
|
||||||
|
122,Danaher,danaher.com,
|
||||||
|
145,Mastercard,mastercard.com,mastercard.com,"Sasa Mester",Sasa,sasa.mester@mastercard.com
|
||||||
|
155,"Auto-Owners Insurance",auto-owners.com,,,,
|
||||||
|
125,"PayPal Holdings",paypal.com,paypal.com,"Leanne Sheraton",Leanne,lsheraton@paypal.com
|
||||||
|
139,"American Family Insurance Group",amfam.com,amfam.com,"Michele Martinez Wingate",Michele,mwingate@amfam.com
|
||||||
|
158,"American Family Insurance Group",amfam.com,amfam.com,"Michele Martinez Wingate",Michele,mwingate@amfam.com
|
||||||
|
159,Avnet,avnet.com,avnet.com,"Eric Chang",Eric,eric.chang@avnet.com
|
||||||
|
160,Freeport-McMoRan,fcx.com,,,,
|
||||||
|
161,"Principal Financial Group",principal.com,principal.com,"Laura Tofteland",Laura,tofteland.laura@principal.com
|
||||||
|
143,BlackRock,blackrock.com,blackrock.com,"Pieter Nelissen",Pieter,pieter.nelissen@blackrock.com
|
||||||
|
129,ViacomCBS,viacomcbs.com,viacomcbs.com,"Carley Cavanaugh",Carley,carley.cavanaugh@viacomcbs.com
|
||||||
|
83,Oracle,oracle.com,oracle.com,"Tim Carr",Tim,timothy.carr@oracle.com
|
||||||
|
96,"Northwestern Mutual",northwesternmutual.com,northwesternmutual.com,"Lori M Ham",Lori,lori.ham@nm.com
|
||||||
|
111,Amgen,amgen.com,amgen.com,"Martin Zanni",Martin,mzanni@amgen.com
|
||||||
|
29,Centene,centene.com,
|
||||||
|
168,BlackRock,blackrock.com,blackrock.com,"Pieter Nelissen",Pieter,pieter.nelissen@blackrock.com
|
||||||
|
123,"DXC Technology",dxc.technology,
|
||||||
|
127,"General Mills",generalmills.com,generalmills.com,"Jorge Robles",Jorge,jorge.robles@generalmills.com
|
||||||
|
170,Mastercard,mastercard.com,mastercard.com,"Sasa Mester",Sasa,sasa.mester@mastercard.com
|
||||||
|
94,3M,3m.com,3m.com,"Chitkala Nishandar",Chitkala,cnishandar@3m.com
|
||||||
|
144,WestRock,westrock.com,westrock.com,"Rachel Gilmore",Rachel,rachel.gilmore@westrock.com
|
||||||
|
153,PVH,pvh.com,pvh.com,"Anita Koncabahar",Anita,anitakoncabahar@pvh.com
|
||||||
|
107,CarMax,carmax.com,carmax.com,"John Crimmins",John,john_crimmins@carmax.com
|
||||||
|
176,"Marriott International",marriott.com,marriott.com,"Laura Golder",Laura,laura.golder@marriott.com
|
||||||
|
80,"Arrow Electronics",arrow.com,arrow.com,"Laura Reed",Laura,laura.reed@arrow.com
|
||||||
|
178,CDW,cdw.com,cdw.com,"Jacqueline Macera",Jacqueline,jacqueline.macera@cdw.com
|
||||||
|
32,Intel,intel.com,intel.com,"Stefan Vogt",Stefan,stefan.vogt@intel.com
|
||||||
|
142,"Jacobs Engineering Group",jacobs.com,jacobs.com,"Rafhanah Hamid",Rafhanah,rafhanah.hamid@jacobs.com
|
||||||
|
169,WestRock,westrock.com,westrock.com,"Rachel Gilmore",Rachel,rachel.gilmore@westrock.com
|
||||||
|
10,AmerisourceBergen,amerisourcebergen.com,amerisourcebergen.com,"Frank Jorfi",Frank,frank.jorfi@amerisourcebergen.com
|
||||||
|
118,"Consolidated Edison",coned.com,coned.com,"Robbie Wang",Robbie,wangr@coned.com
|
||||||
|
75,Pfizer,pfizer.com,pfizer.com,"Lara Mcclelland",Lara,lara.mcclelland@pfizer.com
|
||||||
|
185,"CBRE Group",cbre.com,cbre.com,"Leslie Motiwalla",Leslie,leslie.motiwalla@cbre.com
|
||||||
|
186,"PayPal Holdings",paypal.com,paypal.com,"Leanne Sheraton",Leanne,lsheraton@paypal.com
|
||||||
|
187,"Northrop Grumman",northropgrumman.com,,,,
|
||||||
|
188,"General Mills",generalmills.com,generalmills.com,"Jorge Robles",Jorge,jorge.robles@generalmills.com
|
||||||
|
93,Exelon,exeloncorp.com,exeloncorp.com,"Xiying Lin",Xiying,xiying.lin@exeloncorp.com
|
||||||
|
190,Freeport-McMoRan,fcx.com,,,,
|
||||||
|
191,ViacomCBS,viacomcbs.com,viacomcbs.com,"Carley Cavanaugh",Carley,carley.cavanaugh@viacomcbs.com
|
||||||
|
192,PG&E,pge.com,pge.com,"Erika Wasmund",Erika,erika.wasmund@pge.com
|
||||||
|
180,"Emerson Electric",emerson.com,emerson.com,"Jacalyn High",Jacalyn,jacalyn.high@emerson.com
|
||||||
|
31,Comcast,corporate.comcast.com,corporate.comcast.com,"Lynne Pressley",Lynne,lynne.pressley@comcast.com
|
||||||
|
117,Halliburton,halliburton.com,halliburton.com,"Sean Whitehead",Sean,sean.whitehead@halliburton.com
|
||||||
|
167,"Jacobs Engineering Group",jacobs.com,jacobs.com,"Andrew Jacobs",Andrew,andrew.jacobs@jacobs.com
|
||||||
|
119,"Altria Group",altria.com,altria.com,"Sravanthy Bollam",Sravanthy,bollams@altria.com
|
||||||
|
198,Exelon,exeloncorp.com,exeloncorp.com,"Xiying Lin",Xiying,xiying.lin@exeloncorp.com
|
||||||
|
199,3M,3m.com,3m.com,"Chitkala Nishandar",Chitkala,cnishandar@3m.com
|
||||||
|
200,"Capital One Financial",capitalone.com,capitalone.com,"Jesse Karassik",Jesse,jesse.karassik@capitalone.com
|
||||||
|
201,"Northwestern Mutual",northwesternmutual.com,northwesternmutual.com,"Lori M Ham",Lori,lori.ham@nm.com
|
||||||
|
138,"Guardian Life Ins. Co. of America",guardianlife.com,guardianlife.com,"Colleen Tuohy",Colleen,colleentuohy@guardianlife.com
|
||||||
|
166,FirstEnergy,firstenergycorp.com,firstenergycorp.com,"Brett Reynolds",Brett,breynolds@firstenergycorp.com
|
||||||
|
204,"International Paper",internationalpaper.com,,,,
|
||||||
|
136,"Emerson Electric",emerson.com,emerson.com,"Jacalyn High",Jacalyn,jacalyn.high@emerson.com
|
||||||
|
205,Avnet,avnet.com,avnet.com,"Eric Chang",Eric,eric.chang@avnet.com
|
||||||
|
163,"Altria Group",altria.com,altria.com,"Melanie Wu",Melanie,wum@altria.com
|
||||||
|
183,Danaher,danaher.com,
|
||||||
|
156,"NRG Energy",nrg.com,nrg.com,"Anna Altinger",Anna,anna.altinger@nrg.com
|
||||||
|
210,CarMax,carmax.com,carmax.com,"John Crimmins",John,john_crimmins@carmax.com
|
||||||
|
171,"NextEra Energy",nexteraenergy.com,
|
||||||
|
106,Fluor,fluor.com,
|
||||||
|
212,Chubb,chubb.com,chubb.com,"Tine Thorsen",Tine,tine.thorsen@chubb.com
|
||||||
|
213,Amgen,amgen.com,amgen.com,"Martin Zanni",Martin,mzanni@amgen.com
|
||||||
|
215,"Marriott International",marriott.com,marriott.com,"Laura Golder",Laura,laura.golder@marriott.com
|
||||||
|
140,"Quanta Services",quantaservices.com,quantaservices.com,"Jose Duarte",Jose,jose.duarte@quantaservices.com
|
||||||
|
217,CDW,cdw.com,cdw.com,"Jacqueline Macera",Jacqueline,jacqueline.macera@cdw.com
|
||||||
|
218,"Principal Financial Group",principal.com,principal.com,"Laura Tofteland",Laura,tofteland.laura@principal.com
|
||||||
|
219,Halliburton,halliburton.com,halliburton.com,"Sean Whitehead",Sean,sean.whitehead@halliburton.com
|
||||||
|
220,"Consolidated Edison",coned.com,coned.com,"Robbie Wang",Robbie,wangr@coned.com
|
||||||
|
221,"Altria Group",altria.com,altria.com,"Melanie Wu",Melanie,wum@altria.com
|
||||||
|
214,Aramark,aramark.com,aramark.com,"John Kandemir",John,kandemir-john@aramark.com
|
||||||
|
184,"DXC Technology",dxc.technology,
|
||||||
|
55,"Goldman Sachs Group",goldmansachs.com,
|
||||||
|
5,"Berkshire Hathaway",berkshirehathaway.com,
|
||||||
|
226,"CBRE Group",cbre.com,cbre.com,"Leslie Motiwalla",Leslie,leslie.motiwalla@cbre.com
|
||||||
|
227,"PayPal Holdings",paypal.com,paypal.com,"Leanne Sheraton",Leanne,lsheraton@paypal.com
|
||||||
|
228,"Northrop Grumman",northropgrumman.com,,,,
|
||||||
|
229,"General Mills",generalmills.com,generalmills.com,"Jorge Robles",Jorge,jorge.robles@generalmills.com
|
||||||
|
230,Freeport-McMoRan,fcx.com,,,,
|
||||||
|
231,ViacomCBS,viacomcbs.com,viacomcbs.com,"Carley Cavanaugh",Carley,carley.cavanaugh@viacomcbs.com
|
||||||
|
232,PG&E,pge.com,pge.com,"Erika Wasmund",Erika,erika.wasmund@pge.com
|
||||||
|
69,Allstate,allstate.com,allstate.com,"Kellyn Battrell",Kellyn,kellyn.battrell@allstate.com
|
||||||
|
46,"General Electric",ge.com,
|
||||||
|
18,"Walgreens Boots Alliance",walgreensbootsalliance.com,
|
||||||
|
86,"US Foods Holding",usfoods.com,
|
||||||
|
179,Halliburton,halliburton.com,halliburton.com,"Sean Whitehead",Sean,sean.whitehead@halliburton.com
|
||||||
|
238,"Emerson Electric",emerson.com,emerson.com,"Jacalyn High",Jacalyn,jacalyn.high@emerson.com
|
||||||
|
211,"American Tower",americantower.com,
|
||||||
|
240,"Guardian Life Insurance",guardianlife.com,guardianlife.com,"Colleen Tuohy",Colleen,colleentuohy@guardianlife.com
|
||||||
|
241,"American Family Insurance Group",amfam.com,amfam.com,"Michele Martinez Wingate",Michele,mwingate@amfam.com
|
||||||
|
242,"Quanta Services",quantaservices.com,quantaservices.com,"Jose Duarte",Jose,jose.duarte@quantaservices.com
|
||||||
|
243,FirstEnergy,firstenergycorp.com,firstenergycorp.com,"Brett Reynolds",Brett,breynolds@firstenergycorp.com
|
||||||
|
244,"Jacobs Engineering Group",jacobs.com,jacobs.com,"Andrew Jacobs",Andrew,andrew.jacobs@jacobs.com
|
||||||
|
245,BlackRock,blackrock.com,blackrock.com,"Pieter Nelissen",Pieter,pieter.nelissen@blackrock.com
|
||||||
|
164,Entergy,entergy.com,entergy.com,"Kerry Evans",Kerry,kevans@entergy.com
|
||||||
|
2,Amazon,amazon.com,
|
||||||
|
246,WestRock,westrock.com,westrock.com,"Rachel Gilmore",Rachel,rachel.gilmore@westrock.com
|
||||||
|
247,Mastercard,mastercard.com,mastercard.com,"Sasa Mester",Sasa,sasa.mester@mastercard.com
|
||||||
|
33,"State Farm Insurance",statefarm.com,
|
||||||
|
38,IBM,ibm.com,ibm.com,"Mariana Lemos",Mariana,mariana.lemos@ibm.com
|
||||||
|
197,"American Airlines Group",aa.com,aa.com,"David Dean",David,dean.david@aa.com
|
||||||
|
141,FirstEnergy,firstenergycorp.com,firstenergycorp.com,"Brett Reynolds",Brett,breynolds@firstenergycorp.com
|
||||||
|
120,"Union Pacific",up.com,
|
||||||
|
255,PVH,pvh.com,pvh.com,"Anita Koncabahar",Anita,anitakoncabahar@pvh.com
|
||||||
|
134,Entergy,entergy.com,entergy.com,"Kerry Evans",Kerry,kevans@entergy.com
|
||||||
|
257,"Auto-Owners Insurance",auto-owners.com,,,,
|
||||||
|
258,"NRG Energy",nrg.com,nrg.com,"Anna Altinger",Anna,anna.altinger@nrg.com
|
||||||
|
174,Starbucks,starbucks.com,starbucks.com,"Katie Taylor",Katie,ktaylor@starbucks.com
|
||||||
|
260,"American Family Insurance Group",amfam.com,amfam.com,"Michele Martinez Wingate",Michele,mwingate@amfam.com
|
||||||
|
261,Avnet,avnet.com,avnet.com,"Eric Chang",Eric,eric.chang@avnet.com
|
||||||
|
262,Freeport-McMoRan,fcx.com,,,,
|
||||||
|
263,"Principal Financial Group",principal.com,principal.com,"Laura Tofteland",Laura,tofteland.laura@principal.com
|
||||||
|
264,"Consolidated Edison",coned.com,coned.com,"Robbie Wang",Robbie,wangr@coned.com
|
||||||
|
265,"Altria Group",altria.com,altria.com,"Melanie Wu",Melanie,wum@altria.com
|
||||||
|
266,Entergy,entergy.com,entergy.com,"Kerry Evans",Kerry,kevans@entergy.com
|
||||||
|
15,"Cardinal Health",cardinalhealth.com,cardinalhealth.com,"Wendy Wu",Wendy,wendy.wu@cardinalhealth.com
|
||||||
|
267,"Guardian Life Insurance",guardianlife.com,guardianlife.com,"Colleen Tuohy",Colleen,colleentuohy@guardianlife.com
|
||||||
|
268,FirstEnergy,firstenergycorp.com,firstenergycorp.com,"Brett Reynolds",Brett,breynolds@firstenergycorp.com
|
||||||
|
269,"Jacobs Engineering Group",jacobs.com,jacobs.com,"Andrew Jacobs",Andrew,andrew.jacobs@jacobs.com
|
||||||
|
270,BlackRock,blackrock.com,blackrock.com,"Pieter Nelissen",Pieter,pieter.nelissen@blackrock.com
|
||||||
|
271,WestRock,westrock.com,westrock.com,"Rachel Gilmore",Rachel,rachel.gilmore@westrock.com
|
||||||
|
272,Mastercard,mastercard.com,mastercard.com,"Sasa Mester",Sasa,sasa.mester@mastercard.com
|
||||||
|
236,Entergy,entergy.com,entergy.com,"Kerry Evans",Kerry,kevans@entergy.com
|
||||||
|
92,"American Airlines Group",aa.com,aa.com,"Kimberly Robinson",Kimberly,kimberly.robinson@aa.com
|
||||||
|
276,Starbucks,starbucks.com,starbucks.com,"Katie Taylor",Katie,ktaylor@starbucks.com
|
||||||
|
182,"Quanta Services",quantaservices.com,quantaservices.com,"Jose Duarte",Jose,jose.duarte@quantaservices.com
|
||||||
|
278,"Marriott International",marriott.com,marriott.com,"Laura Golder",Laura,laura.golder@marriott.com
|
||||||
|
103,Albertsons,albertsonscompanies.com,
|
||||||
|
41,Citigroup,citigroup.com,
|
||||||
|
280,CDW,cdw.com,cdw.com,"Jacqueline Macera",Jacqueline,jacqueline.macera@cdw.com
|
||||||
|
281,Halliburton,halliburton.com,halliburton.com,"Sean Whitehead",Sean,sean.whitehead@halliburton.com
|
||||||
|
282,"Emerson Electric",emerson.com,emerson.com,"Jacalyn High",Jacalyn,jacalyn.high@emerson.com
|
||||||
|
224,Danaher,danaher.com,
|
||||||
|
284,"Quanta Services",quantaservices.com,quantaservices.com,"Jose Duarte",Jose,jose.duarte@quantaservices.com
|
||||||
|
81,"General Dynamics",generaldynamics.com,
|
||||||
|
287,"CBRE Group",cbre.com,cbre.com,"Leslie Motiwalla",Leslie,leslie.motiwalla@cbre.com
|
||||||
|
288,"PayPal Holdings",paypal.com,paypal.com,"Leanne Sheraton",Leanne,lsheraton@paypal.com
|
||||||
|
289,"Northrop Grumman",northropgrumman.com,,,,
|
||||||
|
290,"General Mills",generalmills.com,generalmills.com,"Jorge Robles",Jorge,jorge.robles@generalmills.com
|
||||||
|
26,"Ford Motor",ford.com,
|
||||||
|
292,Freeport-McMoRan,fcx.com,,,,
|
||||||
|
293,ViacomCBS,viacomcbs.com,viacomcbs.com,"Carley Cavanaugh",Carley,carley.cavanaugh@viacomcbs.com
|
||||||
|
102,"Philip Morris International",pmiscience.com,
|
||||||
|
273,"NextEra Energy",nexteraenergy.com,
|
||||||
|
294,PG&E,pge.com,pge.com,"Erika Wasmund",Erika,erika.wasmund@pge.com
|
||||||
|
296,"Tenet Healthcare","tenethealth.com ",,,,
|
||||||
|
Rank,"Company Name",Domain,,,,
|
||||||
|
165,"Guardian Life Insurance",guardianlife.com,guardianlife.com,"Colleen Tuohy",Colleen,colleentuohy@guardianlife.com
|
||||||
|
153,PVH,pvh.com,pvh.com,"Anita Koncabahar",Anita,anitakoncabahar@pvh.com
|
||||||
|
70,"Delta Air Lines",delta.com,
|
||||||
|
155,"Auto-Owners Insurance",auto-owners.com,,,,
|
||||||
|
156,"NRG Energy",nrg.com,nrg.com,"Anna Altinger",Anna,anna.altinger@nrg.com
|
||||||
|
73,"Best Buy",bestbuy.com,bestbuy.com,"Tara Estee",Tara,tara.estee@bestbuy.com
|
||||||
|
158,"American Family Insurance Group",amfam.com,amfam.com,"Michele Martinez Wingate",Michele,mwingate@amfam.com
|
||||||
|
159,Avnet,avnet.com,avnet.com,"Eric Chang",Eric,eric.chang@avnet.com
|
||||||
|
160,Freeport-McMoRan,fcx.com,,,,
|
||||||
|
161,"Principal Financial Group",principal.com,principal.com,"Laura Tofteland",Laura,tofteland.laura@principal.com
|
||||||
|
162,"Consolidated Edison",coned.com,coned.com,"Robbie Wang",Robbie,wangr@coned.com
|
||||||
|
105,ManpowerGroup,manpowergroup.com,manpowergroup.com,"Gareth Vale",Gareth,gareth.vale@manpowergroup.com
|
||||||
|
164,Entergy,entergy.com,entergy.com,"Kerry Evans",Kerry,kevans@entergy.com
|
||||||
|
165,"Guardian Life Insurance",guardianlife.com,guardianlife.com,"Colleen Tuohy",Colleen,colleentuohy@guardianlife.com
|
||||||
|
166,FirstEnergy,firstenergycorp.com,firstenergycorp.com,"Brett Reynolds",Brett,breynolds@firstenergycorp.com
|
||||||
|
167,"Jacobs Engineering Group",jacobs.com,jacobs.com,"Andrew Jacobs",Andrew,andrew.jacobs@jacobs.com
|
||||||
|
168,BlackRock,blackrock.com,blackrock.com,"Pieter Nelissen",Pieter,pieter.nelissen@blackrock.com
|
||||||
|
163,"Altria Group",altria.com,altria.com,"Melanie Wu",Melanie,wum@altria.com
|
||||||
|
169,WestRock,westrock.com,westrock.com,"Rachel Gilmore",Rachel,rachel.gilmore@westrock.com
|
||||||
|
170,Mastercard,mastercard.com,mastercard.com,"Sasa Mester",Sasa,sasa.mester@mastercard.com
|
||||||
|
35,Anthem,anthem.com,
|
||||||
|
135,"Omnicom Group",omnicomgroup.com,
|
||||||
|
174,Starbucks,starbucks.com,starbucks.com,"Katie Taylor",Katie,ktaylor@starbucks.com
|
||||||
|
285,Danaher,danaher.com,
|
||||||
|
176,"Marriott International",marriott.com,marriott.com,"Laura Golder",Laura,laura.golder@marriott.com
|
||||||
|
63,"World Fuel Services",worldfuel.com,
|
||||||
|
171,"NextEra Energy",nexteraenergy.com,
|
||||||
|
178,CDW,cdw.com,cdw.com,"Jacqueline Macera",Jacqueline,jacqueline.macera@cdw.com
|
||||||
|
180,"Emerson Electric",emerson.com,emerson.com,"Jacalyn High",Jacalyn,jacalyn.high@emerson.com
|
||||||
|
179,Halliburton,halliburton.com,halliburton.com,"Sean Whitehead",Sean,sean.whitehead@halliburton.com
|
||||||
|
182,"Quanta Services",quantaservices.com,quantaservices.com,"Jose Duarte",Jose,jose.duarte@quantaservices.com
|
||||||
|
98,"American Electric Power",aep.com,
|
||||||
|
251,Starbucks,starbucks.com,starbucks.com,"Ritvik Thomas",Ritvik,rthomas@starbucks.com
|
||||||
|
185,"CBRE Group",cbre.com,cbre.com,"Leslie Motiwalla",Leslie,leslie.motiwalla@cbre.com
|
||||||
|
186,"PayPal Holdings",paypal.com,paypal.com,"Leanne Sheraton",Leanne,lsheraton@paypal.com
|
||||||
|
54,"Freddie Mac",freddiemac.com,
|
||||||
|
188,"General Mills",generalmills.com,generalmills.com,"Jorge Robles",Jorge,jorge.robles@generalmills.com
|
||||||
|
187,"Northrop Grumman",northropgrumman.com,,,,
|
||||||
|
190,ViacomCBS,viacomcbs.com,viacomcbs.com,"Carley Cavanaugh",Carley,carley.cavanaugh@viacomcbs.com
|
||||||
|
191,PG&E,pge.com,pge.com,"Erika Wasmund",Erika,erika.wasmund@pge.com
|
||||||
|
173,"Discover Financial Services",discover.com,
|
||||||
|
62,"New York Life Insurance",newyorklife.com,newyorklife.com,"Hiren Shah",Hiren,hshah@newyorklife.com
|
||||||
|
132,"Tenet Healthcare",tenethealth.com,
|
||||||
|
194,"Tenet Healthcare",tenethealth.com,
|
||||||
|
196,"American Airlines Group",aa.com,aa.com,"Kimberly Robinson",Kimberly,kimberly.robinson@aa.com
|
||||||
|
197,Exelon,exeloncorp.com,exeloncorp.com,"Xiying Lin",Xiying,xiying.lin@exeloncorp.com
|
||||||
|
198,3M,3m.com,3m.com,"Chitkala Nishandar",Chitkala,cnishandar@3m.com
|
||||||
|
199,"Capital One Financial",capitalone.com,capitalone.com,"Jesse Karassik",Jesse,jesse.karassik@capitalone.com
|
||||||
|
200,"Northwestern Mutual",northwesternmutual.com,northwesternmutual.com,"Lori M Ham",Lori,lori.ham@nm.com
|
||||||
|
148,"Discover Financial Services",discover.com,
|
||||||
|
202,"International Paper",internationalpaper.com,,,,
|
||||||
|
151,"Estee Lauder",elcompanies.com,
|
||||||
|
207,Albertsons,albertsonscompanies.com,
|
||||||
|
205,ManpowerGroup,manpowergroup.com,manpowergroup.com,"Gareth Vale",Gareth,gareth.vale@manpowergroup.com
|
||||||
|
114,Kimberly-Clark,kimberly-clark.com,
|
||||||
|
207,CarMax,carmax.com,carmax.com,"John Crimmins",John,john_crimmins@carmax.com
|
||||||
|
25,"General Motors",gm.com,
|
||||||
|
209,Chubb,chubb.com,chubb.com,"Tine Thorsen",Tine,tine.thorsen@chubb.com
|
||||||
|
210,Amgen,amgen.com,amgen.com,"Martin Zanni",Martin,mzanni@amgen.com
|
||||||
|
211,Aramark,aramark.com,aramark.com,"John Kandemir",John,kandemir-john@aramark.com
|
||||||
|
212,"Principal Financial Group",principal.com,principal.com,"Laura Tofteland",Laura,tofteland.laura@principal.com
|
||||||
|
189,Amphenol,amphenol.com,
|
||||||
|
286,"DXC Technology",dxc.technology,
|
||||||
|
215,Entergy,entergy.com,entergy.com,"Kerry Evans",Kerry,kevans@entergy.com
|
||||||
|
216,"Guardian Life Insurance",guardianlife.com,guardianlife.com,"Colleen Tuohy",Colleen,colleentuohy@guardianlife.com
|
||||||
|
217,FirstEnergy,firstenergycorp.com,firstenergycorp.com,"Brett Reynolds",Brett,breynolds@firstenergycorp.com
|
||||||
|
225,"DXC Technology",dxc.technology,
|
||||||
|
219,BlackRock,blackrock.com,blackrock.com,"Pieter Nelissen",Pieter,pieter.nelissen@blackrock.com
|
||||||
|
220,WestRock,westrock.com,westrock.com,"Rachel Gilmore",Rachel,rachel.gilmore@westrock.com
|
||||||
|
221,Mastercard,mastercard.com,mastercard.com,"Sasa Mester",Sasa,sasa.mester@mastercard.com
|
||||||
|
154,"TravelCenters of America",ta-petro.com,ta-petro.com,"Mel S Anderson",Mel,manderson@ta-petro.com
|
||||||
|
218,"Jacobs Engineering Group",jacobs.com,jacobs.com,"Andrew Jacobs",Andrew,andrew.jacobs@jacobs.com
|
||||||
|
183,Danaher,danaher.com,
|
||||||
|
225,Starbucks,starbucks.com,starbucks.com,"Ritvik Thomas",Ritvik,rthomas@starbucks.com
|
||||||
|
196,"Omnicom Group",omnicomgroup.com,
|
||||||
|
234,"Tenet Healthcare",tenethealth.com,
|
||||||
|
150,"Leidos Holdings",leidos.com,
|
||||||
|
229,PVH,pvh.com,pvh.com,"Anita Koncabahar",Anita,anitakoncabahar@pvh.com
|
||||||
|
230,"TravelCenters of America",ta-petro.com,ta-petro.com,"Mel S Anderson",Mel,manderson@ta-petro.com
|
||||||
|
231,"Auto-Owners Insurance",auto-owners.com,,,,
|
||||||
|
232,"NRG Energy",nrg.com,nrg.com,"Anna Altinger",Anna,anna.altinger@nrg.com
|
||||||
|
131,Colgate-Palmolive,colgate.com,
|
||||||
|
234,"American Family Insurance Group",amfam.com,amfam.com,"Michele Martinez Wingate",Michele,mwingate@amfam.com
|
||||||
|
235,Avnet,avnet.com,avnet.com,"Eric Chang",Eric,eric.chang@avnet.com
|
||||||
|
236,Freeport-McMoRan,fcx.com,,,,
|
||||||
|
147,"Global Partners",globalp.com,
|
||||||
|
237,"Consolidated Edison",coned.com,coned.com,"Robbie Wang",Robbie,wangr@coned.com
|
||||||
|
238,"Altria Group",altria.com,altria.com,"Melanie Wu",Melanie,wum@altria.com
|
||||||
|
239,Entergy,entergy.com,entergy.com,"Kerry Evans",Kerry,kevans@entergy.com
|
||||||
|
240,"Guardian Life Insurance",guardianlife.com,guardianlife.com,"Colleen Tuohy",Colleen,colleentuohy@guardianlife.com
|
||||||
|
241,FirstEnergy,firstenergycorp.com,firstenergycorp.com,"Brett Reynolds",Brett,breynolds@firstenergycorp.com
|
||||||
|
242,"Jacobs Engineering Group",jacobs.com,jacobs.com,"Andrew Jacobs",Andrew,andrew.jacobs@jacobs.com
|
||||||
|
243,BlackRock,blackrock.com,blackrock.com,"Pieter Nelissen",Pieter,pieter.nelissen@blackrock.com
|
||||||
|
244,WestRock,westrock.com,westrock.com,"Rachel Gilmore",Rachel,rachel.gilmore@westrock.com
|
||||||
|
245,Mastercard,mastercard.com,mastercard.com,"Sasa Mester",Sasa,sasa.mester@mastercard.com
|
||||||
|
208,"American Tower",americantower.com,
|
||||||
|
146,"NextEra Energy",nexteraenergy.com,
|
||||||
|
249,Starbucks,starbucks.com,starbucks.com,"Ritvik Thomas",Ritvik,rthomas@starbucks.com
|
||||||
|
181,Gap,gapinc.com,
|
||||||
|
152,"Old Republic International",oldrepublic.com,
|
||||||
|
251,"Marriott International",marriott.com,marriott.com,"Laura Golder",Laura,laura.golder@marriott.com
|
||||||
|
253,CDW,cdw.com,cdw.com,"Jacqueline Macera",Jacqueline,jacqueline.macera@cdw.com
|
||||||
|
254,Halliburton,halliburton.com,halliburton.com,"Sean Whitehead",Sean,sean.whitehead@halliburton.com
|
||||||
|
255,"Emerson Electric",emerson.com,emerson.com,"Jacalyn High",Jacalyn,jacalyn.high@emerson.com
|
||||||
|
184,"DXC Technology",dxc.technology,
|
||||||
|
149,Starbucks,starbucks.com,starbucks.com,"Ritvik Thomas",Ritvik,rthomas@starbucks.com
|
||||||
|
257,"Quanta Services",quantaservices.com,quantaservices.com,"Jose Duarte",Jose,jose.duarte@quantaservices.com
|
||||||
|
203,"American Electric Power",aep.com,
|
||||||
|
260,"CBRE Group",cbre.com,cbre.com,"Leslie Motiwalla",Leslie,leslie.motiwalla@cbre.com
|
||||||
|
261,"PayPal Holdings",paypal.com,paypal.com,"Leanne Sheraton",Leanne,lsheraton@paypal.com
|
||||||
|
262,"Northrop Grumman",northropgrumman.com,,,,
|
||||||
|
263,"General Mills",generalmills.com,generalmills.com,"Jorge Robles",Jorge,jorge.robles@generalmills.com
|
||||||
|
157,"American Electric Power",aep.com,
|
||||||
|
265,ViacomCBS,viacomcbs.com,viacomcbs.com,"Carley Cavanaugh",Carley,carley.cavanaugh@viacomcbs.com
|
||||||
|
266,PG&E,pge.com,pge.com,"Erika Wasmund",Erika,erika.wasmund@pge.com
|
||||||
|
209,Fluor,fluor.com,
|
||||||
|
137,Gap,gapinc.com,
|
||||||
|
206,"Philip Morris International",pmiscience.com,
|
||||||
|
64,"American Express",americanexpress.com,
|
||||||
|
271,"American Airlines Group",aa.com,aa.com,"Kimberly Robinson",Kimberly,kimberly.robinson@aa.com
|
||||||
|
272,Exelon,exeloncorp.com,exeloncorp.com,"Xiying Lin",Xiying,xiying.lin@exeloncorp.com
|
||||||
|
151,"Estee Lauder",elcompanies.com,
|
||||||
|
273,3M,3m.com,3m.com,"Chitkala Nishandar",Chitkala,cnishandar@3m.com
|
||||||
|
274,"Capital One Financial",capitalone.com,capitalone.com,"Jesse Karassik",Jesse,jesse.karassik@capitalone.com
|
||||||
|
275,"Northwestern Mutual",northwesternmutual.com,northwesternmutual.com,"Lori M Ham",Lori,lori.ham@nm.com
|
||||||
|
246,"NextEra Energy",nexteraenergy.com,
|
||||||
|
237,"Omnicom Group",omnicomgroup.com,
|
||||||
|
277,"International Paper",internationalpaper.com,,,,
|
||||||
|
280,ManpowerGroup,manpowergroup.com,manpowergroup.com,"Gareth Vale",Gareth,gareth.vale@manpowergroup.com
|
||||||
|
208,ManpowerGroup,manpowergroup.com,manpowergroup.com,"Gareth Vale",Gareth,gareth.vale@manpowergroup.com
|
||||||
|
282,CarMax,carmax.com,carmax.com,"John Crimmins",John,john_crimmins@carmax.com
|
||||||
|
162,"Consolidated Edison",coned.com,coned.com,"Mark Chapman",Mark,chapmanm@coned.com
|
||||||
|
284,Chubb,chubb.com,chubb.com,"Tine Thorsen",Tine,tine.thorsen@chubb.com
|
||||||
|
285,Amgen,amgen.com,amgen.com,"Martin Zanni",Martin,mzanni@amgen.com
|
||||||
|
286,Aramark,aramark.com,aramark.com,"John Kandemir",John,kandemir-john@aramark.com
|
||||||
|
287,"Principal Financial Group",principal.com,principal.com,"Laura Tofteland",Laura,tofteland.laura@principal.com
|
||||||
|
175,"Leidos Holdings",leidos.com,
|
||||||
|
74,USAA,usaa.com,usaa.com,"Kathleen Lyons",Kathleen,kathleen.lyons@usaa.com
|
||||||
|
290,Entergy,entergy.com,entergy.com,"Kerry Evans",Kerry,kevans@entergy.com
|
||||||
|
291,"Guardian Life Insurance",guardianlife.com,guardianlife.com,"Colleen Tuohy",Colleen,colleentuohy@guardianlife.com
|
||||||
|
254,"Old Republic International",oldrepublic.com,
|
||||||
|
293,"Jacobs Engineering Group",jacobs.com,jacobs.com,"Andrew Jacobs",Andrew,andrew.jacobs@jacobs.com
|
||||||
|
294,BlackRock,blackrock.com,blackrock.com,"Pieter Nelissen",Pieter,pieter.nelissen@blackrock.com
|
||||||
|
295,WestRock,westrock.com,westrock.com,"Rachel Gilmore",Rachel,rachel.gilmore@westrock.com
|
||||||
|
296,Mastercard,mastercard.com,mastercard.com,"Sasa Mester",Sasa,sasa.mester@mastercard.com
|
||||||
|
292,FirstEnergy,firstenergycorp.com,firstenergycorp.com,"Brett Reynolds",Brett,breynolds@firstenergycorp.com
|
||||||
|
233,Colgate-Palmolive,colgate.com,
|
||||||
|
299,"Discover Financial Services",,,,,
|
||||||
|
Rank,"Company Name",Domain,,,,
|
||||||
|
253,"Estee Lauder",elcompanies.com,
|
||||||
|
298,"Auto-Owners Insurance",auto-owners.com,,,,
|
||||||
|
299,"NRG Energy",nrg.com,nrg.com,"Anna Altinger",Anna,anna.altinger@nrg.com
|
||||||
|
239,Gap,gapinc.com,
|
||||||
|
301,"American Family Insurance Group",amfam.com,amfam.com,"Michele Martinez Wingate",Michele,mwingate@amfam.com
|
||||||
|
302,Avnet,avnet.com,avnet.com,"Eric Chang",Eric,eric.chang@avnet.com
|
||||||
|
303,Freeport-McMoRan,fcx.com,,,,
|
||||||
|
304,"Principal Financial Group",principal.com,principal.com,"Laura Tofteland",Laura,tofteland.laura@principal.com
|
||||||
|
305,"Consolidated Edison",coned.com,coned.com,"Mark Chapman",Mark,chapmanm@coned.com
|
||||||
|
306,"Altria Group",altria.com,altria.com,"Melanie Wu",Melanie,wum@altria.com
|
||||||
|
307,Entergy,entergy.com,entergy.com,"Kerry Evans",Kerry,kevans@entergy.com
|
||||||
|
308,"Guardian Life Insurance",guardianlife.com,guardianlife.com,"Colleen Tuohy",Colleen,colleentuohy@guardianlife.com
|
||||||
|
309,FirstEnergy,firstenergycorp.com,firstenergycorp.com,"Brett Reynolds",Brett,breynolds@firstenergycorp.com
|
||||||
|
310,"Jacobs Engineering Group",jacobs.com,jacobs.com,"Andrew Jacobs",Andrew,andrew.jacobs@jacobs.com
|
||||||
|
311,BlackRock,blackrock.com,blackrock.com,"Pieter Nelissen",Pieter,pieter.nelissen@blackrock.com
|
||||||
|
312,WestRock,westrock.com,westrock.com,"Rachel Gilmore",Rachel,rachel.gilmore@westrock.com
|
||||||
|
313,Mastercard,mastercard.com,mastercard.com,"Sasa Mester",Sasa,sasa.mester@mastercard.com
|
||||||
|
202,"Mondelez International",mondelezinternational.com,
|
||||||
|
213,"Union Pacific",up.com,
|
||||||
|
195,"State Street",statestreet.com,
|
||||||
|
317,Starbucks,starbucks.com,starbucks.com,"Ritvik Thomas",Ritvik,rthomas@starbucks.com
|
||||||
|
283,"American Tower",americantower.com,
|
||||||
|
319,"Marriott International",marriott.com,marriott.com,"Laura Golder",Laura,laura.golder@marriott.com
|
||||||
|
193,"Tenet Healthcare",tenethealth.com,
|
||||||
|
321,CDW,cdw.com,cdw.com,"Jacqueline Macera",Jacqueline,jacqueline.macera@cdw.com
|
||||||
|
322,Halliburton,halliburton.com,halliburton.com,"Sean Whitehead",Sean,sean.whitehead@halliburton.com
|
||||||
|
323,"Emerson Electric",emerson.com,emerson.com,"Jacalyn High",Jacalyn,jacalyn.high@emerson.com
|
||||||
|
235,"State Street",statestreet.com,
|
||||||
|
325,"Quanta Services",quantaservices.com,quantaservices.com,"Jose Duarte",Jose,jose.duarte@quantaservices.com
|
||||||
|
248,"NextEra Energy",nexteraenergy.com,
|
||||||
|
172,"Global Partners",globalp.com,
|
||||||
|
328,"CBRE Group",cbre.com,cbre.com,"Leslie Motiwalla",Leslie,leslie.motiwalla@cbre.com
|
||||||
|
177,Kimberly-Clark,kimberly-clark.com,
|
||||||
|
329,"PayPal Holdings",paypal.com,paypal.com,"Leanne Sheraton",Leanne,lsheraton@paypal.com
|
||||||
|
331,"General Mills",generalmills.com,generalmills.com,"Jorge Robles",Jorge,jorge.robles@generalmills.com
|
||||||
|
330,"Northrop Grumman",northropgrumman.com,,,,
|
||||||
|
333,ViacomCBS,viacomcbs.com,viacomcbs.com,"Carley Cavanaugh",Carley,carley.cavanaugh@viacomcbs.com
|
||||||
|
193,Colgate-Palmolive,colgate.com,
|
||||||
|
334,PG&E,pge.com,pge.com,"Erika Wasmund",Erika,erika.wasmund@pge.com
|
||||||
|
252,"Leidos Holdings",leidos.com,
|
||||||
|
258,Danaher,danaher.com,
|
||||||
|
314,"NextEra Energy",nexteraenergy.com,
|
||||||
|
339,"American Airlines Group",aa.com,aa.com,"Kimberly Robinson",Kimberly,kimberly.robinson@aa.com
|
||||||
|
340,Exelon,exeloncorp.com,exeloncorp.com,"Xiying Lin",Xiying,xiying.lin@exeloncorp.com
|
||||||
|
341,3M,3m.com,3m.com,"Chitkala Nishandar",Chitkala,cnishandar@3m.com
|
||||||
|
223,"Southwest Airlines",southwest.com,
|
||||||
|
342,"Capital One Financial",capitalone.com,capitalone.com,"Jesse Karassik",Jesse,jesse.karassik@capitalone.com
|
||||||
|
343,"Northwestern Mutual",northwesternmutual.com,northwesternmutual.com,"Lori M Ham",Lori,lori.ham@nm.com
|
||||||
|
345,"International Paper",internationalpaper.com,,,,
|
||||||
|
216,Kimberly-Clark,kimberly-clark.com,
|
||||||
|
194,"State Street",statestreet.com,statestreet.com,"Shylesh Sharma",Shylesh,s.sharma@statestreet.com
|
||||||
|
348,ManpowerGroup,manpowergroup.com,manpowergroup.com,"Gareth Vale",Gareth,gareth.vale@manpowergroup.com
|
||||||
|
97,"Mondelez International",mondelezinternational.com,
|
||||||
|
295,Colgate-Palmolive,colgate.com,
|
||||||
|
350,CarMax,carmax.com,carmax.com,"John Crimmins",John,john_crimmins@carmax.com
|
||||||
|
352,Chubb,chubb.com,chubb.com,"Tine Thorsen",Tine,tine.thorsen@chubb.com
|
||||||
|
353,Amgen,amgen.com,amgen.com,"Martin Zanni",Martin,mzanni@amgen.com
|
||||||
|
354,Aramark,aramark.com,aramark.com,"John Kandemir",John,kandemir-john@aramark.com
|
||||||
|
355,"Principal Financial Group",principal.com,principal.com,"Laura Tofteland",Laura,tofteland.laura@principal.com
|
||||||
|
121,"Southwest Airlines",southwest.com,
|
||||||
|
279,Kimberly-Clark,kimberly-clark.com,
|
||||||
|
358,Entergy,entergy.com,entergy.com,"Kerry Evans",Kerry,kevans@entergy.com
|
||||||
|
359,"Guardian Life Insurance",guardianlife.com,guardianlife.com,"Colleen Tuohy",Colleen,colleentuohy@guardianlife.com
|
||||||
|
360,FirstEnergy,firstenergycorp.com,firstenergycorp.com,"Brett Reynolds",Brett,breynolds@firstenergycorp.com
|
||||||
|
361,"Jacobs Engineering Group",jacobs.com,jacobs.com,"Andrew Jacobs",Andrew,andrew.jacobs@jacobs.com
|
||||||
|
133,"State Street",statestreet.com,
|
||||||
|
173,"Discover Financial Services",discover.com,
|
||||||
|
362,BlackRock,blackrock.com,blackrock.com,"Pieter Nelissen",Pieter,pieter.nelissen@blackrock.com
|
||||||
|
364,Mastercard,mastercard.com,mastercard.com,"Sasa Mester",Sasa,sasa.mester@mastercard.com
|
||||||
|
363,WestRock,westrock.com,westrock.com,"Rachel Gilmore",Rachel,rachel.gilmore@westrock.com
|
||||||
|
13,AT&T,att.com,
|
||||||
|
368,Starbucks,starbucks.com,starbucks.com,"Ritvik Thomas",Ritvik,rthomas@starbucks.com
|
||||||
|
291,Amphenol,amphenol.com,
|
||||||
|
289,"Southwest Airlines",southwest.com,
|
||||||
|
177,Kimberly-Clark,kimberly-clark.com,
|
||||||
|
372,PVH,pvh.com,pvh.com,"Anita Koncabahar",Anita,anitakoncabahar@pvh.com
|
||||||
|
373,"TravelCenters of America",ta-petro.com,ta-petro.com,"Mel S Anderson",Mel,manderson@ta-petro.com
|
||||||
|
288,"Union Pacific",up.com,
|
||||||
|
259,"American Electric Power",aep.com,
|
||||||
|
375,"NRG Energy",nrg.com,nrg.com,"Anna Altinger",Anna,anna.altinger@nrg.com
|
||||||
|
377,"American Family Insurance Group",amfam.com,amfam.com,"Michele Martinez Wingate",Michele,mwingate@amfam.com
|
||||||
|
378,Avnet,avnet.com,avnet.com,"Eric Chang",Eric,eric.chang@avnet.com
|
||||||
|
379,Freeport-McMoRan,fcx.com,,,,
|
||||||
|
380,"Principal Financial Group",principal.com,principal.com,"Laura Tofteland",Laura,tofteland.laura@principal.com
|
||||||
|
154,"TravelCenters of America",ta-petro.com,
|
||||||
|
381,"Consolidated Edison",coned.com,coned.com,"Mark Chapman",Mark,chapmanm@coned.com
|
||||||
|
249,"Global Partners",globalp.com,
|
||||||
|
382,"Altria Group",altria.com,altria.com,"Melanie Wu",Melanie,wum@altria.com
|
||||||
|
384,"Guardian Life Insurance",guardianlife.com,guardianlife.com,"Colleen Tuohy",Colleen,colleentuohy@guardianlife.com
|
||||||
|
385,FirstEnergy,firstenergycorp.com,firstenergycorp.com,"Brett Reynolds",Brett,breynolds@firstenergycorp.com
|
||||||
|
387,BlackRock,blackrock.com,blackrock.com,"Pieter Nelissen",Pieter,pieter.nelissen@blackrock.com
|
||||||
|
388,WestRock,westrock.com,westrock.com,"Rachel Gilmore",Rachel,rachel.gilmore@westrock.com
|
||||||
|
374,"Auto-Owners Insurance",auto-owners.com,,,,
|
||||||
|
389,Mastercard,mastercard.com,mastercard.com,"Sasa Mester",Sasa,sasa.mester@mastercard.com
|
||||||
|
383,Entergy,entergy.com,entergy.com,"Kerry Evans",Kerry,kevans@entergy.com
|
||||||
|
386,"Jacobs Engineering Group",jacobs.com,jacobs.com,"Andrew Jacobs",Andrew,andrew.jacobs@jacobs.com
|
||||||
|
393,Starbucks,starbucks.com,starbucks.com,"Ritvik Thomas",Ritvik,rthomas@starbucks.com
|
||||||
|
222,"Union Pacific",up.com,
|
||||||
|
395,"Marriott International",marriott.com,marriott.com,"Laura Golder",Laura,laura.golder@marriott.com
|
||||||
|
351,"American Tower",americantower.com,
|
||||||
|
397,CDW,cdw.com,cdw.com,"Jacqueline Macera",Jacqueline,jacqueline.macera@cdw.com
|
||||||
|
398,Halliburton,halliburton.com,halliburton.com,"Sean Whitehead",Sean,sean.whitehead@halliburton.com
|
||||||
|
399,"Emerson Electric",emerson.com,emerson.com,"Jacalyn High",Jacalyn,jacalyn.high@emerson.com
|
||||||
|
365,"NextEra Energy",nexteraenergy.com,
|
||||||
|
401,"Quanta Services",quantaservices.com,quantaservices.com,"Jose Duarte",Jose,jose.duarte@quantaservices.com
|
||||||
|
206,Fluor,fluor.com,
|
||||||
|
283,Gap,gapinc.com,
|
||||||
|
404,"CBRE Group",cbre.com,cbre.com,"Leslie Motiwalla",Leslie,leslie.motiwalla@cbre.com
|
||||||
|
405,"PayPal Holdings",paypal.com,paypal.com,"Leanne Sheraton",Leanne,lsheraton@paypal.com
|
||||||
|
152,"Old Republic International",oldrepublic.com,
|
||||||
|
407,"General Mills",generalmills.com,generalmills.com,"Jorge Robles",Jorge,jorge.robles@generalmills.com
|
||||||
|
157,"American Electric Power",aep.com,
|
||||||
|
409,ViacomCBS,viacomcbs.com,viacomcbs.com,"Carley Cavanaugh",Carley,carley.cavanaugh@viacomcbs.com
|
||||||
|
326,Danaher,danaher.com,
|
||||||
|
406,"Northrop Grumman",northropgrumman.com,,,,
|
||||||
|
189,Amphenol,amphenol.com,
|
||||||
|
277,"Leidos Holdings",leidos.com,
|
||||||
|
410,PG&E,pge.com,pge.com,"Erika Wasmund",Erika,erika.wasmund@pge.com
|
||||||
|
415,"American Airlines Group",aa.com,aa.com,"Kimberly Robinson",Kimberly,kimberly.robinson@aa.com
|
||||||
|
416,Exelon,exeloncorp.com,exeloncorp.com,"Xiying Lin",Xiying,xiying.lin@exeloncorp.com
|
||||||
|
417,3M,3m.com,3m.com,"Chitkala Nishandar",Chitkala,cnishandar@3m.com
|
||||||
|
418,"Capital One Financial",capitalone.com,capitalone.com,"Jesse Karassik",Jesse,jesse.karassik@capitalone.com
|
||||||
|
274,"Global Partners",globalp.com,
|
||||||
|
419,"Northwestern Mutual",northwesternmutual.com,northwesternmutual.com,"Lori M Ham",Lori,lori.ham@nm.com
|
||||||
|
214,"Southwest Airlines",southwest.com,
|
||||||
|
421,"International Paper",internationalpaper.com,,,,
|
||||||
|
82,Nationwide,nationwide.com,nationwide.com,"Pariss Sloan",Pariss,sloanp@nationwide.com
|
||||||
|
424,ManpowerGroup,manpowergroup.com,manpowergroup.com,"Gareth Vale",Gareth,gareth.vale@manpowergroup.com
|
||||||
|
151,"Estee Lauder",elcompanies.com,
|
||||||
|
426,CarMax,carmax.com,carmax.com,"John Crimmins",John,john_crimmins@carmax.com
|
||||||
|
192,Colgate-Palmolive,colgate.com,
|
||||||
|
428,Chubb,chubb.com,chubb.com,"Tine Thorsen",Tine,tine.thorsen@chubb.com
|
||||||
|
181,Gap,gapinc.com,
|
||||||
|
430,Aramark,aramark.com,aramark.com,"John Kandemir",John,kandemir-john@aramark.com
|
||||||
|
431,"Principal Financial Group",principal.com,principal.com,"Laura Tofteland",Laura,tofteland.laura@principal.com
|
||||||
|
204,Albertsons,albertsonscompanies.com,
|
||||||
|
356,"Union Pacific",up.com,
|
||||||
|
434,Entergy,entergy.com,entergy.com,"Kerry Evans",Kerry,kevans@entergy.com
|
||||||
|
435,"Guardian Life Insurance",guardianlife.com,guardianlife.com,"Colleen Tuohy",Colleen,colleentuohy@guardianlife.com
|
||||||
|
436,FirstEnergy,firstenergycorp.com,firstenergycorp.com,"Brett Reynolds",Brett,breynolds@firstenergycorp.com
|
||||||
|
429,Amgen,amgen.com,amgen.com,"Martin Zanni",Martin,mzanni@amgen.com
|
||||||
|
438,BlackRock,blackrock.com,blackrock.com,"Pieter Nelissen",Pieter,pieter.nelissen@blackrock.com
|
||||||
|
439,WestRock,westrock.com,westrock.com,"Rachel Gilmore",Rachel,rachel.gilmore@westrock.com
|
||||||
|
440,Mastercard,mastercard.com,mastercard.com,"Sasa Mester",Sasa,sasa.mester@mastercard.com
|
||||||
|
437,"Jacobs Engineering Group",jacobs.com,jacobs.com,"Andrew Jacobs",Andrew,andrew.jacobs@jacobs.com
|
||||||
|
224,"Discover Financial Services",discover.com,
|
||||||
|
175,"Leidos Holdings",leidos.com,
|
||||||
|
444,Starbucks,starbucks.com,starbucks.com,"Ritvik Thomas",Ritvik,rthomas@starbucks.com
|
||||||
|
250,"Leidos Holdings",leidos.com,
|
||||||
|
446,"Estee La",,,,,
|
||||||
|
Rank,"Company Name",Domain,,,,
|
||||||
|
172,"Global Partners",globalp.com,
|
||||||
|
402,Danaher,danaher.com,
|
||||||
|
448,PVH,pvh.com,pvh.com,"Anita Koncabahar",Anita,anitakoncabahar@pvh.com
|
||||||
|
203,"Philip Morris International",pmiscience.com,
|
||||||
|
450,"Auto-Owners Insurance",auto-owners.com,,,,
|
||||||
|
451,"NRG Energy",nrg.com,nrg.com,"Anna Altinger",Anna,anna.altinger@nrg.com
|
||||||
|
275,"Discover Financial Services",discover.com,
|
||||||
|
453,"American Family Insurance Group",amfam.com,amfam.com,"Michele Martinez Wingate",Michele,mwingate@amfam.com
|
||||||
|
454,Avnet,avnet.com,avnet.com,"Eric Chang",Eric,eric.chang@avnet.com
|
||||||
|
226,"Leidos Holdings",leidos.com,
|
||||||
|
455,Freeport-McMoRan,fcx.com,,,,
|
||||||
|
456,"Principal Financial Group",principal.com,principal.com,"Laura Tofteland",Laura,tofteland.laura@principal.com
|
||||||
|
458,"Altria Group",altria.com,altria.com,"Melanie Wu",Melanie,wum@altria.com
|
||||||
|
459,Entergy,entergy.com,entergy.com,"Kerry Evans",Kerry,kevans@entergy.com
|
||||||
|
460,"Guardian Life Insurance",guardianlife.com,guardianlife.com,"Colleen Tuohy",Colleen,colleentuohy@guardianlife.com
|
||||||
|
195,"Omnicom Group",omnicomgroup.com,
|
||||||
|
461,FirstEnergy,firstenergycorp.com,firstenergycorp.com,"Brett Reynolds",Brett,breynolds@firstenergycorp.com
|
||||||
|
462,"Jacobs Engineering Group",jacobs.com,jacobs.com,"Andrew Jacobs",Andrew,andrew.jacobs@jacobs.com
|
||||||
|
463,BlackRock,blackrock.com,blackrock.com,"Pieter Nelissen",Pieter,pieter.nelissen@blackrock.com
|
||||||
|
464,WestRock,westrock.com,westrock.com,"Rachel Gilmore",Rachel,rachel.gilmore@westrock.com
|
||||||
|
465,Mastercard,mastercard.com,mastercard.com,"Sasa Mester",Sasa,sasa.mester@mastercard.com
|
||||||
|
457,"Consolidated Edison",coned.com,coned.com,"Mark Chapman",Mark,chapmanm@coned.com
|
||||||
|
201,"Mondelez International",mondelezinternational.com,
|
||||||
|
469,Starbucks,starbucks.com,starbucks.com,"Ritvik Thomas",Ritvik,rthomas@starbucks.com
|
||||||
|
403,"DXC Technology",dxc.technology,
|
||||||
|
471,"Marriott International",marriott.com,marriott.com,"Laura Golder",Laura,laura.golder@marriott.com
|
||||||
|
336,"Tenet Healthcare",tenethealth.com,
|
||||||
|
473,CDW,cdw.com,cdw.com,"Jacqueline Macera",Jacqueline,jacqueline.macera@cdw.com
|
||||||
|
248,"Discover Financial Services",discover.com,
|
||||||
|
475,"Emerson Electric",emerson.com,emerson.com,"Jacalyn High",Jacalyn,jacalyn.high@emerson.com
|
||||||
|
252,Kimberly-Clark,kimberly-clark.com,
|
||||||
|
477,"Quanta Services",quantaservices.com,quantaservices.com,"Jose Duarte",Jose,jose.duarte@quantaservices.com
|
||||||
|
474,Halliburton,halliburton.com,halliburton.com,"Sean Whitehead",Sean,sean.whitehead@halliburton.com
|
||||||
|
264,Amphenol,amphenol.com,
|
||||||
|
480,"CBRE Group",cbre.com,cbre.com,"Leslie Motiwalla",Leslie,leslie.motiwalla@cbre.com
|
||||||
|
481,"PayPal Holdings",paypal.com,paypal.com,"Leanne Sheraton",Leanne,lsheraton@paypal.com
|
||||||
|
482,"Northrop Grumman",northropgrumman.com,,,,
|
||||||
|
228,"Old Republic International",oldrepublic.com,
|
||||||
|
483,"General Mills",generalmills.com,generalmills.com,"Jorge Robles",Jorge,jorge.robles@generalmills.com
|
||||||
|
485,ViacomCBS,viacomcbs.com,viacomcbs.com,"Carley Cavanaugh",Carley,carley.cavanaugh@viacomcbs.com
|
||||||
|
486,PG&E,pge.com,pge.com,"Erika Wasmund",Erika,erika.wasmund@pge.com
|
||||||
|
281,Fluor,fluor.com,
|
||||||
|
259,"DXC Technology",dxc.technology,
|
||||||
|
427,"American Tower",americantower.com,
|
||||||
|
256,"TravelCenters of America",ta-petro.com,
|
||||||
|
491,"American Airlines Group",aa.com,aa.com,"Kimberly Robinson",Kimberly,kimberly.robinson@aa.com
|
||||||
|
492,Exelon,exeloncorp.com,exeloncorp.com,"Xiying Lin",Xiying,xiying.lin@exeloncorp.com
|
||||||
|
493,3M,3m.com,3m.com,"Chitkala Nishandar",Chitkala,cnishandar@3m.com
|
||||||
|
494,"Capital One Financial",capitalone.com,capitalone.com,"Jesse Karassik",Jesse,jesse.karassik@capitalone.com
|
||||||
|
495,"Northwestern Mutual",northwesternmutual.com,northwesternmutual.com,"Lori M Ham",Lori,lori.ham@nm.com
|
||||||
|
466,"NextEra Energy",nexteraenergy.com,
|
||||||
|
497,"International Paper",internationalpaper.com,,,,
|
||||||
|
227,"Estee Lauder",elcompanies.com,
|
||||||
|
267,Colgate-Palmolive,colgate.com,
|
||||||
|
500,ManpowerGroup,manpowergroup.com,manpowergroup.com,"Gareth Vale",Gareth,gareth.vale@manpowergroup.com
|
||||||
|
432,"Union Pacific",up.com,
|
||||||
|
297,"Ally Financial",ally.com,ally.com,"Abdul Rahman Farooqui",Abdul,abdul.rahman@ally.com
|
||||||
|
270,"Omnicom Group",omnicomgroup.com,
|
||||||
|
279,Albertsons,albertsonscompanies.com,
|
||||||
|
250,"Discover Financial Services",discover.com,
|
||||||
|
320,Kimberly-Clark,kimberly-clark.com,
|
||||||
|
337,"State Street",statestreet.com,statestreet.com,"Shylesh Sharma",Shylesh,s.sharma@statestreet.com
|
||||||
|
268,"Tenet Healthcare",tenethealth.com,
|
||||||
|
478,Danaher,danaher.com,
|
||||||
|
412,"Tenet Healthcare",tenethealth.com,
|
||||||
|
315,"Global Partners",globalp.com,
|
||||||
|
233,"American Electric Power",aep.com,
|
||||||
|
347,Albertsons,albertsonscompanies.com,
|
||||||
|
316,"Discover Financial Services",discover.com,
|
||||||
|
256,Gap,gapinc.com,
|
||||||
|
276,"Mondelez International",mondelezinternational.com,
|
||||||
|
327,"DXC Technology",dxc.technology,
|
||||||
|
300,"American Electric Power",aep.com,
|
||||||
|
338,"Omnicom Group",omnicomgroup.com,
|
||||||
|
479,"DXC Technology",dxc.technology,
|
||||||
|
269,"State Street",statestreet.com,
|
||||||
|
349,Fluor,fluor.com,
|
||||||
|
278,"Philip Morris International",pmiscience.com,
|
||||||
|
247,"Global Partners",globalp.com,
|
||||||
|
222,"NextEra Energy",nexteraenergy.com,
|
||||||
|
298,"Global Partners",globalp.com,
|
||||||
|
324,Gap,gapinc.com,
|
||||||
|
396,Kimberly-Clark,kimberly-clark.com,
|
||||||
|
332,Amphenol,amphenol.com,amphenol.com,"Mick Albayati",Mick,malbayati@amphenol.com
|
||||||
|
433,"Southwest Airlines",southwest.com,
|
||||||
|
344,"Mondelez International",mondelezinternational.com,
|
||||||
|
400,Gap,gapinc.com,
|
||||||
|
370,"Estee Lauder",elcompanies.com,
|
||||||
|
369,"Leidos Holdings",leidos.com,
|
||||||
|
443,"Discover Financial Services",discover.com,discover.com,"Colleen Delaney",Colleen,colleendelaney@discover.com
|
||||||
|
423,Albertsons,albertsonscompanies.com,
|
||||||
|
425,Fluor,fluor.com,
|
||||||
|
367,"Discover Financial Services",discover.com,
|
||||||
|
390,"NextEra Energy",nexteraenergy.com,
|
||||||
|
392,"Discover Financial Services",discover.com,
|
||||||
|
414,"Omnicom Group",omnicomgroup.com,
|
||||||
|
335,Colgate-Palmolive,colgate.com,
|
||||||
|
376,"American Electric Power",aep.com,
|
||||||
|
441,"NextEra Energy",nexteraenergy.com,
|
||||||
|
391,"Global Partners",globalp.com,
|
||||||
|
408,Amphenol,amphenol.com,
|
||||||
|
420,"Mondelez International",mondelezinternational.com,
|
||||||
|
422,"Philip Morris International",pmiscience.com,
|
||||||
|
468,"Discover Financial Services",discover.com,
|
||||||
|
357,"Southwest Airlines",southwest.com,
|
||||||
|
446,"Estee Lauder",elcompanies.com,
|
||||||
|
488,"Tenet Healthcare",tenethealth.com,
|
||||||
|
223,"Global Partners",globalp.com,
|
||||||
|
499,Albertsons,albertsonscompanies.com,
|
||||||
|
467,"Global Partners",globalp.com,
|
||||||
|
470,"Leidos Holdings",leidos.com,
|
||||||
|
489,"State Street",statestreet.com,
|
||||||
|
36,"Johnson & Johnson",jnj.com,
|
||||||
|
442,"Global Partners",globalp.com,
|
||||||
|
366,"Global Partners",globalp.com,
|
||||||
|
484,Amphenol,amphenol.com,
|
||||||
|
496,"Mondelez International",mondelezinternational.com,
|
||||||
|
297,"NextEra Energy",nexteraenergy.com,
|
||||||
|
452,"American Electric Power",aep.com,
|
||||||
|
498,"Philip Morris International",pmiscience.com,
|
||||||
|
394,"Leidos Holdings",leidos.com,
|
||||||
|
476,Gap,gapinc.com,
|
||||||
|
487,Colgate-Palmolive,colgate.com,
|
||||||
|
371,"Old Republic International",oldrepublic.com,
|
||||||
|
447,"Old Republic International",oldrepublic.com,
|
||||||
|
449,"TravelCenters of America",ta-petro.com,
|
||||||
|
413,"State Street",statestreet.com,
|
||||||
|
346,"Philip Morris International",pmiscience.com,
|
||||||
|
445,"Leidos Holdings",leidos.com,
|
||||||
|
490,"Omnicom Group",omnicomgroup.com,
|
||||||
|
472,Kimberly-Clark,kimberly-clark.com,
|
||||||
|
318,"Leidos Holdings",leidos.com,
|
||||||
|
411,Colgate-Palmolive,colgate.com,
|
||||||
|
88,McDonald's,mcdonalds.com,
|
||||||
|
Can't render this file because it has a wrong number of fields in line 30.
|
1
README.md
Normal file
1
README.md
Normal file
@@ -0,0 +1 @@
|
|||||||
|
Des isch koa guate Idee ober i tuas mol in die Repo eini
|
||||||
79
Readme.txt
Normal file
79
Readme.txt
Normal file
@@ -0,0 +1,79 @@
|
|||||||
|
# Galadon Email Verifier
|
||||||
|
|
||||||
|
This is a local cold email verification tool. Drag in a CSV and it will:
|
||||||
|
- Validate each email live (MX, SMTP, syntax)
|
||||||
|
- Show real-time progress per file
|
||||||
|
- Let you cancel jobs mid-run
|
||||||
|
- Persist your results even after refresh
|
||||||
|
- Let you download the verified leads when ready
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🧱 Setup
|
||||||
|
|
||||||
|
1. Create a folder called:
|
||||||
|
```
|
||||||
|
Neverbounce Clone
|
||||||
|
```
|
||||||
|
|
||||||
|
2. Drag in these files:
|
||||||
|
- `verify-app.py`
|
||||||
|
- `index.html`
|
||||||
|
- Your test CSV (e.g. `Testleads.csv`)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ⚙️ Install Dependencies
|
||||||
|
|
||||||
|
Open Terminal, then run:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd "/Users/yourname/Desktop/Neverbounce Clone"
|
||||||
|
python3 -m venv venv
|
||||||
|
source venv/bin/activate
|
||||||
|
pip install flask flask-cors dnspython
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🚀 Run the App
|
||||||
|
|
||||||
|
### Terminal Tab 1:
|
||||||
|
```bash
|
||||||
|
source venv/bin/activate
|
||||||
|
python3 verify-app.py
|
||||||
|
```
|
||||||
|
You should see:
|
||||||
|
```
|
||||||
|
🔥 VERIFIER RUNNING - Want sales calls from leads? Go to AlexBerman.com/Mastermind 🔥
|
||||||
|
```
|
||||||
|
|
||||||
|
### Terminal Tab 2:
|
||||||
|
```bash
|
||||||
|
cd "/Users/yourname/Desktop/Neverbounce Clone"
|
||||||
|
python3 -m http.server 3000
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🌐 Use the Tool
|
||||||
|
|
||||||
|
Open in your browser:
|
||||||
|
```
|
||||||
|
http://localhost:3000/index.html
|
||||||
|
```
|
||||||
|
|
||||||
|
- Drag in one or more CSVs
|
||||||
|
- Each file shows a progress bar, live email log, cancel button, and close (X)
|
||||||
|
- When done, a download link will appear
|
||||||
|
- Everything persists across refreshes
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ✅ Footer CTA
|
||||||
|
|
||||||
|
The tool includes:
|
||||||
|
```
|
||||||
|
This tool helps you find qualified leads. Now let's get you more sales with AB Mastermind.
|
||||||
|
```
|
||||||
|
Where "AB Mastermind" links to:
|
||||||
194
index.html
Normal file
194
index.html
Normal file
@@ -0,0 +1,194 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<title>Email Verifier</title>
|
||||||
|
<style>
|
||||||
|
body { font-family: sans-serif; text-align: center; margin-top: 40px; }
|
||||||
|
#drop-zone {
|
||||||
|
border: 2px dashed #ccc;
|
||||||
|
padding: 40px;
|
||||||
|
width: 400px;
|
||||||
|
margin: auto;
|
||||||
|
background: #f9f9f9;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
#drop-zone.hover { border-color: #000; }
|
||||||
|
.job-block {
|
||||||
|
border: 1px solid #ccc;
|
||||||
|
border-radius: 10px;
|
||||||
|
padding: 20px;
|
||||||
|
margin: 20px auto;
|
||||||
|
width: 400px;
|
||||||
|
background: #fafafa;
|
||||||
|
text-align: left;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
.progress-bar {
|
||||||
|
height: 18px;
|
||||||
|
background: #4caf50;
|
||||||
|
width: 0%;
|
||||||
|
transition: width 0.2s;
|
||||||
|
border-radius: 10px;
|
||||||
|
}
|
||||||
|
.progress-container {
|
||||||
|
background: #eee;
|
||||||
|
border-radius: 10px;
|
||||||
|
overflow: hidden;
|
||||||
|
margin: 10px 0;
|
||||||
|
}
|
||||||
|
.status, .log-line, .actions {
|
||||||
|
font-size: 13px;
|
||||||
|
margin-top: 5px;
|
||||||
|
}
|
||||||
|
.actions a {
|
||||||
|
color: #007aff;
|
||||||
|
cursor: pointer;
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
.close-job {
|
||||||
|
position: absolute;
|
||||||
|
top: 10px;
|
||||||
|
right: 15px;
|
||||||
|
font-size: 14px;
|
||||||
|
color: #999;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
footer {
|
||||||
|
margin-top: 40px;
|
||||||
|
font-size: 13px;
|
||||||
|
}
|
||||||
|
footer a {
|
||||||
|
color: #000;
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1>Upload Emails to Verify</h1>
|
||||||
|
<div id="drop-zone">Drop CSV here or click to upload</div>
|
||||||
|
<input type="file" id="file-input" accept=".csv" style="display:none;">
|
||||||
|
<div id="jobs"></div>
|
||||||
|
|
||||||
|
<footer>
|
||||||
|
This tool helps you find qualified leads. Now let's get you more sales with
|
||||||
|
<a href="https://www.alxberman.com/mastermind?utm_source=tools&utm_campaign=desktopverifier&utm_medium=footer" target="_blank">AB Mastermind</a>
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
const dropZone = document.getElementById('drop-zone');
|
||||||
|
const fileInput = document.getElementById('file-input');
|
||||||
|
const jobsContainer = document.getElementById('jobs');
|
||||||
|
|
||||||
|
let jobList = JSON.parse(localStorage.getItem('verifier-jobs') || '[]');
|
||||||
|
jobList.forEach(({ job_id, fileName }) => createJobBlock(job_id, fileName));
|
||||||
|
|
||||||
|
dropZone.addEventListener('click', () => fileInput.click());
|
||||||
|
dropZone.addEventListener('dragover', e => { e.preventDefault(); dropZone.classList.add('hover'); });
|
||||||
|
dropZone.addEventListener('dragleave', () => dropZone.classList.remove('hover'));
|
||||||
|
dropZone.addEventListener('drop', e => {
|
||||||
|
e.preventDefault();
|
||||||
|
dropZone.classList.remove('hover');
|
||||||
|
handleFile(e.dataTransfer.files[0]);
|
||||||
|
});
|
||||||
|
fileInput.addEventListener('change', () => handleFile(fileInput.files[0]));
|
||||||
|
|
||||||
|
function handleFile(file) {
|
||||||
|
const formData = new FormData();
|
||||||
|
formData.append('file', file);
|
||||||
|
|
||||||
|
fetch('http://localhost:5050/verify', {
|
||||||
|
method: 'POST',
|
||||||
|
body: formData
|
||||||
|
})
|
||||||
|
.then(res => res.json())
|
||||||
|
.then(({ job_id }) => {
|
||||||
|
jobList.push({ job_id, fileName: file.name });
|
||||||
|
localStorage.setItem('verifier-jobs', JSON.stringify(jobList));
|
||||||
|
createJobBlock(job_id, file.name);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function createJobBlock(job_id, fileName) {
|
||||||
|
const block = document.createElement('div');
|
||||||
|
block.className = 'job-block';
|
||||||
|
block.innerHTML = `
|
||||||
|
<div class="close-job">✖</div>
|
||||||
|
<div><strong>${fileName}</strong></div>
|
||||||
|
<div class="progress-container"><div class="progress-bar"></div></div>
|
||||||
|
<div class="status">Starting...</div>
|
||||||
|
<div class="log-line"></div>
|
||||||
|
<div class="actions"><a class="cancel">Cancel</a></div>
|
||||||
|
`;
|
||||||
|
jobsContainer.prepend(block);
|
||||||
|
|
||||||
|
const bar = block.querySelector('.progress-bar');
|
||||||
|
const status = block.querySelector('.status');
|
||||||
|
const logLine = block.querySelector('.log-line');
|
||||||
|
const cancelBtn = block.querySelector('.cancel');
|
||||||
|
const actions = block.querySelector('.actions');
|
||||||
|
const closeBtn = block.querySelector('.close-job');
|
||||||
|
|
||||||
|
let canceled = false;
|
||||||
|
const removeJob = () => {
|
||||||
|
block.remove();
|
||||||
|
jobList = jobList.filter(j => j.job_id !== job_id);
|
||||||
|
localStorage.setItem('verifier-jobs', JSON.stringify(jobList));
|
||||||
|
};
|
||||||
|
|
||||||
|
cancelBtn.onclick = () => {
|
||||||
|
canceled = true;
|
||||||
|
fetch(`http://localhost:5050/cancel?job_id=${job_id}`, { method: 'POST' });
|
||||||
|
status.innerText = `❌ Canceled job ${job_id}`;
|
||||||
|
actions.innerHTML = '';
|
||||||
|
};
|
||||||
|
|
||||||
|
closeBtn.onclick = () => {
|
||||||
|
fetch(`http://localhost:5050/cancel?job_id=${job_id}`, { method: 'POST' });
|
||||||
|
removeJob();
|
||||||
|
};
|
||||||
|
|
||||||
|
const poll = setInterval(() => {
|
||||||
|
if (canceled) return clearInterval(poll);
|
||||||
|
|
||||||
|
fetch(`http://localhost:5050/progress?job_id=${job_id}`)
|
||||||
|
.then(res => res.json())
|
||||||
|
.then(data => {
|
||||||
|
bar.style.width = `${data.percent}%`;
|
||||||
|
status.innerText = `${data.percent}% done – Row ${data.row} of ${data.total}`;
|
||||||
|
});
|
||||||
|
|
||||||
|
fetch(`http://localhost:5050/log?job_id=${job_id}`)
|
||||||
|
.then(res => res.text())
|
||||||
|
.then(text => {
|
||||||
|
logLine.innerText = text.replace(/^\[\d+%\] \(\d+\/\d+\) /, '');
|
||||||
|
});
|
||||||
|
}, 1000);
|
||||||
|
|
||||||
|
const wait = setInterval(() => {
|
||||||
|
if (canceled) return clearInterval(wait);
|
||||||
|
fetch(`http://localhost:5050/progress?job_id=${job_id}`)
|
||||||
|
.then(res => res.json())
|
||||||
|
.then(data => {
|
||||||
|
if (data.percent >= 100) {
|
||||||
|
clearInterval(wait);
|
||||||
|
actions.innerHTML = `
|
||||||
|
<div style="margin-top: 10px;">
|
||||||
|
<strong>⬇️ Download CSV:</strong><br>
|
||||||
|
<div>
|
||||||
|
<a href="http://localhost:5050/download?job_id=${job_id}&type=all" target="_blank">All Leads</a> |
|
||||||
|
<a href="http://localhost:5050/download?job_id=${job_id}&type=valid" target="_blank">Valid Only</a>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<a href="http://localhost:5050/download?job_id=${job_id}&type=risky" target="_blank">Risky Only</a> |
|
||||||
|
<a href="http://localhost:5050/download?job_id=${job_id}&type=risky_invalid" target="_blank">Risky & Invalid</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
`;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}, 1500);
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
11
pyproject.toml
Normal file
11
pyproject.toml
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
[project]
|
||||||
|
name = "email-verification-tool"
|
||||||
|
version = "0.1.0"
|
||||||
|
description = "Add your description here"
|
||||||
|
readme = "README.md"
|
||||||
|
requires-python = ">=3.13"
|
||||||
|
dependencies = [
|
||||||
|
"dnspython>=2.8.0",
|
||||||
|
"flask>=3.1.2",
|
||||||
|
"flask-cors>=6.0.1",
|
||||||
|
]
|
||||||
174
uv.lock
generated
Normal file
174
uv.lock
generated
Normal file
@@ -0,0 +1,174 @@
|
|||||||
|
version = 1
|
||||||
|
revision = 3
|
||||||
|
requires-python = ">=3.13"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "blinker"
|
||||||
|
version = "1.9.0"
|
||||||
|
source = { registry = "https://pypi.org/simple" }
|
||||||
|
sdist = { url = "https://files.pythonhosted.org/packages/21/28/9b3f50ce0e048515135495f198351908d99540d69bfdc8c1d15b73dc55ce/blinker-1.9.0.tar.gz", hash = "sha256:b4ce2265a7abece45e7cc896e98dbebe6cead56bcf805a3d23136d145f5445bf", size = 22460, upload-time = "2024-11-08T17:25:47.436Z" }
|
||||||
|
wheels = [
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/10/cb/f2ad4230dc2eb1a74edf38f1a38b9b52277f75bef262d8908e60d957e13c/blinker-1.9.0-py3-none-any.whl", hash = "sha256:ba0efaa9080b619ff2f3459d1d500c57bddea4a6b424b60a91141db6fd2f08bc", size = 8458, upload-time = "2024-11-08T17:25:46.184Z" },
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "click"
|
||||||
|
version = "8.3.0"
|
||||||
|
source = { registry = "https://pypi.org/simple" }
|
||||||
|
dependencies = [
|
||||||
|
{ name = "colorama", marker = "sys_platform == 'win32'" },
|
||||||
|
]
|
||||||
|
sdist = { url = "https://files.pythonhosted.org/packages/46/61/de6cd827efad202d7057d93e0fed9294b96952e188f7384832791c7b2254/click-8.3.0.tar.gz", hash = "sha256:e7b8232224eba16f4ebe410c25ced9f7875cb5f3263ffc93cc3e8da705e229c4", size = 276943, upload-time = "2025-09-18T17:32:23.696Z" }
|
||||||
|
wheels = [
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/db/d3/9dcc0f5797f070ec8edf30fbadfb200e71d9db6b84d211e3b2085a7589a0/click-8.3.0-py3-none-any.whl", hash = "sha256:9b9f285302c6e3064f4330c05f05b81945b2a39544279343e6e7c5f27a9baddc", size = 107295, upload-time = "2025-09-18T17:32:22.42Z" },
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "colorama"
|
||||||
|
version = "0.4.6"
|
||||||
|
source = { registry = "https://pypi.org/simple" }
|
||||||
|
sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697, upload-time = "2022-10-25T02:36:22.414Z" }
|
||||||
|
wheels = [
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335, upload-time = "2022-10-25T02:36:20.889Z" },
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "dnspython"
|
||||||
|
version = "2.8.0"
|
||||||
|
source = { registry = "https://pypi.org/simple" }
|
||||||
|
sdist = { url = "https://files.pythonhosted.org/packages/8c/8b/57666417c0f90f08bcafa776861060426765fdb422eb10212086fb811d26/dnspython-2.8.0.tar.gz", hash = "sha256:181d3c6996452cb1189c4046c61599b84a5a86e099562ffde77d26984ff26d0f", size = 368251, upload-time = "2025-09-07T18:58:00.022Z" }
|
||||||
|
wheels = [
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/ba/5a/18ad964b0086c6e62e2e7500f7edc89e3faa45033c71c1893d34eed2b2de/dnspython-2.8.0-py3-none-any.whl", hash = "sha256:01d9bbc4a2d76bf0db7c1f729812ded6d912bd318d3b1cf81d30c0f845dbf3af", size = 331094, upload-time = "2025-09-07T18:57:58.071Z" },
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "email-verification-tool"
|
||||||
|
version = "0.1.0"
|
||||||
|
source = { virtual = "." }
|
||||||
|
dependencies = [
|
||||||
|
{ name = "dnspython" },
|
||||||
|
{ name = "flask" },
|
||||||
|
{ name = "flask-cors" },
|
||||||
|
]
|
||||||
|
|
||||||
|
[package.metadata]
|
||||||
|
requires-dist = [
|
||||||
|
{ name = "dnspython", specifier = ">=2.8.0" },
|
||||||
|
{ name = "flask", specifier = ">=3.1.2" },
|
||||||
|
{ name = "flask-cors", specifier = ">=6.0.1" },
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "flask"
|
||||||
|
version = "3.1.2"
|
||||||
|
source = { registry = "https://pypi.org/simple" }
|
||||||
|
dependencies = [
|
||||||
|
{ name = "blinker" },
|
||||||
|
{ name = "click" },
|
||||||
|
{ name = "itsdangerous" },
|
||||||
|
{ name = "jinja2" },
|
||||||
|
{ name = "markupsafe" },
|
||||||
|
{ name = "werkzeug" },
|
||||||
|
]
|
||||||
|
sdist = { url = "https://files.pythonhosted.org/packages/dc/6d/cfe3c0fcc5e477df242b98bfe186a4c34357b4847e87ecaef04507332dab/flask-3.1.2.tar.gz", hash = "sha256:bf656c15c80190ed628ad08cdfd3aaa35beb087855e2f494910aa3774cc4fd87", size = 720160, upload-time = "2025-08-19T21:03:21.205Z" }
|
||||||
|
wheels = [
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/ec/f9/7f9263c5695f4bd0023734af91bedb2ff8209e8de6ead162f35d8dc762fd/flask-3.1.2-py3-none-any.whl", hash = "sha256:ca1d8112ec8a6158cc29ea4858963350011b5c846a414cdb7a954aa9e967d03c", size = 103308, upload-time = "2025-08-19T21:03:19.499Z" },
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "flask-cors"
|
||||||
|
version = "6.0.1"
|
||||||
|
source = { registry = "https://pypi.org/simple" }
|
||||||
|
dependencies = [
|
||||||
|
{ name = "flask" },
|
||||||
|
{ name = "werkzeug" },
|
||||||
|
]
|
||||||
|
sdist = { url = "https://files.pythonhosted.org/packages/76/37/bcfa6c7d5eec777c4c7cf45ce6b27631cebe5230caf88d85eadd63edd37a/flask_cors-6.0.1.tar.gz", hash = "sha256:d81bcb31f07b0985be7f48406247e9243aced229b7747219160a0559edd678db", size = 13463, upload-time = "2025-06-11T01:32:08.518Z" }
|
||||||
|
wheels = [
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/17/f8/01bf35a3afd734345528f98d0353f2a978a476528ad4d7e78b70c4d149dd/flask_cors-6.0.1-py3-none-any.whl", hash = "sha256:c7b2cbfb1a31aa0d2e5341eea03a6805349f7a61647daee1a15c46bbe981494c", size = 13244, upload-time = "2025-06-11T01:32:07.352Z" },
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "itsdangerous"
|
||||||
|
version = "2.2.0"
|
||||||
|
source = { registry = "https://pypi.org/simple" }
|
||||||
|
sdist = { url = "https://files.pythonhosted.org/packages/9c/cb/8ac0172223afbccb63986cc25049b154ecfb5e85932587206f42317be31d/itsdangerous-2.2.0.tar.gz", hash = "sha256:e0050c0b7da1eea53ffaf149c0cfbb5c6e2e2b69c4bef22c81fa6eb73e5f6173", size = 54410, upload-time = "2024-04-16T21:28:15.614Z" }
|
||||||
|
wheels = [
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/04/96/92447566d16df59b2a776c0fb82dbc4d9e07cd95062562af01e408583fc4/itsdangerous-2.2.0-py3-none-any.whl", hash = "sha256:c6242fc49e35958c8b15141343aa660db5fc54d4f13a1db01a3f5891b98700ef", size = 16234, upload-time = "2024-04-16T21:28:14.499Z" },
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "jinja2"
|
||||||
|
version = "3.1.6"
|
||||||
|
source = { registry = "https://pypi.org/simple" }
|
||||||
|
dependencies = [
|
||||||
|
{ name = "markupsafe" },
|
||||||
|
]
|
||||||
|
sdist = { url = "https://files.pythonhosted.org/packages/df/bf/f7da0350254c0ed7c72f3e33cef02e048281fec7ecec5f032d4aac52226b/jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d", size = 245115, upload-time = "2025-03-05T20:05:02.478Z" }
|
||||||
|
wheels = [
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67", size = 134899, upload-time = "2025-03-05T20:05:00.369Z" },
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "markupsafe"
|
||||||
|
version = "3.0.3"
|
||||||
|
source = { registry = "https://pypi.org/simple" }
|
||||||
|
sdist = { url = "https://files.pythonhosted.org/packages/7e/99/7690b6d4034fffd95959cbe0c02de8deb3098cc577c67bb6a24fe5d7caa7/markupsafe-3.0.3.tar.gz", hash = "sha256:722695808f4b6457b320fdc131280796bdceb04ab50fe1795cd540799ebe1698", size = 80313, upload-time = "2025-09-27T18:37:40.426Z" }
|
||||||
|
wheels = [
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/38/2f/907b9c7bbba283e68f20259574b13d005c121a0fa4c175f9bed27c4597ff/markupsafe-3.0.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e1cf1972137e83c5d4c136c43ced9ac51d0e124706ee1c8aa8532c1287fa8795", size = 11622, upload-time = "2025-09-27T18:36:41.777Z" },
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/9c/d9/5f7756922cdd676869eca1c4e3c0cd0df60ed30199ffd775e319089cb3ed/markupsafe-3.0.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:116bb52f642a37c115f517494ea5feb03889e04df47eeff5b130b1808ce7c219", size = 12029, upload-time = "2025-09-27T18:36:43.257Z" },
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/00/07/575a68c754943058c78f30db02ee03a64b3c638586fba6a6dd56830b30a3/markupsafe-3.0.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:133a43e73a802c5562be9bbcd03d090aa5a1fe899db609c29e8c8d815c5f6de6", size = 24374, upload-time = "2025-09-27T18:36:44.508Z" },
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/a9/21/9b05698b46f218fc0e118e1f8168395c65c8a2c750ae2bab54fc4bd4e0e8/markupsafe-3.0.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ccfcd093f13f0f0b7fdd0f198b90053bf7b2f02a3927a30e63f3ccc9df56b676", size = 22980, upload-time = "2025-09-27T18:36:45.385Z" },
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/7f/71/544260864f893f18b6827315b988c146b559391e6e7e8f7252839b1b846a/markupsafe-3.0.3-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:509fa21c6deb7a7a273d629cf5ec029bc209d1a51178615ddf718f5918992ab9", size = 21990, upload-time = "2025-09-27T18:36:46.916Z" },
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/c2/28/b50fc2f74d1ad761af2f5dcce7492648b983d00a65b8c0e0cb457c82ebbe/markupsafe-3.0.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a4afe79fb3de0b7097d81da19090f4df4f8d3a2b3adaa8764138aac2e44f3af1", size = 23784, upload-time = "2025-09-27T18:36:47.884Z" },
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/ed/76/104b2aa106a208da8b17a2fb72e033a5a9d7073c68f7e508b94916ed47a9/markupsafe-3.0.3-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:795e7751525cae078558e679d646ae45574b47ed6e7771863fcc079a6171a0fc", size = 21588, upload-time = "2025-09-27T18:36:48.82Z" },
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/b5/99/16a5eb2d140087ebd97180d95249b00a03aa87e29cc224056274f2e45fd6/markupsafe-3.0.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8485f406a96febb5140bfeca44a73e3ce5116b2501ac54fe953e488fb1d03b12", size = 23041, upload-time = "2025-09-27T18:36:49.797Z" },
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/19/bc/e7140ed90c5d61d77cea142eed9f9c303f4c4806f60a1044c13e3f1471d0/markupsafe-3.0.3-cp313-cp313-win32.whl", hash = "sha256:bdd37121970bfd8be76c5fb069c7751683bdf373db1ed6c010162b2a130248ed", size = 14543, upload-time = "2025-09-27T18:36:51.584Z" },
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/05/73/c4abe620b841b6b791f2edc248f556900667a5a1cf023a6646967ae98335/markupsafe-3.0.3-cp313-cp313-win_amd64.whl", hash = "sha256:9a1abfdc021a164803f4d485104931fb8f8c1efd55bc6b748d2f5774e78b62c5", size = 15113, upload-time = "2025-09-27T18:36:52.537Z" },
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/f0/3a/fa34a0f7cfef23cf9500d68cb7c32dd64ffd58a12b09225fb03dd37d5b80/markupsafe-3.0.3-cp313-cp313-win_arm64.whl", hash = "sha256:7e68f88e5b8799aa49c85cd116c932a1ac15caaa3f5db09087854d218359e485", size = 13911, upload-time = "2025-09-27T18:36:53.513Z" },
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/e4/d7/e05cd7efe43a88a17a37b3ae96e79a19e846f3f456fe79c57ca61356ef01/markupsafe-3.0.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:218551f6df4868a8d527e3062d0fb968682fe92054e89978594c28e642c43a73", size = 11658, upload-time = "2025-09-27T18:36:54.819Z" },
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/99/9e/e412117548182ce2148bdeacdda3bb494260c0b0184360fe0d56389b523b/markupsafe-3.0.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:3524b778fe5cfb3452a09d31e7b5adefeea8c5be1d43c4f810ba09f2ceb29d37", size = 12066, upload-time = "2025-09-27T18:36:55.714Z" },
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/bc/e6/fa0ffcda717ef64a5108eaa7b4f5ed28d56122c9a6d70ab8b72f9f715c80/markupsafe-3.0.3-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4e885a3d1efa2eadc93c894a21770e4bc67899e3543680313b09f139e149ab19", size = 25639, upload-time = "2025-09-27T18:36:56.908Z" },
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/96/ec/2102e881fe9d25fc16cb4b25d5f5cde50970967ffa5dddafdb771237062d/markupsafe-3.0.3-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8709b08f4a89aa7586de0aadc8da56180242ee0ada3999749b183aa23df95025", size = 23569, upload-time = "2025-09-27T18:36:57.913Z" },
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/4b/30/6f2fce1f1f205fc9323255b216ca8a235b15860c34b6798f810f05828e32/markupsafe-3.0.3-cp313-cp313t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:b8512a91625c9b3da6f127803b166b629725e68af71f8184ae7e7d54686a56d6", size = 23284, upload-time = "2025-09-27T18:36:58.833Z" },
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/58/47/4a0ccea4ab9f5dcb6f79c0236d954acb382202721e704223a8aafa38b5c8/markupsafe-3.0.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:9b79b7a16f7fedff2495d684f2b59b0457c3b493778c9eed31111be64d58279f", size = 24801, upload-time = "2025-09-27T18:36:59.739Z" },
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/6a/70/3780e9b72180b6fecb83a4814d84c3bf4b4ae4bf0b19c27196104149734c/markupsafe-3.0.3-cp313-cp313t-musllinux_1_2_riscv64.whl", hash = "sha256:12c63dfb4a98206f045aa9563db46507995f7ef6d83b2f68eda65c307c6829eb", size = 22769, upload-time = "2025-09-27T18:37:00.719Z" },
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/98/c5/c03c7f4125180fc215220c035beac6b9cb684bc7a067c84fc69414d315f5/markupsafe-3.0.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:8f71bc33915be5186016f675cd83a1e08523649b0e33efdb898db577ef5bb009", size = 23642, upload-time = "2025-09-27T18:37:01.673Z" },
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/80/d6/2d1b89f6ca4bff1036499b1e29a1d02d282259f3681540e16563f27ebc23/markupsafe-3.0.3-cp313-cp313t-win32.whl", hash = "sha256:69c0b73548bc525c8cb9a251cddf1931d1db4d2258e9599c28c07ef3580ef354", size = 14612, upload-time = "2025-09-27T18:37:02.639Z" },
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/2b/98/e48a4bfba0a0ffcf9925fe2d69240bfaa19c6f7507b8cd09c70684a53c1e/markupsafe-3.0.3-cp313-cp313t-win_amd64.whl", hash = "sha256:1b4b79e8ebf6b55351f0d91fe80f893b4743f104bff22e90697db1590e47a218", size = 15200, upload-time = "2025-09-27T18:37:03.582Z" },
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/0e/72/e3cc540f351f316e9ed0f092757459afbc595824ca724cbc5a5d4263713f/markupsafe-3.0.3-cp313-cp313t-win_arm64.whl", hash = "sha256:ad2cf8aa28b8c020ab2fc8287b0f823d0a7d8630784c31e9ee5edea20f406287", size = 13973, upload-time = "2025-09-27T18:37:04.929Z" },
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/33/8a/8e42d4838cd89b7dde187011e97fe6c3af66d8c044997d2183fbd6d31352/markupsafe-3.0.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:eaa9599de571d72e2daf60164784109f19978b327a3910d3e9de8c97b5b70cfe", size = 11619, upload-time = "2025-09-27T18:37:06.342Z" },
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/b5/64/7660f8a4a8e53c924d0fa05dc3a55c9cee10bbd82b11c5afb27d44b096ce/markupsafe-3.0.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:c47a551199eb8eb2121d4f0f15ae0f923d31350ab9280078d1e5f12b249e0026", size = 12029, upload-time = "2025-09-27T18:37:07.213Z" },
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/da/ef/e648bfd021127bef5fa12e1720ffed0c6cbb8310c8d9bea7266337ff06de/markupsafe-3.0.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f34c41761022dd093b4b6896d4810782ffbabe30f2d443ff5f083e0cbbb8c737", size = 24408, upload-time = "2025-09-27T18:37:09.572Z" },
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/41/3c/a36c2450754618e62008bf7435ccb0f88053e07592e6028a34776213d877/markupsafe-3.0.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:457a69a9577064c05a97c41f4e65148652db078a3a509039e64d3467b9e7ef97", size = 23005, upload-time = "2025-09-27T18:37:10.58Z" },
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/bc/20/b7fdf89a8456b099837cd1dc21974632a02a999ec9bf7ca3e490aacd98e7/markupsafe-3.0.3-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:e8afc3f2ccfa24215f8cb28dcf43f0113ac3c37c2f0f0806d8c70e4228c5cf4d", size = 22048, upload-time = "2025-09-27T18:37:11.547Z" },
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/9a/a7/591f592afdc734f47db08a75793a55d7fbcc6902a723ae4cfbab61010cc5/markupsafe-3.0.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:ec15a59cf5af7be74194f7ab02d0f59a62bdcf1a537677ce67a2537c9b87fcda", size = 23821, upload-time = "2025-09-27T18:37:12.48Z" },
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/7d/33/45b24e4f44195b26521bc6f1a82197118f74df348556594bd2262bda1038/markupsafe-3.0.3-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:0eb9ff8191e8498cca014656ae6b8d61f39da5f95b488805da4bb029cccbfbaf", size = 21606, upload-time = "2025-09-27T18:37:13.485Z" },
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/ff/0e/53dfaca23a69fbfbbf17a4b64072090e70717344c52eaaaa9c5ddff1e5f0/markupsafe-3.0.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:2713baf880df847f2bece4230d4d094280f4e67b1e813eec43b4c0e144a34ffe", size = 23043, upload-time = "2025-09-27T18:37:14.408Z" },
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/46/11/f333a06fc16236d5238bfe74daccbca41459dcd8d1fa952e8fbd5dccfb70/markupsafe-3.0.3-cp314-cp314-win32.whl", hash = "sha256:729586769a26dbceff69f7a7dbbf59ab6572b99d94576a5592625d5b411576b9", size = 14747, upload-time = "2025-09-27T18:37:15.36Z" },
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/28/52/182836104b33b444e400b14f797212f720cbc9ed6ba34c800639d154e821/markupsafe-3.0.3-cp314-cp314-win_amd64.whl", hash = "sha256:bdc919ead48f234740ad807933cdf545180bfbe9342c2bb451556db2ed958581", size = 15341, upload-time = "2025-09-27T18:37:16.496Z" },
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/6f/18/acf23e91bd94fd7b3031558b1f013adfa21a8e407a3fdb32745538730382/markupsafe-3.0.3-cp314-cp314-win_arm64.whl", hash = "sha256:5a7d5dc5140555cf21a6fefbdbf8723f06fcd2f63ef108f2854de715e4422cb4", size = 14073, upload-time = "2025-09-27T18:37:17.476Z" },
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/3c/f0/57689aa4076e1b43b15fdfa646b04653969d50cf30c32a102762be2485da/markupsafe-3.0.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:1353ef0c1b138e1907ae78e2f6c63ff67501122006b0f9abad68fda5f4ffc6ab", size = 11661, upload-time = "2025-09-27T18:37:18.453Z" },
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/89/c3/2e67a7ca217c6912985ec766c6393b636fb0c2344443ff9d91404dc4c79f/markupsafe-3.0.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:1085e7fbddd3be5f89cc898938f42c0b3c711fdcb37d75221de2666af647c175", size = 12069, upload-time = "2025-09-27T18:37:19.332Z" },
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/f0/00/be561dce4e6ca66b15276e184ce4b8aec61fe83662cce2f7d72bd3249d28/markupsafe-3.0.3-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1b52b4fb9df4eb9ae465f8d0c228a00624de2334f216f178a995ccdcf82c4634", size = 25670, upload-time = "2025-09-27T18:37:20.245Z" },
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/50/09/c419f6f5a92e5fadde27efd190eca90f05e1261b10dbd8cbcb39cd8ea1dc/markupsafe-3.0.3-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:fed51ac40f757d41b7c48425901843666a6677e3e8eb0abcff09e4ba6e664f50", size = 23598, upload-time = "2025-09-27T18:37:21.177Z" },
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/22/44/a0681611106e0b2921b3033fc19bc53323e0b50bc70cffdd19f7d679bb66/markupsafe-3.0.3-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:f190daf01f13c72eac4efd5c430a8de82489d9cff23c364c3ea822545032993e", size = 23261, upload-time = "2025-09-27T18:37:22.167Z" },
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/5f/57/1b0b3f100259dc9fffe780cfb60d4be71375510e435efec3d116b6436d43/markupsafe-3.0.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:e56b7d45a839a697b5eb268c82a71bd8c7f6c94d6fd50c3d577fa39a9f1409f5", size = 24835, upload-time = "2025-09-27T18:37:23.296Z" },
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/26/6a/4bf6d0c97c4920f1597cc14dd720705eca0bf7c787aebc6bb4d1bead5388/markupsafe-3.0.3-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:f3e98bb3798ead92273dc0e5fd0f31ade220f59a266ffd8a4f6065e0a3ce0523", size = 22733, upload-time = "2025-09-27T18:37:24.237Z" },
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/14/c7/ca723101509b518797fedc2fdf79ba57f886b4aca8a7d31857ba3ee8281f/markupsafe-3.0.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:5678211cb9333a6468fb8d8be0305520aa073f50d17f089b5b4b477ea6e67fdc", size = 23672, upload-time = "2025-09-27T18:37:25.271Z" },
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/fb/df/5bd7a48c256faecd1d36edc13133e51397e41b73bb77e1a69deab746ebac/markupsafe-3.0.3-cp314-cp314t-win32.whl", hash = "sha256:915c04ba3851909ce68ccc2b8e2cd691618c4dc4c4232fb7982bca3f41fd8c3d", size = 14819, upload-time = "2025-09-27T18:37:26.285Z" },
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/1a/8a/0402ba61a2f16038b48b39bccca271134be00c5c9f0f623208399333c448/markupsafe-3.0.3-cp314-cp314t-win_amd64.whl", hash = "sha256:4faffd047e07c38848ce017e8725090413cd80cbc23d86e55c587bf979e579c9", size = 15426, upload-time = "2025-09-27T18:37:27.316Z" },
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/70/bc/6f1c2f612465f5fa89b95bead1f44dcb607670fd42891d8fdcd5d039f4f4/markupsafe-3.0.3-cp314-cp314t-win_arm64.whl", hash = "sha256:32001d6a8fc98c8cb5c947787c5d08b0a50663d139f1305bac5885d98d9b40fa", size = 14146, upload-time = "2025-09-27T18:37:28.327Z" },
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "werkzeug"
|
||||||
|
version = "3.1.3"
|
||||||
|
source = { registry = "https://pypi.org/simple" }
|
||||||
|
dependencies = [
|
||||||
|
{ name = "markupsafe" },
|
||||||
|
]
|
||||||
|
sdist = { url = "https://files.pythonhosted.org/packages/9f/69/83029f1f6300c5fb2471d621ab06f6ec6b3324685a2ce0f9777fd4a8b71e/werkzeug-3.1.3.tar.gz", hash = "sha256:60723ce945c19328679790e3282cc758aa4a6040e4bb330f53d30fa546d44746", size = 806925, upload-time = "2024-11-08T15:52:18.093Z" }
|
||||||
|
wheels = [
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/52/24/ab44c871b0f07f491e5d2ad12c9bd7358e527510618cb1b803a88e986db1/werkzeug-3.1.3-py3-none-any.whl", hash = "sha256:54b78bf3716d19a65be4fceccc0d1d7b89e608834989dfae50ea87564639213e", size = 224498, upload-time = "2024-11-08T15:52:16.132Z" },
|
||||||
|
]
|
||||||
193
verify-app.py
Normal file
193
verify-app.py
Normal file
@@ -0,0 +1,193 @@
|
|||||||
|
# verify-app.py (with filtered CSV downloads)
|
||||||
|
|
||||||
|
import csv
|
||||||
|
import io
|
||||||
|
import re
|
||||||
|
import time
|
||||||
|
import uuid
|
||||||
|
import dns.resolver
|
||||||
|
import smtplib
|
||||||
|
from flask import Flask, request, jsonify, send_file, Response
|
||||||
|
from flask_cors import CORS
|
||||||
|
from tempfile import NamedTemporaryFile
|
||||||
|
|
||||||
|
app = Flask(__name__)
|
||||||
|
CORS(app)
|
||||||
|
|
||||||
|
print("\U0001F525 VERIFIER RUNNING - Want sales calls from leads? Go to AlexBerman.com/Mastermind \U0001F525")
|
||||||
|
|
||||||
|
EMAIL_REGEX = re.compile(r"[^@]+@[^@]+\.[^@]+")
|
||||||
|
DISPOSABLE_DOMAINS = {"mailinator.com", "10minutemail.com", "guerrillamail.com"}
|
||||||
|
ROLE_BASED_PREFIXES = {"info", "support", "admin", "sales", "contact"}
|
||||||
|
|
||||||
|
data = {}
|
||||||
|
|
||||||
|
def check_email(email):
|
||||||
|
import time
|
||||||
|
|
||||||
|
if not EMAIL_REGEX.match(email):
|
||||||
|
return "invalid", "bad_syntax"
|
||||||
|
|
||||||
|
domain = email.split('@')[1]
|
||||||
|
local = email.split('@')[0]
|
||||||
|
|
||||||
|
if domain.lower() in DISPOSABLE_DOMAINS:
|
||||||
|
return "invalid", "disposable_domain"
|
||||||
|
if local.lower() in ROLE_BASED_PREFIXES:
|
||||||
|
return "invalid", "role_based"
|
||||||
|
|
||||||
|
try:
|
||||||
|
records = dns.resolver.resolve(domain, 'MX')
|
||||||
|
mx_record = str(records[0].exchange)
|
||||||
|
except Exception:
|
||||||
|
return "invalid", "no_mx"
|
||||||
|
|
||||||
|
try:
|
||||||
|
server = smtplib.SMTP(timeout=10)
|
||||||
|
server.connect(mx_record)
|
||||||
|
server.helo("example.com")
|
||||||
|
server.mail("probe@example.com")
|
||||||
|
code, _ = server.rcpt(f"doesnotexist123@{domain}")
|
||||||
|
server.quit()
|
||||||
|
if code == 250:
|
||||||
|
return "risky", "domain_accepts_all"
|
||||||
|
except Exception:
|
||||||
|
pass
|
||||||
|
|
||||||
|
def smtp_check():
|
||||||
|
try:
|
||||||
|
server = smtplib.SMTP(timeout=10)
|
||||||
|
server.connect(mx_record)
|
||||||
|
server.helo("example.com")
|
||||||
|
server.mail("verifier@example.com")
|
||||||
|
code, _ = server.rcpt(email)
|
||||||
|
server.quit()
|
||||||
|
return code
|
||||||
|
except Exception:
|
||||||
|
return None
|
||||||
|
|
||||||
|
code = smtp_check()
|
||||||
|
if code in [421, 450, 451, 452, 503]:
|
||||||
|
time.sleep(5)
|
||||||
|
code = smtp_check()
|
||||||
|
|
||||||
|
if code == 250:
|
||||||
|
return "valid", "smtp_ok"
|
||||||
|
elif code is None:
|
||||||
|
return "risky", "smtp_timeout"
|
||||||
|
elif code in [421, 450, 451, 452, 503]:
|
||||||
|
return "risky", f"smtp_soft_fail_{code}"
|
||||||
|
elif code == 550:
|
||||||
|
return "invalid", "smtp_reject"
|
||||||
|
else:
|
||||||
|
return "invalid", f"smtp_{code}"
|
||||||
|
|
||||||
|
@app.route('/verify', methods=['POST'])
|
||||||
|
def verify():
|
||||||
|
job_id = str(uuid.uuid4())
|
||||||
|
file = request.files['file']
|
||||||
|
content = file.read().decode('utf-8')
|
||||||
|
reader = list(csv.DictReader(io.StringIO(content)))
|
||||||
|
total = len(reader)
|
||||||
|
email_field = next((f for f in reader[0].keys() if f.lower().strip() == 'email'), None)
|
||||||
|
|
||||||
|
output = io.StringIO()
|
||||||
|
fieldnames = list(reader[0].keys()) + ['status', 'reason']
|
||||||
|
writer = csv.DictWriter(output, fieldnames=fieldnames)
|
||||||
|
writer.writeheader()
|
||||||
|
|
||||||
|
data[job_id] = {
|
||||||
|
"progress": 0,
|
||||||
|
"row": 0,
|
||||||
|
"total": total,
|
||||||
|
"log": "",
|
||||||
|
"cancel": False,
|
||||||
|
"output": output,
|
||||||
|
"writer": writer,
|
||||||
|
"records": reader,
|
||||||
|
"email_field": email_field,
|
||||||
|
"filename": file.filename
|
||||||
|
}
|
||||||
|
|
||||||
|
def run():
|
||||||
|
for i, row in enumerate(reader, start=1):
|
||||||
|
if data[job_id]['cancel']:
|
||||||
|
data[job_id]['log'] = f"\u274c Canceled job {job_id}"
|
||||||
|
break
|
||||||
|
email = (row.get(email_field) or '').strip()
|
||||||
|
if not email:
|
||||||
|
status, reason = 'invalid', 'empty_email'
|
||||||
|
else:
|
||||||
|
status, reason = check_email(email)
|
||||||
|
row['status'], row['reason'] = status, reason
|
||||||
|
writer.writerow(row)
|
||||||
|
percent = int((i / total) * 100)
|
||||||
|
data[job_id].update({"progress": percent, "row": i,
|
||||||
|
"log": f"\u2705 {email} → {status} ({reason})"})
|
||||||
|
output = data[job_id]['output']
|
||||||
|
output.seek(0)
|
||||||
|
temp = NamedTemporaryFile(delete=False, suffix=".csv", mode='w+')
|
||||||
|
temp.write(output.read())
|
||||||
|
temp.flush()
|
||||||
|
temp.seek(0)
|
||||||
|
data[job_id]['file_path'] = temp.name
|
||||||
|
|
||||||
|
import threading
|
||||||
|
threading.Thread(target=run).start()
|
||||||
|
|
||||||
|
return jsonify({"job_id": job_id})
|
||||||
|
|
||||||
|
@app.route('/progress')
|
||||||
|
def progress():
|
||||||
|
job_id = request.args.get("job_id")
|
||||||
|
d = data.get(job_id, {})
|
||||||
|
return jsonify({"percent": d.get("progress", 0), "row": d.get("row", 0), "total": d.get("total", 0)})
|
||||||
|
|
||||||
|
@app.route('/log')
|
||||||
|
def log():
|
||||||
|
job_id = request.args.get("job_id")
|
||||||
|
return Response(data.get(job_id, {}).get("log", ""), mimetype='text/plain')
|
||||||
|
|
||||||
|
@app.route('/cancel', methods=['POST'])
|
||||||
|
def cancel():
|
||||||
|
job_id = request.args.get("job_id")
|
||||||
|
if job_id in data:
|
||||||
|
data[job_id]['cancel'] = True
|
||||||
|
return '', 204
|
||||||
|
|
||||||
|
@app.route('/download')
|
||||||
|
def download():
|
||||||
|
job_id = request.args.get("job_id")
|
||||||
|
filter_type = request.args.get("type", "all")
|
||||||
|
job = data.get(job_id)
|
||||||
|
if not job:
|
||||||
|
return "Invalid job ID", 404
|
||||||
|
|
||||||
|
job['output'].seek(0)
|
||||||
|
reader = list(csv.DictReader(job['output']))
|
||||||
|
|
||||||
|
if filter_type == "valid":
|
||||||
|
filtered = [row for row in reader if row['status'] == 'valid']
|
||||||
|
elif filter_type == "risky":
|
||||||
|
filtered = [row for row in reader if row['status'] == 'risky']
|
||||||
|
elif filter_type == "risky_invalid":
|
||||||
|
filtered = [row for row in reader if row['status'] in ('risky', 'invalid')]
|
||||||
|
else:
|
||||||
|
filtered = reader
|
||||||
|
|
||||||
|
output = io.StringIO()
|
||||||
|
writer = csv.DictWriter(output, fieldnames=reader[0].keys())
|
||||||
|
writer.writeheader()
|
||||||
|
for row in filtered:
|
||||||
|
writer.writerow(row)
|
||||||
|
|
||||||
|
output.seek(0)
|
||||||
|
download_name = f"{filter_type}-galadon-{job['filename']}"
|
||||||
|
return Response(
|
||||||
|
output.getvalue(),
|
||||||
|
mimetype='text/csv',
|
||||||
|
headers={"Content-Disposition": f"attachment; filename={download_name}"}
|
||||||
|
)
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
app.run(debug=True, port=5050)
|
||||||
Reference in New Issue
Block a user