Smtp로 Rabbitile 메일 서비스 보내기
Bugün go dilile yazm Oldu um basit bir 이메일 서비스
kulland Teknolojiler RabbitMQ, Smtp, Optical ve Gorm
Github Reposuna gitmek istiyorsanızGithub
Stmp
Golang ile basit bir sekilde gνnderici olan mail adresine giri yaparak istedi 이메일adresine mesaj ıhtml 템플릿 olarak gνnderece ğiz
Html nas 분석 edilir?
template.ParseFiles("./Templates/FeatureNotification.html")
template.ParseFiles("./Templates/FeatureNotification.html")
yukarıda html dosyasınıparse ediyoruz
저는 ediyoruz buradaki 임무를 수행하는 아키다키 지비입니다. 제목이'yaz ıyoruz'인 글에서 kıiseg 섬deriecek
templateBuffer.Write([]byte(fmt.Sprintf("Subject: Lates Features \n%s\n\n", mimeHeaders)))
t.Execute(&templateBuffer, nil)
Smtp 메일
sendMail fonksiyonu hangi consumerden triggerlandıysa ilgili htmli parse ediyoruz
switch tamplate {
case "WelcomeQueue":
body = parseHtml.WelcomeTemplate()
break
case "WeeklyReportQueue":
body = parseHtml.WeeklyReportTemplate()
break
case "FeatureNotificationQueue":
body = parseHtml.FeatureNotificationTemplate()
break
}
err := smtp.SendMail(smtpHost+":"+smtpPort, auth, senderMail, to, []byte(body))
yukaradaki kod bloğunda mail adresimize authentication Oldyoruz ve oldugumuz email adresinden to göndereceğimiz mail adresini içeriyor.msg ksm sm iseg νnderilecek olan mesaj çiyor ama biz orada bir mesaj yerine html 템플릿 gνnderece ğiz
RabbitMQ
이것은 좋은 예입니다
Evet var ççnküg≠nderecek oldugumuz mailleri 메시지 대기열
buildermemiz gerekiyor, yapt ız 응용 프로그램 belki databaseden ald ız mail adreslerine email 또는 Arken yarında 응용 프로그램 crashe Olabilityve biz hangi mail adreslerine mail 또는 Arken yarıs ında 응용 프로그램p>
Birden fazla 이메일 템플릿화 olabilir mesela 환영, 검증, 기능 알림gibi Farketiging gibi baz Bulk Bulk (toplu g섬derilen) 메일baz Balar 거래 (tekli) 메일
Biz her template icin bir Consume ve Publish oluşturacağz böylelike mail adresleri ilkönce queue gidicek sonra Consume“a iletilecek ve oradan templatine göre smtp ile maili göndereceğiz=)
Publish
RabbitMQ bağlantısıoluşturuyoruz
connectRabbitMQ, err := amqp.Dial(amqpServerURL)
bir channel olu turuyoruz에서 ile haberle şmek iç
소비
channelRabbitMQ, err := connectRabbitMQ.Channel()
yeni bir mesaj oluque bubunuqueug gender iyoruz ama burda burdakin burmes mesaj bubububuquegqueggggnderiyoryyyyounnnn\23111 r涜 yerden alıyor mesaj'iıoquequeismine ismine gmine gggge ggege ggerggge buder buder buder buder buder buder buder buderyderyder가 Aryzzzhhhhhhhhhhyyyde 주 주 주
message := amqp.Publishing{
ContentType: "text/plain",
Body: msg,
}
// mesaji publish eder.
if err := channelRabbitMQ.Publish(
"",// exchange
queueName,// queue name
false,
false,
message,
); err != nil {
return err
}
Consume
buradaki işlemlerde aynısayılır ama bir farkla=)
줄을 서서 deki mesajlar Okuy가 bir send Mail Fonksiyonu trigger ediyor에 그녀를 추가한 mesaj iç
forever := make(chan bool)
go func() {
for message := range messages {
to := []string{string(message.Body)}
//queue'dan gelen mesaji mail.Send fonksiyonuna gönder
mail.SendMail(to, queueName)
log.Printf(" > Received message: %s\n", message.Body)
}
}()
<-forever
Bulk Mail & Transaction Mail
유카리다 부이키신덴 바세트미 제네르 안란다 토플루 그드레렌 메르르 부이키신덴 바세트미 제네르 안란다 토플루 그드레렌 메르르 부이키신덴 바세트, 그는 그드레렌 메르르르엘의 거래 우편 거부 편지에
db, err := db.ConnectDB()
if err != nil {
log.Fatal(err)
panic(err)
}
var User []models.User
db.Find(&User)
yukar diye ba lan pdbdeki 사용자 lar hepsini arrayin içine al ıyoruz
AşAşAş Aşda는 d捞ngüs üne al ıp의 사용자인 "ın maili için[] 바이트 Ad捞nüt ür üp bunuqueue g捞nderiyoruz burada[] 바이트 Ad捞nüt ürmemizin sebebit MQ channeli 바이트 iberlehaberle
for _, t := range User {
var to []byte
to = []byte(t.Email)
rabbitmq.Publisher(to, template)
}
트랜잭션 메일 주소: ise farkl\farkl\lemler yap\labilir ama biz bir halde fiber endpoint inden gelen 메일 주소: 이메일 주소: g≠nderece\iz
Main
주요 재단 구성원 ile büt ün Consumerri dinliyoruz bunlar hep a ıyor queue herhangi bir mail girdi ğ inde direkt bunlar 脚leme g νnderecek
WelcomeQueue := "WelcomeQueue"
WeeklyReportQueue := "WeeklyReportQueue"
FeatureNotificationQueue := "FeatureNotificationQueue"
// consumelari dinliyoruz
go rabbitmq.Consume(WeeklyReportQueue)
go rabbitmq.Consume(FeatureNotificationQueue)
go rabbitmq.Consume(WelcomeQueue)
데디움 지블레리 론드리켄 론드리켄 섬유 단점은 복잡한 건축군을 촉발시켰다. 이 건축군은 에밀 디에니의 쿠란 크론디에 건축군 안에 위치하고 이를 세계 각지로 확장시켰다.
app := fiber.New()
app.Use(
logger.New(), // add simple logger
)
app.Get("/FeatureNotification", func(c *fiber.Ctx) error {
go logic.BulkMail(FeatureNotificationQueue)
return c.SendString("Feature notification Sended")
})
app.Get("/WelcomeNotification", func(c *fiber.Ctx) error {
msg := []byte(c.Query("msg"))
logic.Transactional(msg,WelcomeQueue)
return c.SendString("Welcome Sended to "+string(msg))
})
conclusion
이번 회의의 주요 의제는 모든 변수를 다른 변수로 전환하는 방법에 관한 서비스를 제공하는 것입니다.
우마르 아즈미 시니즈딜, 아즈무 아누르 아즈미 아즈마 알, 아즈마 알, 아즈마 알, 디르림 엘리언던 게르디오인스
Reference
이 문제에 관하여(Smtp로 Rabbitile 메일 서비스 보내기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/go/go-smtp-ve-rabbitmq-ile-email-servisi-4end텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)