إرسال البريد الإلكتروني في Swift: دليل شامل لـ SMTP وMailKit

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

إرسال البريد الإلكتروني في Swift (iOS/macOS): دليل شامل

يُعد إرسال رسائل البريد الإلكتروني إحدى الوظائف الأساسية للتطبيقات الحديثة على الأجهزة المحمولة وأجهزة الكمبيوتر المكتبية. على منصات Apple (iOS، macOS، watchOS، tvOS)، يمكن لمطوري Swift استخدام عدة طرق: بدءًا من MailComposeViewController المدمج وصولاً إلى مكتبات الطرف الثالث القوية التي تعمل مباشرة مع خوادم SMTP. في هذه المقالة، سنستعرض الطرق الرئيسية لتنفيذ إرسال البريد الإلكتروني في Swift، بما في ذلك أمثلة عملية للكود، وإعداد SMTP، والعمل مع المرفقات.



لماذا تحتاج إلى إرسال البريد الإلكتروني في التطبيق؟

يمكن أن تكون وظيفة البريد الإلكتروني مفيدة في سيناريوهات مختلفة:

  • التسجيل وتأكيد الحساب
  • إرسال تقارير الأخطاء والملاحظات
  • إرسال الإشعارات والأخبار
  • إرسال الإيصالات والفواتير والمستندات
  • استعادة كلمة المرور


طرق إرسال البريد الإلكتروني في Swift

يوجد طريقتان رئيسيتان:

  • Mail Compose المدمج (MFMailComposeViewController) — يستخدم تطبيق البريد الافتراضي في iOS/macOS. بسيط، لكنه يتطلب أن يكون المستخدم مسجلاً الدخول إلى عميل البريد.
  • الإرسال المباشر عبر SMTP — يرسل الرسائل مباشرة من الخادم، دون تدخل المستخدم. مثالي للإشعارات التلقائية.


الطريقة 1: استخدام MFMailComposeViewController

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

import UIKitimport MessageUI

class ViewController: UIViewController, MFMailComposeViewControllerDelegate { @IBAction func sendEmailTapped(_ sender: UIButton) { guard MFMailComposeViewController.canSendMail() else { print("عميل البريد غير مهيأ") return } let mailComposer = MFMailComposeViewController() mailComposer.mailComposeDelegate = self mailComposer.setToRecipients(["support@example.com"]) mailComposer.setSubject("ملاحظات من التطبيق") mailComposer.setMessageBody("مرحباً! لدي سؤال...", isHTML: false) // إضافة مرفق if let fileData = "نص مثال".data(using: .utf8) { mailComposer.addAttachmentData(fileData, mimeType: "text/plain", fileName: "file.txt") } present(mailComposer, animated: true, completion: nil) } // MARK: - MFMailComposeViewControllerDelegate func mailComposeController(_ controller: MFMailComposeViewController, didFinishWith result: MFMailComposeResult, error: Error?) { controller.dismiss(animated: true, completion: nil) switch result { case .sent: print("تم إرسال الرسالة") case .saved: print("تم حفظ الرسالة") case .cancelled: print("تم إلغاء الإرسال") case .failed: print("خطأ في الإرسال: \\(error?.localizedDescription ?? "")") @unknown default: break } }}


الطريقة 2: الإرسال المباشر عبر SMTP (SwiftSMTP)

لإرسال الرسائل تلقائياً دون تدخل المستخدم، تُستخدم مكتبة SwiftSMTP. تتيح الاتصال بأي خادم SMTP (Gmail، Yandex، Mail.ru، خادم خاص).



التثبيت عبر Swift Package Manager:

// في Package.swift أو عبر Xcode: File → Add Packagesdependencies: [    .package(url: "https://github.com/Kitura/Swift-SMTP.git", from: "2.0.0")]


مثال لإرسال بريد إلكتروني عبر SMTP:

import SwiftSMTP

func sendEmail() { let smtp = SMTP( hostname: "smtp.gmail.com", // خادم SMTP

توصيات