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 @@