قد تحتاج غالبًا إلى إرسال رسائل بريد إلكتروني إلى العديد من الحسابات باستخدام برامج للمصادقة والعديد من الأغراض الأخرى.

يحدد بروتوكول SMTP المعايير التي تسمح بالاتصال عبر البريد الإلكتروني عبر خوادم البريد ووكلاء نقل البريد ، بينما بروتوكول IMAP مخصص لتلقي رسائل البريد الإلكتروني.

يوفر Go وظائف للأنشطة المتعلقة بالبريد الإلكتروني المحددة بواسطة RFC في حزمة net / smtp ، والتي تحتوي أيضًا على امتدادات 8BITMIME و AUTH و STARTTLS.

الكود المستخدم في هذا المشروع متاح في ملف مستودع جيثب وهو مجاني لك لاستخدامه بموجب ترخيص MIT.

كيفية إرسال رسائل البريد الإلكتروني في Go باستخدام حزمة Net / SMTP

تعد حزمة net / smtp جزءًا من مكتبة Go القياسية ، لذلك لا تحتاج إلى تثبيت أي حزمة خارجية. ما عليك سوى استيراد الحزمة قبل استخدامها.

يستورد (
"net / smtp"
"سجل"
"تشفير / TLS"
"fmt"
)

ستحتاج أيضًا إلى استيراد ملف سجل الحزمة لتسجيل الأخطاء في وحدة التحكم و التشفير / TLS حزمة لتكوين اتصال آمن.

بمجرد استيراد حزمة net / smtp ، يجب عليك كتابة ملف ارسل بريد() وظيفة لإرسال البريد ثم استدعاء الوظيفة في الوظيفة الرئيسية.

funcرئيسي() {
FMT. طباعة (إرسال بريد ())
}
funcارسل بريد()سلسلة {
// أضف الكود هنا
}
instagram viewer

ال ارسل بريد() قد تحتوي على الرمز الذي يرسل البريد إلى المستلمين.

كيف يتم إرسال رسائل البريد الإلكتروني

يحدد بروتوكول SMTP المعلمات التي يحتاجها كل بريد. هذه المعلمات هي عناوين بريد المرسل والمتلقي ، ومنفذ يتم إرسال البريد عليه ، وخادم مضيف ، ورسالة.

المعلمات المذكورة أعلاه مهمة لإرسال رسائل البريد الإلكتروني.

في هذا البرنامج التعليمي ، ستتعلم إرسال رسائل بريد إلكتروني إلى Yahoo. ومع ذلك ، فإن العملية هي نفسها بالنسبة لأي موفر خادم بريد (MSP) تستخدمه.

نظرًا لأنك تستخدم Yahoo Mail ، فقم بتسجيل الدخول إلى ملف بريد ياهو الحساب ، وجهاً لوجه معلومات الحساب، وانقر فوق أمن الحساب التبويب. ثم قم بإنشاء كلمة مرور التطبيق. ستحتاج إلى تسمية التطبيق ، وبعد ذلك سيقوم Yahoo Mail بإنشاء كلمة مرور للتطبيق ، ويمكنك استخدام كلمة المرور في الرمز الخاص بك إلى جانب عنوان البريد الخاص بك.

في ال ارسل بريد() وظيفة ، سوف تعلن عن ثلاثة متغيرات ؛ متغير يحمل سلسلة بريدك الإلكتروني ، متغيرًا يحتفظ بكلمة مرور بريدك الإلكتروني ، وسلسلة تحتوي على عنوان البريد الإلكتروني الذي ترسل إليه الرسائل.

من: = "[email protected]"
كلمة المرور: = "aSecurePasswordHere"
to: = "[email protected]"

يمكنك استخدام شريحة و حلقة من خلال العناصر إذا كنت تنوي إرسالها إلى عدة مستلمين.

الحصول على مضيف البريد الإلكتروني والمنفذ وضبطهما

يستخدم بروتوكول SMTP أرقام المضيف والمنافذ لتحديد مصدر البريد الإلكتروني. هذا هو المكان الذي يأتي فيه MSP الخاص بك. أنت بحاجة إلى معرفة المضيف ورقم المنفذ الذي يسمح لك MSP باستخدامه.

تحقق من هذا المورد للحصول على قائمة بمضيفي MSP و أرقام المنافذ إذا كنت تستخدم رسائل بريد إلكتروني عامة مثل Gmail أو Yahoo أو Outlook. أوقفت Google "التطبيقات الأقل أمانًا" لـ Gmail ؛ قد ترغب في تأمين تطبيقك إذا كنت تستخدم Gmail.

بمجرد حصولك على رقم المنفذ وعنوان المضيف ، قم بتعيينهما إلى متغيرات مثل هذا:

المضيف: = "smtp.mail.yahoo.com"
المنفذ: = "465"

أرقام المضيف والمنافذ أعلاه من Yahoo Mail للاستخدام في الحسابات العادية. الخادم مستضاف على smtp.mail.yahoo.com ، ويُسمح لك باستخدام المنفذ 465 لإرسال رسائل البريد الإلكتروني.

التصريح بمحتويات البريد الإلكتروني

الخطوة التالية هي التصريح عن محتويات البريد كمتغيرات. الموضوع والجسم يشكلان الرسالة.

الموضوع: = "مرحبًا ، أنا فقط أتحقق منك."
body: = "أتمنى أن تكون بخير! كيف حالك اليوم. "

ال موضوعات المتغير هو موضوع البريد الإلكتروني ؛ ال هيئة المتغير هو نص الرسالة الإلكترونية التي ترسلها.

تعيين رؤوس البريد الإلكتروني

ستحتاج إلى عمل خريطة للسلاسل للإشارة إلى رؤوس البريد الإلكتروني.

الرؤوس: = صنع(خريطة[سلسلة]سلسلة)
رؤوس ["من"] = من
رؤوس ["إلى"] = إلى
الرؤوس ["الموضوع"] = الموضوع
الرسالة: = ""
إلى عن على ك ، ت: = نطاق رؤوس {
رسالة + = fmt. Sprintf ("٪ s:٪ s \ r"، k، v)
}
رسالة + = "\ r" + نص

أولاً ، تقوم بإنشاء خريطة لمفاتيح وقيم السلسلة وتعيين رؤوس عنوانك وعنوان المستلم والموضوع ، كما هو موضح أعلاه. باستخدام نطاق للحلقة على ملف رؤوس الخريطة ، أ رسالة تم التصريح عن المتغير لاحتواء الرؤوس والرسالة باستخدام تنسيق السلسلة.

مصادقة البريد الإلكتروني

يحتاج البريد الإلكتروني إلى مصادقة للتحقق من المصدر. توفر حزمة smtp وظائف لمصادقة البريد الإلكتروني باستخدام امتداد عادي. ال عادي تأخذ الطريقة في الهوية والبريد الإلكتروني للمرسل وكلمة المرور والمضيف كمعلمات وترجع ملف المصادقة الكائن الذي ستستخدمه لإرسال البريد الإلكتروني.

المصادقة: = smtp. PlainAuth ("" ، من ، كلمة المرور ، المضيف)

الهوية هي اسم المستخدم الخاص بك ، والذي يمكن تركه فارغًا ، كما هو موضح في هذه الحالة.

إنشاء اتصال للبريد الإلكتروني

يطلب منك بعض موفري خدمة البريد إرسال البريد الإلكتروني عبر اتصال. في هذه المقالة ، سنصنع ملف اتصال TCP إلى الخادم باستخدام تكوينات TLS.

tlsConfig: = & tls. التكوين {
التحقق من عدم الأمان: حقيقي,
اسم الخادم: المضيف ،
}

في الكود أعلاه ، قمت بإجراء تكوين TLS بالرجوع إلى ملف التكوين هيكل أين غير آمن تم ضبطه على حقيقي، وتم تعيين اسم الخادم لـ مضيف عامل.

يجب عليك إنشاء اتصال TCP باستخدام امتداد يتصل طريقة tls حزمة. ال يتصل تأخذ الطريقة في نوع الاتصال (TCP) ، في هذه الحالة ، عنوان الخادم وتكوينات اتصال TLS.


اتصال ، يخطئ: = tls. اطلب ("tcp" ، serverAddress ، tlsConfig) يخطئ! لا شيء {
سجل. الذعر (يخطئ)
}

في الكود أعلاه ، قمت بإجراء اتصال TCP وتعالجت الأخطاء ؛ ستتم إنشاء مثيل حزمة smtp جديدة باستخدام عميل جديد طريقة صافي / بروتوكول نقل البريد الإلكتروني حزمة. ال عميل جديد يأخذ الأسلوب في الاتصال والمضيف ، على التوالي.

smtpClient ، يخطئ: = smtp. NewClient (اتصال ، مضيف)
إذا يخطئ! لا شيء {
سجل. الذعر (يخطئ)
}

الآن بعد أن أنشأت بروتوكول SMTP مثيل العميل ، يجب عليك تعيين معلمات ملف smtpClient ومعالجة الأخطاء.

إذا يخطئ = smtpClient. المصادقة (المصادقة) ؛ يخطئ! لا شيء {
سجل. الذعر (يخطئ)
}
إذا يخطئ = smtpClient. البريد من)؛ يخطئ! لا شيء {
سجل. الذعر (يخطئ)
}
إذا يخطئ = smtpClient. Rcpt (رؤوس ["إلى"]) ؛ يخطئ! لا شيء {
سجل. الذعر (يخطئ)
}

في المثال أعلاه ، قمت بتمرير مصادقة وعنوان المرسل ومعلمات عنوان المستلم إلى الأساليب الخاصة بها والأخطاء التي تم معالجتها.

أخيرًا ، يجب عليك الكتابة إلى مثيل الاتصال ، ويمكنك القيام بذلك عن طريق إنشاء كاتب باستخدام بيانات طريقة عميل SMTP نموذج.

الكاتب ، يخطئ: = smtpClient. بيانات()
إذا يخطئ! لا شيء {
سجل. الذعر (يخطئ)
}
_ ، يخطئ = الكاتب. يكتب([]بايت(رسالة))
إذا يخطئ! لا شيء {
سجل. الذعر (يخطئ)
}

بعد إنشاء كاتب ، تقوم بكتابة شريحة بايت للرسالة باستخدام امتداد يكتب الطريقة كما في المثال أعلاه.

يخطئ = الكاتب. قريب()
إذا يخطئ! لا شيء {
سجل. الذعر (يخطئ)
}
يخطئ = smtpClient. يترك()
إذا يخطئ! لا شيء {
إرجاع
}
إرجاع "تم بنجاح ، تم إرسال البريد!"

أغلق الكاتب وقم بإنهاء مثيل اتصال عميل SMTP باستخدام الكود أعلاه. ال ارسل بريد() تقوم الدالة بإرجاع رسالة نجاح ، كما هو موضح أعلاه.

عند استدعاء ارسل بريد() تعمل في رئيسي وظيفة ، يجب أن تحصل على رسالة النجاح مسجلة في وحدة التحكم الخاصة بك ، وإرسال البريد الإلكتروني إلى المستلم الخاص بك.

هناك المزيد في الحزمة الصافية

تحتوي الحزمة net على العديد من الحزم للوظائف المتعلقة بالشبكة وحزمة smtp هي واحدة منها فقط. يمكنك أيضًا استخدام حزم TCP و HTTP للتطوير المرتبط بالشبكات.

قد تجد حزمة net / smtp مربكة إذا لم تكن مطورًا للواجهة الخلفية. هناك العديد من البدائل الأخرى لإرسال رسائل البريد الإلكتروني بسرعة مع عدد أقل من سطور التعليمات البرمجية. يمكنك التحقق من شركات التسويق عبر البريد الإلكتروني مثل SendGrid و Twilio و MailChimp وخدمات الرسائل الإخبارية مثل Substack و Revue التي تتيح لك إرسال رسائل بريد إلكتروني إلى العديد من المستخدمين دون ضغوط.