diff --git a/core/modules/field/modules/email/email.info b/core/modules/field/modules/email/email.info
new file mode 100644
index 0000000..9303ece
--- /dev/null
+++ b/core/modules/field/modules/email/email.info
@@ -0,0 +1,6 @@
+name = Email
+description = Defines a field type for email addresses
+package = Core
+version = VERSION
+core = 8.x
+dependencies[] = field
diff --git a/core/modules/field/modules/email/email.install b/core/modules/field/modules/email/email.install
new file mode 100644
index 0000000..4ae3271
--- /dev/null
+++ b/core/modules/field/modules/email/email.install
@@ -0,0 +1,17 @@
+<?php
+
+/**
+ * Implements hook_field_schema().
+ */
+function email_field_schema($field) {
+  $columns = array(
+    'value' => array(
+      'type' => 'varchar',
+      'length' => 254,
+      'not null' => FALSE,
+    ),
+  );
+  return array(
+    'columns' => $columns,
+  );
+}
\ No newline at end of file
diff --git a/core/modules/field/modules/email/email.module b/core/modules/field/modules/email/email.module
new file mode 100644
index 0000000..d17a64a
--- /dev/null
+++ b/core/modules/field/modules/email/email.module
@@ -0,0 +1,87 @@
+<?php
+
+/**
+ * Implements hook_field_info().
+ */
+function email_field_info() {
+  return array(
+    'email' => array(
+      'label' => t('Email'),
+      'description' => t('This field stores an email address in the database.'),
+      'settings' => array(),
+      'instance_settings' => array(),
+      'default_widget' => 'email_default',
+      'default_formatter' => 'text_plain',
+    ),
+  );
+}
+
+/**
+ * Implements hook_field_widget_info().
+ */
+function email_field_widget_info() {
+  return array(
+    'email_default' => array(
+      'label' => t('Email'),
+      'field types' => array('email'),
+      'settings' => array(),
+      'behaviors' => array(
+        'multiple values' => FIELD_BEHAVIOR_DEFAULT,
+        'default value' => FIELD_BEHAVIOR_DEFAULT,
+      ),
+    ),
+  );
+}
+
+/**
+ * Implements hook_field_widget_form().
+ */
+function email_field_widget_form(&$form, &$form_state, $field, $instance, $langcode, $items, $delta, $element) {
+  $element['value'] = array(
+    '#type' => 'email',
+    '#default_value' => isset($items[$delta]['value']) ? $items[$delta]['value'] : NULL,
+  );
+  return $element;
+
+}
+
+/**
+ * Implements hook_field_is_empty().
+ */
+function email_field_is_empty($item, $field) {
+  return !isset($item['value']) || $item['value'] === '';
+}
+
+/**
+ * Implements hook_field_formatter_info_alter().
+ */
+function email_field_formatter_info_alter(&$info) {
+  $info['text_plain']['field types'][] = 'email';
+}
+
+/**
+ * Implements hook_field_formatter_info().
+ */
+function email_field_formatter_info() {
+  return array(
+    'email_mailto' => array(
+      'label' => t('Mailto Link'),
+      'field types' => array('email'),
+    ),
+  );
+}
+
+/**
+ * Implements hook_field_formatter_view().
+ */
+function email_field_formatter_view($entity_type, $entity, $field, $instance, $langcode, $items, $display) {
+  $element = array();
+  foreach ($items as $delta => $item) {
+    $element[$delta] = array(
+      '#type' => 'link',
+      '#title' => $item['value'],
+      '#href' => 'mailto:' . $item['value']
+    );
+  }
+  return $element;
+}
\ No newline at end of file
