You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
109 lines
8.1 KiB
109 lines
8.1 KiB
package utils
|
|
|
|
import (
|
|
"context"
|
|
"errors"
|
|
|
|
"shop-api/global"
|
|
"shop-api/initialize/api"
|
|
)
|
|
|
|
func SendSms(phone, code string, types int) error {
|
|
var (
|
|
reply *api.SendSmsReply
|
|
err error
|
|
)
|
|
reply, err = global.SMS_CLIENT.SendMessage(context.Background(), &api.SendSmsRequest{
|
|
Phone: phone,
|
|
SmsType: int32(types),
|
|
AreaCode: code,
|
|
})
|
|
if err != nil {
|
|
return err
|
|
}
|
|
if reply.Code != 0 {
|
|
return errors.New(reply.Message)
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func SendEmail(email, types string) (string, error) {
|
|
var (
|
|
reply *api.SendEmailReply
|
|
err error
|
|
)
|
|
code := GetInvitation()
|
|
str := `To authorise your Login request , please use this One Time Password (OTP): ` + code
|
|
if types == "2" {
|
|
str = `To authorise your forgot password , please use this One Time Password (OTP): ` + code
|
|
}
|
|
body := `<!DOCTYPE html>
|
|
<html lang="en" xmlns="http://www.w3.org/1999/xhtml" xmlns:o="urn:schemas-microsoft-com:office:office">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width,initial-scale=1">
|
|
<meta name="x-apple-disable-message-reformatting">
|
|
<title></title>
|
|
<style>
|
|
table, td, div, h1, p {font-family: Arial, sans-serif;}
|
|
</style>
|
|
</head>
|
|
<body style="margin:0;padding:0;">
|
|
<table role="presentation" style="width:100%;border-collapse:collapse;border:0;border-spacing:0;background:#ffffff;">
|
|
<tr>
|
|
<td align="center" style="padding:0;">
|
|
<table role="presentation" style="width:602px;border-collapse:collapse;border:1px solid #cccccc;border-spacing:0;text-align:left;">
|
|
<tr>
|
|
<td align="center" style="padding:30px 0 30px 0;background:#0A2349;">
|
|
<img src="data:image/png;base64,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" alt="" style="height:auto;display:block;width:140px" />
|
|
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td style="padding:36px 30px 42px 30px;">
|
|
<table role="presentation" style="width:100%;border-collapse:collapse;border:0;border-spacing:0;">
|
|
<tr>
|
|
<td style="padding:0 0 36px 0;color:#153643;">
|
|
<h1 style="font-size:24px;margin:0 0 20px 0;font-family:Arial,sans-serif;">Ouction NFT</h1>
|
|
<p style="margin:0 0 12px 0;font-size:16px;line-height:24px;font-family:Arial,sans-serif;">` + str + ` </p>
|
|
<br>
|
|
<p>Thank you.</p>
|
|
<p>Ouction Team</p>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td style="padding:30px;background:#0D3056;">
|
|
<table role="presentation" style="width:100%;border-collapse:collapse;border:0;border-spacing:0;font-size:9px;font-family:Arial,sans-serif;">
|
|
<tr>
|
|
<td style="padding:0;width:50%;" align="left" colspan="2">
|
|
<p style="margin:0;font-size:14px;line-height:16px;font-family:Arial,sans-serif;color:#ffffff;">
|
|
© Ouction NFT
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</body>
|
|
</html>
|
|
`
|
|
reply, err = global.EMAIL_CLIENT.SendEmail(context.Background(), &api.SendRequest{
|
|
To: []string{email},
|
|
Subject: "验证码",
|
|
Body: body,
|
|
})
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
if reply.Code != 0 {
|
|
return "", errors.New(reply.Message)
|
|
}
|
|
return code, nil
|
|
}
|
|
|