diff --git a/html_template/email_register.tpl b/fs_template/email_register.tpl
similarity index 100%
rename from html_template/email_register.tpl
rename to fs_template/email_register.tpl
diff --git a/server/auth/internal/logic/email_manager.go b/server/auth/internal/logic/email_manager.go
index 5cefe8c3..a0c86349 100644
--- a/server/auth/internal/logic/email_manager.go
+++ b/server/auth/internal/logic/email_manager.go
@@ -3,6 +3,7 @@ package logic
 import (
 	"bytes"
 	"fusenapi/utils/check"
+	"fusenapi/utils/fstpl"
 	"log"
 	"net/smtp"
 	"sync"
@@ -21,7 +22,7 @@ var tpls *template.Template
 func init() {
 	var err error
 
-	tpls, err = template.ParseGlob("../../../../html_template/*.tpl")
+	tpls = fstpl.AutoParseTplFiles()
 	if err != nil {
 		log.Fatal(err)
 	}
diff --git a/utils/fstpl/auto_parse.go b/utils/fstpl/auto_parse.go
index 347e3ff1..9bd69850 100644
--- a/utils/fstpl/auto_parse.go
+++ b/utils/fstpl/auto_parse.go
@@ -1,7 +1,41 @@
 package fstpl
 
-import "html/template"
+import (
+	"log"
+	"os"
+	"runtime"
+	"strings"
+	"text/template"
+)
 
-func ParseFile(t *template.Template) {
+func AutoParseTplFiles() *template.Template {
 
+	var currentFilePath string
+	var ok bool
+
+	_, currentFilePath, _, ok = runtime.Caller(1)
+	if !ok {
+		panic("Error: Unable to get the current file path.")
+
+	}
+	dirs := strings.Split(currentFilePath, "/")
+	dirs = dirs[0 : len(dirs)-1]
+
+	var curdir string
+	for i := 0; i < 20; i++ {
+		curdir = strings.Join(dirs, "/")
+		finfo, err := os.Stat(curdir + "/fs_template")
+		//TODO: 完成
+		if err == nil && finfo.IsDir() {
+			tpls, err := template.ParseGlob(curdir + "/fs_template/*.tpl")
+			if err != nil {
+				log.Fatal(err)
+			}
+			return tpls
+		}
+		// log.Println(finfo, err)
+		dirs = dirs[:len(dirs)-1]
+	}
+
+	panic("can't find template dirs")
 }
diff --git a/utils/fstpl/auto_parse_test.go b/utils/fstpl/auto_parse_test.go
new file mode 100644
index 00000000..f76d6b1d
--- /dev/null
+++ b/utils/fstpl/auto_parse_test.go
@@ -0,0 +1,11 @@
+package fstpl
+
+import (
+	"log"
+	"testing"
+)
+
+func TestF(t *testing.T) {
+
+	log.Println(AutoParseTplFiles())
+}