Skip to content

Commit

Permalink
Merge pull request #168 from yashlm/main
Browse files Browse the repository at this point in the history
changed mailing service for mmtp
  • Loading branch information
yashlm authored Jul 21, 2024
2 parents 9efa58d + 112a466 commit 42b9073
Show file tree
Hide file tree
Showing 2 changed files with 56 additions and 7 deletions.
2 changes: 1 addition & 1 deletion docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ version: "3.5"

services:
database:
image: postgres
image: postgres:14.7
restart: always
environment:
- POSTGRES_USER=postgres
Expand Down
61 changes: 55 additions & 6 deletions mail/service.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import (
"time"
"text/template"
"github.com/sirupsen/logrus"
"crypto/tls"
)

type Mail struct {
Expand Down Expand Up @@ -72,16 +73,64 @@ func Service(mailQueue chan Mail) {
addr := fmt.Sprintf("%s:%s", host, port)
auth := smtp.PlainAuth("", user, pass, host)

tlsConfig := &tls.Config{
InsecureSkipVerify: true, // Change this to verify server certificate in production
}
conn, err := tls.Dial("tcp", addr, tlsConfig)
if err != nil {
logrus.Errorf("Error dialing SMTPS server: %v", err)
}

client, err := smtp.NewClient(conn, host)
if err != nil {
logrus.Errorf("Error creating SMTP client: %v", err)
}


if err := client.Auth(auth); err != nil {
logrus.Errorf("Error authenticating: %v", err)
}

for mail := range mailQueue {
message := mail.BuildMessage()
to := append(mail.To, webteam)
batches:= batchEmails(to, batch);
for _, emailBatch:= range batches {
if err := smtp.SendMail(addr, auth, sender, emailBatch, message); err != nil {
logrus.Errorf("Error sending mail: %v", emailBatch)
logrus.Errorf("Error: %v", err)
batches := batchEmails(to, batch)
for _, emailBatch := range batches {

// if err := client.StartTLS(tlsConfig); err != nil {
// logrus.Errorf("Error starting TLS: %v", err)
// continue
// }
if err := client.Mail(sender); err != nil {
logrus.Errorf("Error setting sender: %v", err)
}

for _, recipient := range emailBatch {
if err := client.Rcpt(recipient); err != nil {
logrus.Errorf("Error setting recipient %s: %v", recipient, err)
continue
}
}

// Send the email body
w, err := client.Data()
if err != nil {
logrus.Errorf("Error creating data writer: %v", err)
continue
}
_, err = w.Write(message)
if err != nil {
logrus.Errorf("Error writing email body: %v", err)
}
err = w.Close()
if err != nil {
logrus.Errorf("Error closing data writer: %v", err)
}
time.Sleep(1 * time.Second)
}
}
}

if err := client.Quit(); err != nil {
logrus.Errorf("Error closing connection: %v", err)
}
}

0 comments on commit 42b9073

Please sign in to comment.