From 4a424817debf3e5c3d32bff200312856a5a18fd9 Mon Sep 17 00:00:00 2001 From: zchengo <1933757688@qq.com> Date: Mon, 30 Jan 2023 15:50:10 +0800 Subject: [PATCH] feat: send mail attachment --- server/common/mail.go | 15 ++++--- server/models/customer.go | 9 ++-- server/service/customer.go | 19 ++++---- web/src/views/Customer.vue | 91 ++++++++++++++++++++++++++++++-------- 4 files changed, 96 insertions(+), 38 deletions(-) diff --git a/server/common/mail.go b/server/common/mail.go index 5ad9e00..b22e2c8 100644 --- a/server/common/mail.go +++ b/server/common/mail.go @@ -18,11 +18,11 @@ func SendMail(email, content string) error { secret := global.Config.Mail.Secret sender := global.Config.Mail.Sender m := gomail.NewMessage() - m.SetHeader("From", sender) // 发件人 - m.SetHeader("To", email) // 收件人,可以多个收件人,但必须使用相同的 SMTP 连接 - m.SetHeader("Cc", email) // 抄送,可以多个 - m.SetHeader("Bcc", email) // 暗送,可以多个 - m.SetHeader("Subject", "ZOCRM") // 邮件主题 + m.SetHeader("From", sender) // 发件人 + m.SetHeader("To", email) // 收件人,可以多个收件人,但必须使用相同的 SMTP 连接 + m.SetHeader("Cc", email) // 抄送,可以多个 + m.SetHeader("Bcc", email) // 暗送,可以多个 + m.SetHeader("Subject", "ZOCRM") // 邮件主题 m.SetBody("text/html", content) d := gomail.NewDialer(smtp, 465, sender, secret) // 关闭SSL协议认证 @@ -41,6 +41,9 @@ func SendMailToCustomer(mp models.MailParam) error { m.SetHeader("To", mp.Receiver) m.SetHeader("Subject", mp.Subject) m.SetBody("text/html", mp.Content) + if mp.Attachment != "" { + m.Attach(mp.Attachment) + } d := gomail.NewDialer(mp.Smtp, mp.Port, mp.Sender, mp.AuthCode) d.TLSConfig = &tls.Config{InsecureSkipVerify: true} if err := d.DialAndSend(m); err != nil { @@ -56,4 +59,4 @@ func DialMail(smtp string, port int, sender, authCode string) error { d.TLSConfig = &tls.Config{InsecureSkipVerify: true} _, err := d.Dial() return err -} \ No newline at end of file +} diff --git a/server/models/customer.go b/server/models/customer.go index 831b069..e715402 100644 --- a/server/models/customer.go +++ b/server/models/customer.go @@ -46,10 +46,11 @@ type CustomerUpdateParam struct { } type CustomerSendMailParam struct { - Uid int64 `json:"uid" binding:"-"` - Receiver string `json:"receiver" binding:"required,email"` - Subject string `json:"subject" binding:"omitempty,gt=0"` - Content string `json:"content" binding:"required,gt=0"` + Uid int64 `json:"uid" binding:"-"` + Receiver string `json:"receiver" binding:"required,email"` + Subject string `json:"subject" binding:"omitempty,gt=0"` + Content string `json:"content" binding:"required,gt=0"` + Attachment string `json:"attachment" binding:"omitempty,gt=0"` } type CustomerDeleteParam struct { diff --git a/server/service/customer.go b/server/service/customer.go index e3a7414..3614622 100644 --- a/server/service/customer.go +++ b/server/service/customer.go @@ -54,16 +54,17 @@ func (c *CustomerService) SendMail(param *models.CustomerSendMailParam) int { if mc.Status == Close { return response.ErrCodeMailSendUnEnable } - mailParam := models.MailParam{ - Smtp: mc.Stmp, - Port: mc.Port, - AuthCode: mc.AuthCode, - Sender: mc.Email, - Subject: param.Subject, - Content: param.Content, - Receiver: param.Receiver, + mail := models.MailParam{ + Smtp: mc.Stmp, + Port: mc.Port, + AuthCode: mc.AuthCode, + Sender: mc.Email, + Subject: param.Subject, + Content: param.Content, + Attachment: param.Attachment, + Receiver: param.Receiver, } - if err := common.SendMailToCustomer(mailParam); err != nil { + if err := common.SendMailToCustomer(mail); err != nil { return response.ErrCodeMailSendFailed } return response.ErrCodeSuccess diff --git a/web/src/views/Customer.vue b/web/src/views/Customer.vue index 49a7bf9..a9c8752 100644 --- a/web/src/views/Customer.vue +++ b/web/src/views/Customer.vue @@ -119,7 +119,7 @@ - + @@ -128,9 +128,9 @@ + width="600px" :centered="true">
- + @@ -153,6 +153,18 @@ :auto-size="{ minRows: 6, maxRows: 100 }" /> + + + +

+ +

+

单击或拖动文件到此区域

+
+
+
@@ -162,11 +174,12 @@