notification serviceda email xabar yuborish qo'shildi

This commit is contained in:
A'zamov Samandar
2025-04-24 23:26:46 +05:00
parent e79718a3ea
commit 40200a4649
7 changed files with 71 additions and 7 deletions

View File

@@ -10,6 +10,11 @@ ESKIZ_USER="admin@gmail.com"
ESKIZ_PASSWORD="password" ESKIZ_PASSWORD="password"
ESKIZ_FROM="4546" ESKIZ_FROM="4546"
MAIL_DOMAIN=smtp.gmail.com
MAIL_USER="JscorpTech@gmail.com"
MAIL_PASSWORD="app password"
MAIL_PORT=587
PMB_DOMAIN="" PMB_DOMAIN=""
PMB_USER="" PMB_USER=""
PMB_PASSWORD="" PMB_PASSWORD=""

4
.gitignore vendored
View File

@@ -1,3 +1,3 @@
.env .env
./bin bin
./main main

5
internal/domain/email.go Normal file
View File

@@ -0,0 +1,5 @@
package domain
type EmailServicePort interface {
SendMail([]string, []byte)
}

View File

@@ -2,15 +2,19 @@ package notifier
import ( import (
"github.com/JscorpTech/notification/internal/domain" "github.com/JscorpTech/notification/internal/domain"
"github.com/k0kubun/pp/v3" "github.com/JscorpTech/notification/internal/services"
) )
type emailNotifier struct{} type emailNotifier struct {
EmailService domain.EmailServicePort
}
func NewEmailNotifier() domain.NotifierPort { func NewEmailNotifier() domain.NotifierPort {
return &emailNotifier{} return &emailNotifier{
EmailService: services.NewEmailService(),
}
} }
func (n *emailNotifier) SendMessage(to []string, body string) { func (n *emailNotifier) SendMessage(to []string, body string) {
pp.Print(to, body) n.EmailService.SendMail(to, []byte(body))
} }

View File

@@ -0,0 +1,33 @@
package services
import (
"fmt"
"net/smtp"
"os"
"github.com/JscorpTech/notification/internal/domain"
)
type emailService struct{}
func NewEmailService() domain.EmailServicePort {
return &emailService{}
}
func (e *emailService) SendMail(to []string, body []byte) {
// Gmail konfiguratsiyasi
from := os.Getenv("MAIL_USER")
password := os.Getenv("MAIL_PASSWORD")
smtpHost := os.Getenv("MAIL_DOMAIN")
smtpPort := os.Getenv("MAIL_PORT")
auth := smtp.PlainAuth("", from, password, smtpHost)
err := smtp.SendMail(smtpHost+":"+smtpPort, auth, from, to, body)
if err != nil {
fmt.Println("Xatolik:", err)
return
}
fmt.Println("Email yuborildi!")
}

17
test.py Normal file
View File

@@ -0,0 +1,17 @@
from kombu import Connection, Exchange, Producer
# RabbitMQ ulanishi
rabbit_url = 'amqp://guest:guest@127.0.0.1:5672/'
connection = Connection(rabbit_url)
channel = connection.channel()
exchange = Exchange('notification', type='direct')
# Producer yaratish
producer = Producer(channel, exchange=exchange, routing_key="notification")
# Xabar yuborish
message = {'type': 'email', 'message': "Subject: test\r\n\r\nclasscom.uz sayti va mobil ilovasiga ro'yxatdan o'tishingingiz uchun tasdiqlash kodi: 1234", "to": ["JscorpTech@gmail.com", "admin@jscorp.uz"]}
producer.publish(message)
print("Message sent to all workers!")

View File

@@ -1 +1 @@
exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1 exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1exit status 1