اتصال به ایمیل‌سرور در برنامه‌های Golang


برای استفاده از سرویس ایمیل در برنامه‌های Golang، می‌توانید از پکیج gomail استفاده کنید که بایستی با دستور زیر، آن را در پروژه خود، نصب کنید:

کپی
go get github.com/go-gomail/gomail

پس از آن، کافیست تا طبق مستندات SMTP، یک دسترسی SMTP و طبق مستندات افزودن نشانی، یک نشانی برای ایمیل‌سرور خود، ایجاد کنید. در نهایت نیز، بایستی اطلاعات مربوط به ایمیل‌سرور خود را به متغیرهای محیطی برنامه خود، اضافه کنید؛ به عنوان مثال:

کپی
MAIL_HOST=smtp.example.com
MAIL_PORT=587
MAIL_USERNAME=your_username
MAIL_PASSWORD=your_password
MAIL_FROM=from@example.com

مقدار MAIL_FROM، باید یکی از نشانی‌های اضافه شده در سرویس ایمیل باشد.

در نهایت می‌توانید در پروژه‌ی خود مانند مثال زیر عمل کرده و با استفاده از دسترسی SMTP سرویس ایمیل لیارا، اقدام به ارسال ایمیل‌های تراکنشی کنید:

کپی
package main

import (
    "fmt"
    "gopkg.in/gomail.v2"
	"crypto/tls"
	"os"
	"strconv"
	"github.com/joho/godotenv"
)

func main() {

	// Load environment variables from .env file
    err := godotenv.Load(".env")
    if err != nil {
        fmt.Println("Error loading .env file:", err)
        return
    }

    // Convert MAIL_PORT to int
    mailPort, err := strconv.Atoi(os.Getenv("MAIL_PORT"))
    if err != nil {
        fmt.Println("Error converting MAIL_PORT to int:", err)
        return
    }

	// Create a new email message
	m := gomail.NewMessage()
	m.SetHeader("From", os.Getenv("MAIL_FROM"))
	m.SetHeader("To", "email@email.email") // Replace with actual recipient
	m.SetHeader("Subject", "This is a TEST")
	body := "this is really a test"
	m.SetBody("text/plain", body)

    // Create a new dialer
    d := gomail.NewDialer(os.Getenv("MAIL_HOST"), mailPort, os.Getenv("MAIL_USERNAME"), os.Getenv("MAIL_PASSWORD"))
    d.TLSConfig = &tls.Config{InsecureSkipVerify: true}

    // Dial and send the email
    if err := d.DialAndSend(m); err != nil {
        fmt.Println("Error sending email:", err)
    } else {
        fmt.Println("Email sent successfully")
    }
}

با تنظیم d.TLSConfig، می‌توانید به‌صورت امن اقدام به ارسال ایمیل‌های تراکنشی کنید.