Send an email if a URL is down twice only
Quoting: Be in the habit of always double-quoting your variables when you use them, e.g. "$url" instead of $url.  Otherwise, nasty vulnerabilities could happen if a variable's value contains spaces or shell metacharacters.  URLs, especially, often contain special characters such as &amp; and ?.
Structure: When processing input with multiple columns, one row at a time, the idiom to use is…

while read url env ; do
    # Do stuff here
done &lt; "$SCRIPT_LOC/urls.txt"


If the columns are delimited by something other than whitespace…

while IFS=: read user pwhash uid gid gecos homedir shell ; do
    # Do stuff here
done &lt; /etc/passwd

Status of wget: You run wget twice for each URL.  Instead of trying to get the HTTP status code, consider using just the exit status of wget to indicate success or failure.

if wget -q -t 0 --spider --no-check-certificate "$url" ; then
    # Handle success
else
    # Handle failure
fi


I've used the --quiet flag here.  Also, I think that an infinite timeout (-t 0) is a bad idea.
HTTP status interpretation: HTTP status codes other than 200 (e.g. 2xx or 3xx) could also indicate some kind of success.
Filesystem littering: You litter the current directory with temporary files wget.output and "${ENV}_DOWN" and "${ENV}_DOWN_2".  Perhaps you could append all the state to a single log file.
SCRIPT_LOC could probably be computed using $(dirname $0).