www.webdeveloper.com
Results 1 to 6 of 6

Thread: Stopping a script

  1. #1
    Join Date
    Jun 2008
    Location
    Europe
    Posts
    1,114

    Stopping a script

    I built a site that tests email servers.

    http://emailpermutator.com

    The script will permutate a name and company to generate email addresses and then test them.
    Sometimes, someone will enter an address that is not a mail server, yet my script continues to run through all of the permutations while delivering the message that the mailserver cannot be contacted.

    For example, I entered John Doe and set his domain at gsk.be

    John@gsk.be None of the mailservers listed for gsk.be could be contacted

    This message will repeat as it tries all permutations.
    How could I stop the script after receiving this message just once?
    [URL="http://www.metataggenerator.org"][SIGPIC][/SIGPIC][/URL]

    Privacy Policy Generator

  2. #2
    Join Date
    Dec 2002
    Location
    Seattle, WA
    Posts
    1,843
    you could blacklist or delete the email address. blacklisting would probably be the better option to pick.
    crude example
    PHP Code:
    $list = array(
        
    // ...
    );
    $fail = array(
        
    // ...
    );

    while (list(, 
    $email) = each($list)) {
        if (
    in_array($email$fail))
            continue;
        if (
    test_email($email)) {
            
    // all's well...
        
    } else {
            
    $fail[] = $email;
        }
    }
    // save the blacklist...
    // to file or database or w/e 

  3. #3
    Over on another (now defunct) forums another user and I came up with this check for valid e-mail addresses:

    Code:
    function isValidEmail($address) {
    	if (filter_var($address,FILTER_VALIDATE_EMAIL)==FALSE) {
    		return false;
    	}
    	/* explode out local and domain */
    	list($local,$domain)=explode('@',$address);
    	
    	$localLength=strlen($local);
    	$domainLength=strlen($domain);
    	
    	return (
    		/* check for proper lengths */
    		($localLength>0 && $localLength<65) &&
    		($domainLength>3 && $domainLength<256) &&
    		(
    			checkdnsrr($domain,'MX') ||
    			checkdnsrr($domain,'A')
    		)
    	);
    }
    FILTER_VALIDATE_EMAIL checks everything except for proper lengths, so we explode at the @ to get the Local Name and Domain name lengths. If those lengths are valid, we check that the domain has either a MX or A record with checkdnsrr.

    Not all servers have a proper MX set up, hence the need to check if a A record exists too.

    A simple DNS check of the domain as above should filter out the majority of invalid domains.

  4. #4
    Join Date
    Jun 2008
    Location
    Europe
    Posts
    1,114
    Thanks DeathShadow - but validation is not what I was trying to do. That is already working on my page.

    ShrineDesigns example worked, but it returns false negatives.
    I built it and began testing, but it tells me some servers are not working, when in fact they are working mail servers.

    Here is the page I made to test this script:
    http://emailpermutator.com/tester/server-test.php


    Any other ideas?
    [URL="http://www.metataggenerator.org"][SIGPIC][/SIGPIC][/URL]

    Privacy Policy Generator

  5. #5
    Then I'm not sure what you are even trying to do -- it almost sounds like you are blindly spamming servers with random addresses, which should get you banned from mailing after 3 responses if the server configuration makes even the least bit of sense. I know mine is.

    I'd have thought that checkdnsrr would be sufficient to see if it even is a mail server, the only scenario in which "The mail server could not be contacted" should arise in significant numbers.

  6. #6
    Join Date
    Dec 2002
    Location
    Seattle, WA
    Posts
    1,843
    Quote Originally Posted by donatello View Post
    ShrineDesigns example worked, but it returns false negatives.
    test_email() is not a function. I simply placed it there as an example to illustrate testing the email address.

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
HTML5 Development Center

"

"

X vBulletin 4.2.2 Debug Information

  • Page Generation 0.15883 seconds
  • Memory Usage 2,896KB
  • Queries Executed 13 (?)
More Information
Template Usage (35):
  • (1)SHOWTHREAD
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_global_above_footer
  • (1)ad_global_below_navbar
  • (1)ad_global_header1
  • (1)ad_global_header2
  • (1)ad_navbar_below
  • (1)ad_showthread_firstpost_sig
  • (1)ad_showthread_firstpost_start
  • (1)ad_thread_first_post_content
  • (1)ad_thread_last_post_content
  • (1)bbcode_code
  • (1)bbcode_php
  • (1)bbcode_quote
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)headinclude_bottom
  • (6)memberaction_dropdown
  • (1)navbar
  • (4)navbar_link
  • (1)navbar_moderation
  • (1)navbar_noticebit
  • (1)navbar_tabs
  • (2)option
  • (6)postbit
  • (6)postbit_onlinestatus
  • (6)postbit_wrapper
  • (1)spacer_close
  • (1)spacer_open
  • (1)tagbit_wrapper 

Phrase Groups Available (6):
  • global
  • inlinemod
  • postbit
  • posting
  • reputationlevel
  • showthread
Included Files (26):
  • ./showthread.php
  • ./global.php
  • ./includes/class_bootstrap.php
  • ./includes/init.php
  • ./includes/class_core.php
  • ./includes/config.php
  • ./includes/functions.php
  • ./includes/functions_navigation.php
  • ./includes/class_friendly_url.php
  • ./includes/class_hook.php
  • ./includes/class_bootstrap_framework.php
  • ./vb/vb.php
  • ./vb/phrase.php
  • ./includes/functions_facebook.php
  • ./includes/functions_calendar.php
  • ./includes/functions_bigthree.php
  • ./includes/class_postbit.php
  • ./includes/class_bbcode.php
  • ./includes/functions_reputation.php
  • ./includes/functions_notice.php
  • ./packages/vbattach/attach.php
  • ./vb/types.php
  • ./vb/cache.php
  • ./vb/cache/db.php
  • ./vb/cache/observer/db.php
  • ./vb/cache/observer.php 

Hooks Called (71):
  • init_startup
  • friendlyurl_resolve_class
  • init_startup_session_setup_start
  • database_pre_fetch_array
  • database_post_fetch_array
  • init_startup_session_setup_complete
  • global_bootstrap_init_start
  • global_bootstrap_init_complete
  • cache_permissions
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • load_show_variables
  • load_forum_show_variables
  • global_state_check
  • global_bootstrap_complete
  • global_start
  • style_fetch
  • global_setup_complete
  • showthread_start
  • showthread_getinfo
  • strip_bbcode
  • friendlyurl_clean_fragment
  • friendlyurl_geturl
  • forumjump
  • cache_templates
  • cache_templates_process
  • template_register_var
  • template_render_output
  • fetch_template_start
  • fetch_template_complete
  • parse_templates
  • fetch_musername
  • notices_check_start
  • notices_noticebit
  • process_templates_complete
  • friendlyurl_redirect_canonical
  • showthread_post_start
  • showthread_query_postids
  • showthread_query
  • bbcode_fetch_tags
  • bbcode_create
  • showthread_postbit_create
  • postbit_factory
  • postbit_display_start
  • bbcode_parse_start
  • postbit_imicons
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • postbit_display_complete
  • memberaction_dropdown
  • tag_fetchbit
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • build_navigation_data
  • build_navigation_array
  • check_navigation_permission
  • process_navigation_links_start
  • process_navigation_links_complete
  • set_navigation_menu_element
  • build_navigation_menudata
  • build_navigation_listdata
  • build_navigation_list
  • set_navigation_tab_main
  • set_navigation_tab_fallback
  • navigation_tab_complete
  • fb_like_button
  • showthread_complete
  • page_templates