notification serviceda email xabar yuborish qo'shildi
This commit is contained in:
@@ -10,6 +10,11 @@ ESKIZ_USER="admin@gmail.com"
|
||||
ESKIZ_PASSWORD="password"
|
||||
ESKIZ_FROM="4546"
|
||||
|
||||
MAIL_DOMAIN=smtp.gmail.com
|
||||
MAIL_USER="JscorpTech@gmail.com"
|
||||
MAIL_PASSWORD="app password"
|
||||
MAIL_PORT=587
|
||||
|
||||
PMB_DOMAIN=""
|
||||
PMB_USER=""
|
||||
PMB_PASSWORD=""
|
||||
4
.gitignore
vendored
4
.gitignore
vendored
@@ -1,3 +1,3 @@
|
||||
.env
|
||||
./bin
|
||||
./main
|
||||
bin
|
||||
main
|
||||
5
internal/domain/email.go
Normal file
5
internal/domain/email.go
Normal file
@@ -0,0 +1,5 @@
|
||||
package domain
|
||||
|
||||
type EmailServicePort interface {
|
||||
SendMail([]string, []byte)
|
||||
}
|
||||
@@ -2,15 +2,19 @@ package notifier
|
||||
|
||||
import (
|
||||
"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 {
|
||||
return &emailNotifier{}
|
||||
return &emailNotifier{
|
||||
EmailService: services.NewEmailService(),
|
||||
}
|
||||
}
|
||||
|
||||
func (n *emailNotifier) SendMessage(to []string, body string) {
|
||||
pp.Print(to, body)
|
||||
n.EmailService.SendMail(to, []byte(body))
|
||||
}
|
||||
|
||||
33
internal/services/email.go
Normal file
33
internal/services/email.go
Normal 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
17
test.py
Normal 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!")
|
||||
@@ -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
|
||||
Reference in New Issue
Block a user