Go 언어 + SendGrid로 70줄에서'메일로 상담 받기'를 실시합니다!

10423 단어 Go
자유로운 안건 중에는'상담표를 받고 싶다'는 안건이 많지만 Go언어+SendGrid를 사용해 보면'메일로 상담받기'는 Go의 코드 70 스케줄에서 개발된 최고라서 공유된다.
이번 보도는 공식 자료고를 참고했다.
https://github.com/sendgrid/sendgrid-go

SendGrid란 무엇입니까?



클라우드 기반 메일 발송 서비스.메일 서버의 운용이 매우 번거롭기 때문에 전부 당신에게 맡길 수 있습니다.WEB API와 SMTP API를 기능 설치에 추가하는 것도 매우 간단하기 때문이다.통수 상한선도 12000통/월이며, 간단한 문의일 경우 매월 무료로도 여유롭게 사용할 수 있습니다!

이번에 설치한 물건



자문을 받는 API 서버를 만듭니다.전원을 켜서 자체 검사하여 받은 데이터를 자신에게 보내다.

SendGrid의 API 키 가져오기


우선 API 키를 받아야 합니다.
아래 URL에서 계정을 등록합니다.
https://sendgrid.kke.co.jp/
등록이 완료되면 심사해야 할 것 같아서 우편물이 오기를 기다립니다.나의 상황은 3시간 정도면 비준을 받았다.
승인 후 로그인하여 API 키를 얻습니다.
Setting>API Keys에서 Create API Key라는 파란색 버튼을 누르면 Permission에 대한 질문을 받지만 잠시 Full Access를 사용하면 됩니다.
API 키를 얻은 후 저장하거나 복사합니다.API 키가 누락되면 키를 다시 확인할 수 없으므로 키를 다시 만들어야 합니다.

Go 언어로 구현


결국 이렇게 될 거야.
go-send-contact
├── domain
│   └── mail.go
├── handler
│   └── handler.go
├── main.go
└── sendgrid.env
먼저 API 키를 환경 변수에 넣습니다.YOUR_API_KEY의 API 키를 삽입하여 실행합니다.신중을 기하기 위해서 외부에 누설하지 마라.gitignore에서 환경 변수를 저장하는 파일을 지정합니다.
$ echo "export SENDGRID_API_KEY={{YOUR_API_KEY}}" > sendgrid.env
$ echo "sendgrid.env" >> .gitignore
$ source ./sendgrid.env
그럼 곧 Go 언어로 실시됩니다.
domain/mail.고부터 해.구조에서 보낼 메일에 필요한 데이터를 정의합니다.
package domain

// Mail - strut mail
type Mail struct {
    Name    string `json:"name"`
    Subject string `json:"subject"`
    Text    string `json:"text"`
    Email   string `json:"email"`
}
다음은 이번 메인!받은 데이터를 메일로 보냅니다.먼저 메일을 보낼 때 사용하는 가방을 넣습니다.
'github.com/sendgrid/sendgrid-go'는 API 구현을 간소화했고,'sendgrid-go/helpers/mail'은 메일을 만드는 데 사용되는 helper입니다.
$ go get "github.com/sendgrid/sendgrid-go"
$ go get "github.com/sendgrid/sendgrid-go/helpers/mail"
package handler

import (
    "go-send-contact/domain"
    "os"

    "github.com/gin-gonic/gin"

    sendgrid "github.com/sendgrid/sendgrid-go"
    "github.com/sendgrid/sendgrid-go/helpers/mail"
)

// SendMail - send mail include body data
func SendMail(c *gin.Context) {
    var m domain.Mail
    err := c.BindJSON(&m)
    if err != nil {
        c.JSON(http.InternalServerError, err.Error())
    }

    // set val to send mail
    from := mail.NewEmail(m.Name, m.Email)
    subject := m.Subject
    to := mail.NewEmail("admin", "[email protected]") // メールを受けたい名前とアドレスを指定
    plainTextContent := m.Text
    htmlContent := m.Text

    // create message
    message := mail.NewSingleEmail(from, subject, to, plainTextContent, htmlContent)

    // send mail
    client := sendgrid.NewSendClient(os.Getenv("SENDGRID_API_KEY"))
    response, err := client.Send(message)
    if err != nil {
        c.JSON(response.StatusCode, err.Error())
    }
    c.JSON(response.StatusCode, "success to send mail !!")
}
c.BindJSON(&m) 전원을 켜서 자체 검사한 바디를 구조체에 연결한다.
[email protected]의 일부분은 상담을 받고 싶은 우편 주소를 지정합니다.
여기 도착하면 라우터만 뛰게 해.main.go.
package main

import (
    "go-send-contact/handler"

    "github.com/gin-gonic/gin"
)

func main() {
    r := gin.Default()
    r.POST("/api/v1/contact", handler.SendMail)
    r.Run()
}
이로써 기본 방식으로 켜진 자체 검사 데이터를 전송하는 API가 완성되었다.동작을 실행하고 확인하세요.
$ go run main.go
$ curl localhost:8080/api/v1/contact -d '{"name":"po3rin","subject":"hello send grid","text":"hello hello hello","email":"[email protected]"}'
"success to send mail !!"
[email protected]의 부분은 임의의 우편 주소로 바꾸십시오.
이렇게 "success to send mail !!" 나오면 일을 할 수 있다.
메일이 왔는지 확인해 봐.지밀로 받았어요.

그래.이제 전원을 켜서 프런트엔드에서 호출을 수신한 다음 이메일로 API를 직접 수신할 수 있습니다.
SendGrid는 다양한 방법을 사용할 수 있으며 앞으로도 다양한 방법을 시도할 것입니다.

좋은 웹페이지 즐겨찾기