ارسال ایمیل با GOlang

در کل ارسال ایمیل با golang (یا هر زبون دیگه ایی) کار اسونیه و روش ها و پکیج های مختلفی برای انجامش وجود داره من از پکیج net/smtp استفاده میکنم تا ایمیل هامو از طریق پروتکل smtp ارسال کنم.

داکیومنت اصلی پکیجو میتونید اینجا ببینید.

حالا بیایید با هم یه کد بزنیم که برامون ایمیلمون رو ارسال کنه.

اولین کاری که نیازه انجام بدید اینه که یه پوشه بسازید و توش با دستور go mod init پروژتونو initialize کنید. مثل چیزی که اینجا نوشتم :

حالا یه فایل به اسم main.go بسازید و توش کدای زیر رو بنویسین :

توی کد بالا ما یه ایمیل با با پیام the body of email رو برای گیرنده ارسال کردیم فقط توجه داشته باشید که ما از جیمیل برای ارسال ایمیلمون استفاده کردیم برای همینم از سرور smtp جیمیل استفاده کردید. حالا باید یه نکته دیگه رو هم در نظر بگیرید اونم اینه که جیمیل ها به صورت پیش فرض برای امنیت بیشتر یه قابلیتی دارن که به برنامه های third-party اجازه ندن که باهاشون ایمیل ارسال کنیم برای همینم باید اول بریم توی تنظیمات جیمیل (قطعا فرسنده منظورمه) و اون گزینه رو موقتی غیر فعال کنیم که بعدش بتونیم با برنامه خودمون ایمیلا رو ارسال کنیم.

برای فعال کردن این گزینه (allow less secure apps) میتونید از این لینک استفاده کنید. و یا تو گوگل سرچ کنید :‌ how to turning on allow less secure apps in gamil

در کل نوشتن کل برنامه توی تابع main زیاد کار جالبی نیست و هر بار برای ارسال ایمیل متفاوت باید خود کدو تغییر بدیم برای همین من اونو این شکلی به صورت یک تابع در اوردم که هر جای برنامه خواستیم ازش استفاده کنیم :

حالا هر جای برنامه که نیاز به ارسال ایمیل باشه کافیه تابع رو صدا بزنیم .

ولی بعضی وقتا نیازه که فقط یه پیام رو توی ایمیل ارسال نکنیم بلکه یه ایمیل به صورت template.html ارسال کنیم که برای اینکار نیاز به ابزاری داریم که برامون فایل html رو رندر کنه برای همین از text/template استفاده میکنیم و چیزی شبیه به کد زیر میشه :

فقط توجه داشته باشید که template _name در واقع اسم یه فایل html توی همون پوشه است یعنی اگه لیست فایل های داخل پوشه مون رو بگیریم اینطور چیزی برمیگردونه :

ls 
main.go        template.html

و همچنین data که از ورودی گرفته میشه رو پاس میده به فایل html و توی فایل html میتونید از متغیرا اینطوری استفاده کنید :

که کلید Hello در واقع کلید همون چیزیه که توی map دیتا ارسال کردیم.


شاد و موفق باشید.