ارسال ایمیل انبوه با سرویس Mailgun در PHP

مرداد ۳, ۱۳۹۳ توسط : سعید

سلام

یکی از دغدغه های برنامه نویسان وطراحان وب و کلا کسانی که سایت و یا کسب و کار اینترنتی دارن ارسال ایمیل انبوه ، حالا یا برای تبلیغات یا برای ارتباط با اعضای سایت شون هست.خب همینطور که میدونید شرکتایی هستن که با داشتن بانک ایمیل یه مبلغی از شما میگیرن و تعدادی ایمیل برای شما ارسال میکنن.مشکلی که وجود داره اینه که اگه شما بخواین با سرویسهای gmail یا yahoo ایمیل رو ارسال کنید اولا محدودیت ارسال دارید دوما ممکنه خیلی از ایمیلهاتون اسپم بشه. حالا چه بهتر که خودمون بتونیم این ارسال رو انجام بدیم و تا حدود زیادی در هزینه صرفه جویی کنیم.

سرویسی که تازه باهاش آشنا شدم سرویس Mailgun.com که یه سرویس ارسال ایمیل مخصوص برنامه نویساست.بعد از ثبت نام در این سایت به شما اجازه ارسال ایمیل با استفاده از api های خودش رو میده.اگر سرویس تون رایگان باشه درماه میتونید ده هزار تا ایمیل بفرستید.بقیه قیمتاش هم توی سایتش هست.

توی این پست به صورت خیلی خلاصه میخوام ارسال ایمیل رو با این سرویس و کتابخانه ای که خودش نوشته آموزش بدم.

خب اول باید توی این سایت ثبت نام کنید.بعد از ثبت نام ایمیلتون رو تایید کنید.وقتی وارد سایت میشید توی کنترل پنل سایت یه چیزی شبیه عکس زیر میبینید.

اون قسمتایی که با قرمز مشخص شده رو بهش نیاز داریم.

مرحله بعدی دانلود کردن کتابخانه زیره :

دانلود کتابخانه Mailgun

فایلی که دانلود کردید بعد از اینکه از حالت فشرده خارجش کردید یه پوشه داره به نام vendor

به فایل index.php کناراین پوشه قرار بدین.و کدهای زیر رو داخلش بذارید :

require 'vendor/autoload.php';
 use Mailgun\Mailgun;
$mg = new Mailgun("key-example");
 $domain = "example.com";
# Now, compose and send your message.
 $mg->sendMessage($domain, array('from' => 'bob@example.com',
 'to' => 'sally@example.com',
 'subject' => 'The PHP SDK is awesome!',
 'text' => 'It is so simple to send a message.'));

 

دقت کنید که به جای key-example اون api کدی که توی تصویر مشخص کردم رو کپی کنید. و در قسمت $domain هم مقدارش رو برابر با مقداد domain که بازم توی عکس (سمت راست تصویر) با قرمز مشخص کردم قرار بدید.
حالا با اجرای برنامه بالا یه ایمیل به ایمیلی که قسمت to نوشتین ارسال میشه.
خب تا اینجای کار که کار خاصی انجام ندادیم و مثال خودش بود.
اگر بخوایم یه ایمیل به صورت HTML ارسال کنیم باید به صورت زیر عمل کنیم :

$mg->sendMessage($domain, array('from'    => 'domain@example.com', 
                                    'to'      => 'phpro.ir@gmail.com', 
                                    'subject' => 'Hi', 
                                    'html'    => '
                                        <h1>Hello Dear</h1><img src="domain.com/1.jpg" />
                                    ',
                                    ));

حالا اگر بخوایم به تعداد زیادی ایمیل بدیم دو راه داره.
اول اینکه کدی رو که بالا نوشتیم رو در یک حلقه foreach بذاریم.که زیاد فکر خوبی نیست.
مثال :

$emails = file('emails1.txt');
foreach($emails as $email){
    
    $mg->sendMessage($domain, array('from'    => 'exapmle@domain.com', 
                                    'to'      => trim($email), 
                                    'subject' => 'Hi', 
                                    'html'    => '
                                        <h1>Hello Dear</h1><img src="domain.com/1.jpg" />
                                    ',
                                )
                    );    
}

راه دوم اینه که ایمیل هارو به در قسمت bcc ایمیل بنویسیم و ارسال کنیم.مثل زیر

	$emails = file('emails1.txt');
	$emails = array_map('trim',$emails);
	$mg->sendMessage($domain, array('from'    => 'exapmle@domain.com', 
									'to'      => 'exapmle@domain.com', 
									'subject' => 'Hi', 
									'bcc'	  => implode(',',$emails) ,
									'html'    => '
										<h1>Hello Dear</h1><img src="domain.com/1.jpg" />
									',
));

دقت کنید که توی این روش حتما قسمت to باید یه ایمیل بنویسید وگرنه بهتون پیغام خطا میده.

اگر شما هم سرویس ایمیل خوبی میشناسین به بقیه معرفی کنید.
موفق باشید

بازدید : ۶۷۵۸

reza
مرداد ۴, ۱۳۹۳ @ ۹:۳۰ ق.ظ

سلام
ممنون از معرفی
آیا این امکان هست که هیچ لینکی و ردی از mailgun در ایمیل نباشه و لینک ها رو خودمون مدیریت کنیم ؟ یعنی لین unsubscribe و … هیچ تغییری نکنند و tracking هم با خودمون باشه و این سرور فقط ارسال کننده باشه ؟
ممنون

پاسخ دادن
    Saeed Moqadam
    مرداد ۴, ۱۳۹۳ @ ۹:۴۵ ق.ظ

    سلام
    بله میشه به شرطی که سرویس پولی رو خریداری کنید.برای ترکینگ هم یه سری REST api داره که میتونید ازش استفاده کنید.این مثالی که زدم یه نمونه ی ساده بود.اگر حرفه ای میخواید بفرستید باید از api های خودش استفاده کنید.
    موفق باشید

    پاسخ دادن
      مرداد ۴, ۱۳۹۳ @ ۱۱:۲۸ ق.ظ

      اقای مقدم این پوشه vendor نداره چطوریاست
      سوالی هم داشتم
      ایا دامین که ثبت میکنی باید منتظر بمونی تایید شه یا کار خاصی داره

      پاسخ دادن
        Saeed Moqadam
        مرداد ۴, ۱۳۹۳ @ ۱۲:۱۶ ب.ظ

        سلام
        لینک دانلود رو عوض کردم.ممنون
        موفق باشید.

        پاسخ دادن
مرداد ۱۱, ۱۳۹۳ @ ۱:۰۴ ق.ظ

سلام
ببخشید یکم طرح سایت شبیه به این نیست؟
http://creative-punch.net/
اون سایت در فوترش نوشته:
All Rights Reserved
درست نیست از ایده و طرح یکی دیگه استفاده کرد.

پاسخ دادن
    Saeed Moqadam
    مرداد ۱۲, ۱۳۹۳ @ ۵:۳۲ ب.ظ

    سلام
    جالبه که این همه آموزش رایگان ( بدون هیچ چشم داشتی و درآمدی ) توی سایت phpro.ir قرار گرفته ، اونوقت شما به جای تشکر کردن نکته منفیش رو دیدید.بله سایت ما همین سایتی هست که شما دادین.
    اگر خیلی نگران استفاده از ایده های بقیه هستین خوشحال میشیم اگه برامون یه قالب اختصاصی بزنید.
    موفق باشید

    پاسخ دادن
      مرداد ۲۳, ۱۳۹۳ @ ۲:۳۸ ب.ظ

      سلام
      از نظر کیفیت مطالب شکی نیست.فکر کنم بد انتقاد کردم.ببخشید.
      با تشکر

      پاسخ دادن
meysam
دی ۱۵, ۱۳۹۳ @ ۹:۲۴ ق.ظ

سلام
خیلی عالی بود
تشکر

پاسخ دادن
امید
بهمن ۱۷, ۱۳۹۳ @ ۸:۳۸ ق.ظ

سلام
اقا من نتونستم فایل index.php رو ازش پیدا کنم شاید لینک دانلود اپدیت شده میشه راهنمایی کنید

پاسخ دادن
امید
بهمن ۱۷, ۱۳۹۳ @ ۸:۴۳ ق.ظ

اقا یه سوال یگه ایا لازمه توی پنل دامین خودمون رو ثبت کنیم و verify بشه؟

پاسخ دادن
آذر ۳, ۱۳۹۴ @ ۱۱:۰۶ ب.ظ

سلام
خیلی مطلب خوبی بود …
یکی از سرویس های خیلی خوب برای ارسال ایمیل سرویس آمازونه https://aws.amazon.com/ses
ولی من یه بار سعی کردم نمی شد از ایران اکانت ساخت یعنی شماره کردیت کارت و … می خواست برای ثبت نامش … حتی رایگانش
ولی من قیمت ارسال هاش رو با خیلی ها مقایسه کردم … ظاهرا بهترینه
mailchimp, mailgun , sendgrid و چند تا سرویس معروف دیگه همه شون گرون تر از آمازون بودند …
وقت کردین یه نگاه بندازین

پاسخ دادن
جواد محمدی
اردیبهشت ۱۴, ۱۳۹۵ @ ۱۲:۰۷ ق.ظ

سلام واقعا حرف ندارید ممنونم از سایت خوبتون

پاسخ دادن
خرداد ۵, ۱۳۹۵ @ ۱۲:۰۴ ب.ظ

سلام. از این سرویس میشه رو wamp هم استفاده کرد؟

پاسخ دادن

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *


*