diff --git a/Classes/Controller/MailController.php b/Classes/Controller/MailController.php
index 25a45cc054df13ebf0aaf63090f77ebbcded819c..0ecd815604c03fc6272fa60f54f106a81c18ab17 100644
--- a/Classes/Controller/MailController.php
+++ b/Classes/Controller/MailController.php
@@ -87,6 +87,27 @@ class MailController extends ActionController {
 		}
 
 		$registerArray = MailTemplateService::getRegisterArray();
+		$extensionConfiguration = unserialize($GLOBALS['TYPO3_CONF_VARS']['EXT']['extConf']['sg_mail'], [FALSE]);
+		if (isset($extensionConfiguration['excludeTemplates']) && $extensionConfiguration['excludeTemplates'] !== '') {
+			$excludedTemplates = GeneralUtility::trimExplode(',', $extensionConfiguration['excludeTemplates'], TRUE);
+			if ($excludedTemplates && count($excludedTemplates)) {
+				foreach ($excludedTemplates as $excludedTemplate) {
+					list($extensionKey, $templateName) = GeneralUtility::trimExplode('.', $excludedTemplate);
+					if ($extensionKey && $templateName && isset($registerArray[$extensionKey][$templateName])) {
+						unset($registerArray[$extensionKey][$templateName]);
+					}
+				}
+			}
+		}
+		$removeExtensionKeys = [];
+		foreach($registerArray as $extensionKey => $extensionTemplates) {
+			if (count($extensionTemplates) === 0) {
+				$removeExtensionKeys[] = $extensionKey;
+			}
+		}
+		foreach($removeExtensionKeys as $extensionKey) {
+			unset($registerArray[$extensionKey]);
+		}
 
 		// if no extensions are registered, redirect to empty action
 		if (empty($registerArray)) {
@@ -148,7 +169,7 @@ class MailController extends ActionController {
 		$this->view->assign('colspace', $colspace);
 		$this->view->assign('languageTemplates', $templates);
 		$this->view->assign('languageLabels', BackendService::getLanguageLabels($languages));
-		$this->view->assign('templates', MailTemplateService::getRegisterArray());
+		$this->view->assign('templates', $registerArray);
 
 		$templateDescription = $registerArray[$parameters['selectedExtension']][$parameters['selectedTemplate']]['description'];
 
diff --git a/Resources/Private/Language/de.locallang.xlf b/Resources/Private/Language/de.locallang.xlf
index 3e6a366ea0ca749597804220f5078680d6f4def8..9cf5de2650c702ec97a5d31f893fd715b81626b3 100644
--- a/Resources/Private/Language/de.locallang.xlf
+++ b/Resources/Private/Language/de.locallang.xlf
@@ -309,6 +309,10 @@
 			<source>Example</source>
 			<target>Beispiel</target>
 		</trans-unit>
+		<trans-unit id="configuration.excludeTemplates">
+			<source>Exclude Mail Templates:Comma-separated list of {extension_key}.{template_name}</source>
+			<target>Mail-Templates ausschließen:Kommagetrennte Liste von {extension_key}.{template_name}</target>
+		</trans-unit>
 		<trans-unit id="mlang_labels_tabdescr" approved="yes">
 			<source>Mail Templates</source>
 			<target>Mail-Templates</target>
diff --git a/Resources/Private/Language/locallang.xlf b/Resources/Private/Language/locallang.xlf
index a981af7ee20890b6f367efea941fb9088ec8e38b..61ea244b2b218d5de3e9b0f2ec48f73dca470a7b 100644
--- a/Resources/Private/Language/locallang.xlf
+++ b/Resources/Private/Language/locallang.xlf
@@ -234,6 +234,9 @@
 		<trans-unit id="backend.value">
 			<source>Example</source>
 		</trans-unit>
+		<trans-unit id="configuration.excludeTemplates">
+			<source>Exclude Mail Templates:Comma-separated list of {extension_key}.{template_name}</source>
+		</trans-unit>
 		<trans-unit id="mlang_labels_tabdescr">
 			<source>Mail Templates</source>
 		</trans-unit>
diff --git a/ext_conf_template.txt b/ext_conf_template.txt
new file mode 100644
index 0000000000000000000000000000000000000000..5eee4dc177e0146d29cb88e4e209a21d4c086193
--- /dev/null
+++ b/ext_conf_template.txt
@@ -0,0 +1,2 @@
+# cat=general; type=string; label=LLL:EXT:sg_mail/Resources/Private/Language/locallang.xlf:configuration.excludeTemplates
+excludeTemplates =