|
- // Copyright © 2023 OpenIM open source community. All rights reserved.
- //
- // Licensed under the Apache License, Version 2.0 (the "License");
- // you may not use this file except in compliance with the License.
- // You may obtain a copy of the License at
- //
- // http://www.apache.org/licenses/LICENSE-2.0
- //
- // Unless required by applicable law or agreed to in writing, software
- // distributed under the License is distributed on an "AS IS" BASIS,
- // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- // See the License for the specific language governing permissions and
- // limitations under the License.
-
- package client
-
- import (
- "fmt"
- "net/smtp"
-
- "github.com/jordan-wright/email"
-
- "github.com/OpenIMSDK/OpenKF/server/internal/config"
- )
-
- // todo: use email connection pool to reduce the cost of creating a connection
- // link: https://github.com/jordan-wright/email#a-pool-of-reusable-connections
-
- // SendEmail send email.
- func SendEmail(to string, subject string, body string) error {
- email := email.NewEmail()
-
- email.From = fmt.Sprintf("%s<%s>", config.Config.Email.Nickname, config.Config.Email.From)
- email.To = []string{to}
- email.Subject = subject
- email.Text = []byte(body)
-
- if err := email.Send(
- fmt.Sprintf("%s:%d", config.Config.Email.Host, config.Config.Email.Port),
- smtp.PlainAuth(
- "", config.Config.Email.From, config.Config.Email.Password, config.Config.Email.Host,
- ),
- ); err != nil {
- return err
- }
-
- return nil
- }
-
- // SendHtmlEmail send html email.
- func SendHtmlEmail(to string, subject string, html string) error {
- email := email.NewEmail()
-
- email.From = config.Config.Email.From
- email.To = []string{to}
- email.Subject = subject
- email.HTML = []byte(html)
-
- if err := email.Send(
- fmt.Sprintf("%s:%d", config.Config.Email.Host, config.Config.Email.Port),
- smtp.PlainAuth(
- "", config.Config.Email.From, config.Config.Email.Password, config.Config.Email.Host,
- ),
- ); err != nil {
- return err
- }
-
- return nil
- }
|