Private method to bottom of the file
This commit is contained in:
parent
cc3376154f
commit
1f75633c5c
1 changed files with 63 additions and 63 deletions
|
@ -19,69 +19,6 @@ import (
|
|||
"github.com/spf13/viper"
|
||||
)
|
||||
|
||||
func sendViaSMTP(toEmails []string, fromName string, fromEmail string, subject string, htmlBody string, inlineImages []map[string]interface{}) error {
|
||||
if len(toEmails) == 0 {
|
||||
return ente.ErrBadRequest
|
||||
}
|
||||
|
||||
smtpServer := viper.GetString("smtp.host")
|
||||
smtpPort := viper.GetString("smtp.port")
|
||||
smtpUsername := viper.GetString("smtp.username")
|
||||
smtpPassword := viper.GetString("smtp.password")
|
||||
|
||||
var emailMessage string
|
||||
|
||||
// Construct 'emailAddresses' with comma-separated email addresses
|
||||
var emailAddresses string
|
||||
for i, email := range toEmails {
|
||||
if i != 0 {
|
||||
emailAddresses += ","
|
||||
}
|
||||
emailAddresses += email
|
||||
}
|
||||
|
||||
header := "From: " + fromName + " <" + fromEmail + ">\n" +
|
||||
"To: " + emailAddresses + "\n" +
|
||||
"Subject: " + subject + "\n" +
|
||||
"MIME-Version: 1.0\n" +
|
||||
"Content-Type: multipart/related; boundary=boundary\n\n" +
|
||||
"--boundary\n"
|
||||
htmlContent := "Content-Type: text/html; charset=us-ascii\n\n" + htmlBody + "\n"
|
||||
|
||||
emailMessage = header + htmlContent
|
||||
|
||||
if inlineImages == nil {
|
||||
emailMessage += "--boundary--"
|
||||
} else {
|
||||
for _, inlineImage := range inlineImages {
|
||||
|
||||
emailMessage += "--boundary\n"
|
||||
var mimeType = inlineImage["mime_type"].(string)
|
||||
var contentID = inlineImage["cid"].(string)
|
||||
var imgBase64Str = inlineImage["content"].(string)
|
||||
|
||||
var image = "Content-Type: " + mimeType + "\n" +
|
||||
"Content-Transfer-Encoding: base64\n" +
|
||||
"Content-ID: <" + contentID + ">\n" +
|
||||
"Content-Disposition: inline\n\n" + imgBase64Str + "\n"
|
||||
|
||||
emailMessage += image
|
||||
}
|
||||
emailMessage += "--boundary--"
|
||||
}
|
||||
|
||||
// Send the email to each recipient
|
||||
for _, toEmail := range toEmails {
|
||||
auth := smtp.PlainAuth("", smtpUsername, smtpPassword, smtpServer)
|
||||
err := smtp.SendMail(smtpServer+":"+smtpPort, auth, fromEmail, []string{toEmail}, []byte(emailMessage))
|
||||
if err != nil {
|
||||
return stacktrace.Propagate(err, "")
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// Send sends an email
|
||||
func Send(toEmails []string, fromName string, fromEmail string, subject string, htmlBody string, inlineImages []map[string]interface{}) error {
|
||||
if len(toEmails) == 0 {
|
||||
|
@ -167,3 +104,66 @@ func getMailBody(templateName string, templateData map[string]interface{}) (stri
|
|||
}
|
||||
return htmlbody.String(), nil
|
||||
}
|
||||
|
||||
func sendViaSMTP(toEmails []string, fromName string, fromEmail string, subject string, htmlBody string, inlineImages []map[string]interface{}) error {
|
||||
if len(toEmails) == 0 {
|
||||
return ente.ErrBadRequest
|
||||
}
|
||||
|
||||
smtpServer := viper.GetString("smtp.host")
|
||||
smtpPort := viper.GetString("smtp.port")
|
||||
smtpUsername := viper.GetString("smtp.username")
|
||||
smtpPassword := viper.GetString("smtp.password")
|
||||
|
||||
var emailMessage string
|
||||
|
||||
// Construct 'emailAddresses' with comma-separated email addresses
|
||||
var emailAddresses string
|
||||
for i, email := range toEmails {
|
||||
if i != 0 {
|
||||
emailAddresses += ","
|
||||
}
|
||||
emailAddresses += email
|
||||
}
|
||||
|
||||
header := "From: " + fromName + " <" + fromEmail + ">\n" +
|
||||
"To: " + emailAddresses + "\n" +
|
||||
"Subject: " + subject + "\n" +
|
||||
"MIME-Version: 1.0\n" +
|
||||
"Content-Type: multipart/related; boundary=boundary\n\n" +
|
||||
"--boundary\n"
|
||||
htmlContent := "Content-Type: text/html; charset=us-ascii\n\n" + htmlBody + "\n"
|
||||
|
||||
emailMessage = header + htmlContent
|
||||
|
||||
if inlineImages == nil {
|
||||
emailMessage += "--boundary--"
|
||||
} else {
|
||||
for _, inlineImage := range inlineImages {
|
||||
|
||||
emailMessage += "--boundary\n"
|
||||
var mimeType = inlineImage["mime_type"].(string)
|
||||
var contentID = inlineImage["cid"].(string)
|
||||
var imgBase64Str = inlineImage["content"].(string)
|
||||
|
||||
var image = "Content-Type: " + mimeType + "\n" +
|
||||
"Content-Transfer-Encoding: base64\n" +
|
||||
"Content-ID: <" + contentID + ">\n" +
|
||||
"Content-Disposition: inline\n\n" + imgBase64Str + "\n"
|
||||
|
||||
emailMessage += image
|
||||
}
|
||||
emailMessage += "--boundary--"
|
||||
}
|
||||
|
||||
// Send the email to each recipient
|
||||
for _, toEmail := range toEmails {
|
||||
auth := smtp.PlainAuth("", smtpUsername, smtpPassword, smtpServer)
|
||||
err := smtp.SendMail(smtpServer+":"+smtpPort, auth, fromEmail, []string{toEmail}, []byte(emailMessage))
|
||||
if err != nil {
|
||||
return stacktrace.Propagate(err, "")
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue