Index: src/wp-admin/includes/ajax-actions.php
===================================================================
--- src/wp-admin/includes/ajax-actions.php	(revision 38069)
+++ src/wp-admin/includes/ajax-actions.php	(working copy)
@@ -3875,26 +3875,24 @@
 		$href = get_bloginfo( 'url' ) . $href;
 	}
 
-	$response = wp_safe_remote_get( $href, array(
+	$response = wp_remote_get( $href, array(
 		'timeout' => 15,
 		// Use an explicit user-agent
 		'user-agent' => 'WordPress URL Test',
 	) );
 
-	$message = null;
+	$error = false;
 
 	if ( is_wp_error( $response ) ) {
-		$error = $response->get_error_message();
-
-		if ( strpos( $message, 'resolve host' ) !== false ) {
-			$message = array( 'error' => __( 'Invalid host name.' ) );
+		if ( strpos( $response->get_error_message(), 'resolve host' ) !== false ) {
+			$error = true;
 		}
-
-		wp_send_json_error( $message );
+	} elseif ( wp_remote_retrieve_response_code( $response ) === 404 ) {
+		$error = true;
 	}
 
-	if ( wp_remote_retrieve_response_code( $response ) === 404 ) {
-		wp_send_json_error( array( 'error' => __( 'Not found, HTTP error 404.' ) ) );
+	if ( $error ) {
+		wp_send_json_error( array( 'httpError' => true ) );
 	}
 
 	wp_send_json_success();
Index: src/wp-includes/js/tinymce/plugins/wplink/plugin.js
===================================================================
--- src/wp-includes/js/tinymce/plugins/wplink/plugin.js	(revision 38069)
+++ src/wp-includes/js/tinymce/plugins/wplink/plugin.js	(working copy)
@@ -94,6 +94,7 @@
 		var doingUndoRedoTimer;
 		var $ = window.jQuery;
 		var urlErrors = {};
+		var emailRegex = /^(mailto:)?[a-z0-9._%+-]+@[a-z0-9][a-z0-9.-]*\.[a-z]{2,63}$/i;
 
 		function getSelectedLink() {
 			var href, html,
@@ -155,9 +156,8 @@
 				return;
 			}
 
-			// Early check
-			if ( /^http/i.test( href ) && ! /\.[a-z]{2,63}(\/|$)/i.test( href ) ) {
-				urlErrors[href] = tinymce.translate( 'Invalid host name.' );
+			if ( /^http/i.test( href ) && ! /^https?:\/\/[a-z0-9][a-z0-9.-]*\.[a-z]{2,63}(\/|$)/i.test( href ) ) {
+				urlErrors[href] = true;
 			}
 
 			if ( urlErrors.hasOwnProperty( href ) ) {
@@ -179,12 +179,12 @@
 					return;
 				}
 
-				if ( response.data && response.data.error ) {
-					urlErrors[href] = response.data.error;
+				if ( response.data && response.data.httpError ) {
+					urlErrors[href] = true;
 					$link.attr( 'data-wplink-url-error', 'true' );
 
 					if ( toolbar && toolbar.visible() ) {
-						toolbar.$el.find( '.wp-link-preview a' ).addClass( 'wplink-url-error' ).attr( 'title', editor.dom.encode( response.data.error ) );
+						toolbar.$el.find( '.wp-link-preview a' ).addClass( 'wplink-url-error' );
 					}
 				}
 			});
@@ -274,7 +274,7 @@
 					return;
 				}
 
-				if ( ! /^(?:[a-z]+:|#|\?|\.|\/)/.test( href ) ) {
+				if ( ! /^(?:[a-z]+:|#|\?|\.|\/)/.test( href ) && ! emailRegex.test( href ) ) {
 					href = 'http://' + href;
 				}
 
@@ -536,7 +536,7 @@
 
 		editor.on( 'wptoolbar', function( event ) {
 			var linkNode = editor.dom.getParent( event.element, 'a' ),
-				$linkNode, href, edit, title;
+				$linkNode, href, edit;
 
 			if ( typeof window.wpLink !== 'undefined' && window.wpLink.modalOpen ) {
 				editToolbar.tempHide = true;
@@ -561,12 +561,11 @@
 					previewInstance.setURL( href );
 					event.element = linkNode;
 					event.toolbar = toolbar;
-					title = urlErrors.hasOwnProperty( href ) ? editor.dom.encode( urlErrors[ href ] ) : null;
 
 					if ( $linkNode.attr( 'data-wplink-url-error' ) === 'true' ) {
-						toolbar.$el.find( '.wp-link-preview a' ).addClass( 'wplink-url-error' ).attr( 'title', title );
+						toolbar.$el.find( '.wp-link-preview a' ).addClass( 'wplink-url-error' );
 					} else {
-						toolbar.$el.find( '.wp-link-preview a' ).removeClass( 'wplink-url-error' ).attr( 'title', null );
+						toolbar.$el.find( '.wp-link-preview a' ).removeClass( 'wplink-url-error' );
 					}
 				}
 			} else if ( editToolbar.visible() ) {
Index: src/wp-includes/js/wplink.js
===================================================================
--- src/wp-includes/js/wplink.js	(revision 38069)
+++ src/wp-includes/js/wplink.js	(working copy)
@@ -2,8 +2,8 @@
 
 ( function( $, wpLinkL10n, wp ) {
 	var editor, searchTimer, River, Query, correctedURL, linkNode,
-		emailRegexp = /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i,
-		urlRegexp = /^(https?|ftp):\/\/[A-Z0-9.-]+\.[A-Z]{2,4}[^ "]*$/i,
+		emailRegexp = /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,63}$/i,
+		urlRegexp = /^(https?|ftp):\/\/[A-Z0-9.-]+\.[A-Z]{2,63}[^ "]*$/i,
 		inputs = {},
 		rivers = {},
 		isTouch = ( 'ontouchend' in document );
