Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bolehkah saya Menghantar E-mel dalam Go Tanpa Menggunakan Pelayan SMTP?

Bolehkah saya Menghantar E-mel dalam Go Tanpa Menggunakan Pelayan SMTP?

DDD
DDDasal
2024-10-25 20:27:02991semak imbas

Can I Send Emails in Go Without Using an SMTP Server?

Menghantar E-mel Tanpa Pelayan SMTP dalam Go

Soalan:

Anda mahu menghantar e-mel pukal tanpa bergantung pada pelayan SMTP luaran kerana had penggunaan. Bolehkah anda menghantar e-mel tanpa pelayan SMTP menggunakan pustaka standard Go?

Jawapan:

Untuk menghantar e-mel tanpa pelayan SMTP, anda mesti mewakilkan tugas kepada program lain yang mampu daripada menghantar e-mel. Dalam sistem POSIX, program /usr/sbin/sendmail selalunya tersedia untuk tujuan ini. Anda boleh memanggilnya dengan pilihan -t untuk mendapatkan semula alamat penerima daripada pengepala Kepada mesej.

Menggunakan Perpustakaan Standard dengan Sendmail

Anda boleh menggunakan os/exec pakej , net/mail dan net/textproto untuk memanggil Sendmail terus, tetapi pakej gomail menyediakan penyelesaian yang lebih mudah. Jenis Mesejnya termasuk kaedah WriteTo() yang boleh menulis kepada contoh Sendmail yang sedang berjalan. Berikut ialah contoh:

<code class="go">import (
    "os/exec"

    "github.com/go-gomail/gomail"
)

const sendmailPath = "/usr/sbin/sendmail"

func sendEmail(m *gomail.Message) error {
    cmd := exec.Command(sendmailPath, "-t")
    cmd.Stdout = os.Stdout
    cmd.Stderr = os.Stderr

    stdin, err := cmd.StdinPipe()
    if err != nil {
        return err
    }

    if err := cmd.Start(); err != nil {
        return err
    }

    if _, err := m.WriteTo(stdin); err != nil {
        return err
    }

    if err := stdin.Close(); err != nil {
        return err
    }

    if err := cmd.Wait(); err != nil {
        return err
    }

    return nil
}</code>

Kelebihan Menggunakan MTA:

Walaupun menggunakan MTA mungkin kelihatan seperti langkah tambahan, ia menawarkan kelebihan beratur mel. Jika MTA tidak dapat menghantar mesej dengan segera, seperti semasa gangguan rangkaian, ia akan menyimpan mesej dalam baris gilir dan berulang kali cuba menghantarnya sehingga berjaya atau tamat masa berlaku.

Atas ialah kandungan terperinci Bolehkah saya Menghantar E-mel dalam Go Tanpa Menggunakan Pelayan SMTP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn