浏览代码

feature/v2.7.5 (#221)

* feature/v2.7.5 

1、非管理员修改昵称报错修复
2、IOS“邮件”客户端展示错误修复。
Jinnrry 1 年之前
父节点
当前提交
6697d2b229
共有 3 个文件被更改,包括 64 次插入7 次删除
  1. 7 7
      server/controllers/email/send.go
  2. 2 0
      server/dto/parsemail/email.go
  3. 55 0
      server/pop3_server/action_test.go

+ 7 - 7
server/controllers/email/send.go

@@ -65,21 +65,21 @@ func Send(ctx *context.Context, w http.ResponseWriter, req *http.Request) {
 		return
 	}
 
-	if !ctx.IsAdmin && reqData.From.Name != ctx.UserAccount {
-		response.NewErrorResponse(response.ParamsError, "params error", "").FPrint(w)
-		return
-	}
-
 	if reqData.From.Email != "" {
 		infos := strings.Split(reqData.From.Email, "@")
 		if len(infos) != 2 || !array.InArray(infos[1], config.Instance.Domains) {
 			response.NewErrorResponse(response.ParamsError, "params error", "").FPrint(w)
 			return
 		}
+		if !ctx.IsAdmin && infos[0] != ctx.UserAccount {
+			response.NewErrorResponse(response.ParamsError, "params error", "").FPrint(w)
+			return
+		}
+
 	}
 
-	if reqData.From.Email == "" && reqData.From.Name != "" {
-		reqData.From.Email = reqData.From.Name + "@" + config.Instance.Domain
+	if reqData.From.Email == "" {
+		reqData.From.Email = ctx.UserAccount + "@" + config.Instance.Domain
 	}
 
 	if reqData.From.Email == "" {

+ 2 - 0
server/dto/parsemail/email.go

@@ -383,6 +383,7 @@ func (e *Email) BuildBytes(ctx *context.Context, dkim bool) []byte {
 		log.WithContext(ctx).Fatal(err)
 	}
 	var th mail.InlineHeader
+	th.Header.Set("Content-Transfer-Encoding", "base64")
 	th.SetContentType("text/plain", map[string]string{
 		"charset": "UTF-8",
 	})
@@ -397,6 +398,7 @@ func (e *Email) BuildBytes(ctx *context.Context, dkim bool) []byte {
 	html.SetContentType("text/html", map[string]string{
 		"charset": "UTF-8",
 	})
+	html.Header.Set("Content-Transfer-Encoding", "base64")
 	w, err = tw.CreatePart(html)
 	if err != nil {
 		log.Fatal(err)

+ 55 - 0
server/pop3_server/action_test.go

@@ -0,0 +1,55 @@
+package pop3_server
+
+//import (
+//	"bytes"
+//	"fmt"
+//	"github.com/Jinnrry/gopop"
+//	"github.com/Jinnrry/pmail/config"
+//	"github.com/Jinnrry/pmail/db"
+//	"github.com/Jinnrry/pmail/utils/context"
+//	"github.com/emersion/go-message/mail"
+//	"io"
+//	"testing"
+//)
+//
+//func Test_action_Retr(t *testing.T) {
+//	config.Init()
+//	db.Init("")
+//
+//	a := action{}
+//	session := &gopop.Session{
+//		Ctx: &context.Context{
+//			UserID: 1,
+//		},
+//	}
+//	got, got1, err := a.Retr(session, 301)
+//
+//	_, _, _ = got, got1, err
+//}
+//
+//func Test_email(t *testing.T) {
+//	var b bytes.Buffer
+//
+//	// Create our mail header
+//	var h mail.Header
+//
+//	// Create a new mail writer
+//	mw, _ := mail.CreateWriter(&b, h)
+//
+//	// Create a text part
+//	tw, _ := mw.CreateInline()
+//
+//	var html mail.InlineHeader
+//
+//	html.Header.Set("Content-Transfer-Encoding", "base64")
+//	w, _ := tw.CreatePart(html)
+//
+//	io.WriteString(w, "=")
+//
+//	w.Close()
+//
+//	tw.Close()
+//
+//	fmt.Printf("%s", b.String())
+//
+//}