Go 언어 + SendGrid로 70줄에서'메일로 상담 받기'를 실시합니다!
10423 단어 Go
이번 보도는 공식 자료고를 참고했다.
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는 다양한 방법을 사용할 수 있으며 앞으로도 다양한 방법을 시도할 것입니다.
Reference
이 문제에 관하여(Go 언어 + SendGrid로 70줄에서'메일로 상담 받기'를 실시합니다!), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/po3rin/items/cdfcec906b2819b67eba텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)