Go에서 SMTP 서버 없이 이메일 보내기
질문:
보내는 것이 가능합니까? 타사 SMTP 서버를 사용하지 않고 대량 이메일을 보내시나요? 표준 라이브러리의 SMTP 패키지가 솔루션을 제공할 수 있습니까?
답변:
SMTP 서버 없이 이메일을 직접 보내는 것은 불가능합니다. 그러나 이메일 전송 기능이 있는 다른 프로그램을 활용할 수도 있습니다.
외부 프로그램을 사용한 접근 방식:
권장되는 접근 방식 중 하나는 Sendmail 또는 Nullmailer와 같은 외부 프로그램을 활용하는 것입니다. 이러한 프로그램은 이메일 전달을 처리하며 Go의 os/exec 패키지를 사용하여 호출할 수 있습니다.
구체적으로 gomail.Message 유형의 WriteTo 메소드를 사용하여 실행 중인 Sendmail 인스턴스에 직접 이메일을 보낼 수 있습니다. 다음은 예제 코드 조각입니다.
<code class="go">import ( "os" "os/exec" "github.com/gomail/gomail" ) func submitMail(m *gomail.Message) (err error) { const sendmail = "/usr/sbin/sendmail" cmd := exec.Command(sendmail, "-t") cmd.Stdout = os.Stdout cmd.Stderr = os.Stderr pw, err := cmd.StdinPipe() if err != nil { return } err = cmd.Start() if err != nil { return } var errs [3]error _, errs[0] = m.WriteTo(pw) errs[1] = pw.Close() errs[2] = cmd.Wait() for _, err = range errs { if err != nil { return } } return }</code>
MTA 사용의 장점:
SMTP 서버 사용과 직접적인 관련은 없지만 완전한 메일 전송 에이전트(MTA)를 활용합니다. ) Sendmail과 마찬가지로 추가 혜택을 제공합니다. MTA는 메일 대기열 기능을 제공하여 네트워크 중단 시에도 이메일이 안정적으로 전달되도록 보장합니다.
위 내용은 ## Go에서 대량 이메일을 보내기 위해 SMTP 서버를 우회할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!