Tuesday, April 13, 2010

PostageApp: The Easier Way To Send E-mail From Your Apps


أكبر مشكلة تواجه اي مبرمج هي عملية ارسال الرسائل إلى المستخدمين، فربما تكون هناك مشكلة بالسيرفر تمنع عملية ارسال الرسائل او ان المستضيف يمنع عملية ارسال الرسائل نهائياً وبذلك يكون الامر صعب اذا كان يجب علي التطبيق ارسال رسالة تنشيط العضوية للمستخدم قبل ان يسمح له باستخدام الموقع، وبذلك فعملية اشتراك الاعضاء اصبحت معطلة!
تأتي خدمة PostageApp لحل مثل هذه المشاكل، فهي عبارة عن بوابة لإرسال الرسائل من خلال واجهة  برمجة التطبيقات ( API ) فتقوم باستقبال الرسالة التي تريد ان ترسلها للمستخدم ومن ثم تعمل الخدمة علي ارسال الرسالة من خلال اعدادات الـ SMTP التي قمت بوضعها في موقع الخدمة ( يمكنك استخدام السيرفر الخاص بالخدمة او يمكنك ربط الخدمة بالـ Gmail SMTP او استخدام اي سيرفر آخر لإرسال الرسائل ) .
ايضاً هذه الخدمة مفيدة في حال اردت مراسلة جميع الاعضاء ( الرسائل الجماعية ) فهي لن تسبب لك مشاكل علي سيرفر الاستضافة الخاص بك، لان عملية الارسال سوف تتم من خلال الاتصال ( HTTP ) مرة واحدة فقط ومن ثم سوف تكون مهمة لـ PostageAPP في عملية ارسال الرسائل للأعضاء الذين قمت باختيارهم للإرسال.

المميزات:

  • حل مشاكل ارسال الرسائل من السيرفر.
  • عدم وجود ضغط علي سيرفر موقعك في حالة ارسال رسائل كثيرة / جماعية.
  • امكانية ارسال الرسائل من علي الـ localhost بكل سهولة.
  • نظام احصائيات بعدد الرسائل التي ارسلت والرسائل التي لم يتم ارسالها.
  • انشاء قوالب لتنسيق الرسائل.
  • سيرفر SMTP مجاني لإرسال الرسائل كما يمكنك تغيير اعدادات السيرفر لأي سيرفر آخر كالـ Gmail مثلاً.

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

بدايةً يجب عليك الاشتراك في الموقع ومن ثم نقوم بإنشاء مشروع جديد علي الموقع حتى نحصل علي مفتاح الـ API الخاص بالمشروع.
أذهب إلى لوحة التحكم ثم اضغط علي CREATE NEW PROJECT ثم ادخل اسم المشروع وبعد ذلك اضغط علي Create project؛ بالجانب الايمن سوف تجد API key وأسفلها مفتاح الـ API وهو ما نحتاج إلية الآن.
الخطوة التالية هي بتحميل الكلاس التالي والذي سوف نستخدمه في عملة ارسال الرسائل
<?php
class PostageApp{
    function __construct($API_KEY, $API_URL='http://api.postageapp.com'){
        $this->POSTAGE_API_KEY    = $API_KEY;
        $this->POSTAGE_HOSTNAME    = $API_URL;
    }
    // Sends a message to Postage App
    function mail($recipient, $subject, $mail_body, $header=array(), $variables=NULL) {
        $content = array(
            'recipients'    => $recipient,
            'headers'        => array_merge($header, array('Subject' => $subject)),
            'variables'        => $variables,
            'uid'            => time()
        );
        if (is_string($mail_body)) {
            $content['template'] = $mail_body;
        } else {
            $content['content'] = $mail_body;
        }
        return PostageApp::post(
                'send_message',
                json_encode(
                    array(
                        'api_key' => $this->POSTAGE_API_KEY,
                        'arguments' => $content
                    )
                )
            );
    }
    // Makes a call to the Postage App API
    function post($api_method, $content) {
        $ch = curl_init($this->POSTAGE_HOSTNAME.'/v.1.0/'.$api_method.'.json');
        curl_setopt($ch, CURLOPT_POSTFIELDS,  $content);
        curl_setopt($ch, CURLOPT_HEADER, false);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));  
        curl_setopt($ch, CURLOPT_POST, 1);
        $output = curl_exec($ch);
        curl_close($ch);
        return json_decode($output);
    }
}
?>
الآن نأتي إلى خطوة آخرى وهي استخدام الكلاس السابق مع الـ API الذي حصلنا علية من خلال انشائنا للمشروع الجديد في موقع postageapp.com
<?php
if($_POST['to']) {
    include_once( 'postageapp.class.php' );
    /* $send_to    = array(
            'mail1@gmail.com',
            'mail12@gmail.com',
            'mail13@gmail.com'); */
    $send_to    = array($_POST['to']);
    $subject    = $_POST['subject'];
    $message    = $_POST['message'];

    $mail_body    = array(
            'text/plain' => strip_tags($message),
            'text/html' => $message);
    $header = array(
        'From'        => 'from@gmail.com',
        'Reply-to'    => 'reply-to@gmail.com');


    // قم بتغيير المفتاح الذي بالاسفل إلي المفتاح الخاص بك
    $postageapp = new PostageApp( 'rFdFxiLzPjH9xDoLkRyMdXfvSJXqonGT' );
    $send = $postageapp->mail($send_to, $subject, $mail_body, $header);
    // print status
    if($send->response->status == 'ok'){
        echo '<br/><b>SUCCESS:</b>, An email was sent and the following response was received:';
    }else{
        echo '<br/><b>Error sending your email:</b> '.$send->response->message;
    }
    echo '<hr><pre style="text-align:left;">';
    print_r ($send);
    echo '</pre>';
}
?>
<form method="post" action="./">
    send to: <input type="text" name="to" /><br />
    subject: <input type="text" name="subject" /><br />
    message: <textarea name="message" ></textarea><br />
    <input type="submit" value="Send"/>
</form>

ضبط اعدادات الـ SMTP:

اذا كنت تريد تغيير اعدادات الـ SMTP وهذا امر ارجحة حتى لا نعتمد بشكل مكثف علي سيرفر موقع postageapp.com في ارسال الرسائل وتخفيف الضغط عنة
اذهب إلى رئيسية لوحة التحكم ثم اضغط علي ADD MAIL SERVER ثم ادخل اعدادات سيرفر ارسال الرسائل وبعد ذلك اضغط علي Create and Send Test Message

الآن سيتم نقلنا إلى الصفحة الرئيسية مرة آخري ويتبقى لدينا الآن خطوة اخيرة وهي تبديل الاعدادات الافتراضية لسيرفر الارسال للمشروع الذي قمنا بإنشائه سابقاً من خلال الضغط علي PostageApp SMTP Server الموجودة اسفل اسم المشروع وسوف يتم نقلنا إلى صفحة آخرى ومنها نقوم بتغيير الـ Mail Server من PostageApp SMTP Server إلى اسم السيرفر الذي قمنا بإنشائه بعد ذلك نضغط علي Switch to this Mail Server

ملحوظة:

تسجيل الدخول يتم من خلال الصفحة الخاصة بحسابك الذي تم انشائه فإذا كان اسم الدخول الخاص بك باسم khal3d فيتم تسجيل الدخول من خلال الصفحة http://khal3d.postageapp.com

2 comments:

  1. I don't think it's a good idea to post your API key here. :)

    ReplyDelete
  2. This API Key for only test, and I'm not using this API on my Apps

    ReplyDelete