کلاس آماده : خواندن ایمیل ها با php

خرداد ۲۶, ۱۳۹۲ توسط : سعید

سلام

با استفاده از کلاس زیر میتونید ایمیل هایی که توی inbox دارین رو بخونین.این کلاس ممکنه جاهایی کاربرد داشته باشه مثلا اینکه یک ایمیل بسازید و بخواید به صورت خودکار ایمیلهایی که بهش میاد رو پردازش کنید و در جوابش چیزی رو ارسال کنید.

<?php

class Email_reader {

    // imap server connection
    public $conn;

    // inbox storage and inbox message count
    private $inbox;
    private $msg_cnt;

    // email login credentials
    private $server = 'yourserver.com';
    private $user   = 'email@yourserver.com';
    private $pass   = 'yourpassword';
    private $port   = 143; // adjust according to server settings

    // connect to the server and get the inbox emails
    function __construct() {
        $this->connect();
        $this->inbox();
    }

    // close the server connection
    function close() {
        $this->inbox = array();
        $this->msg_cnt = 0;
        imap_close($this->conn);
    }

    // open the server connection
    // the imap_open function parameters will need to be changed for the particular server
    // these are laid out to connect to a Dreamhost IMAP server
    function connect() {
        $this->conn = imap_open('{'.$this->server.'/notls}', $this->user, $this->pass);
    }

    // move the message to a new folder
    function move($msg_index, $folder='INBOX.Processed') {
		// move on server
        imap_mail_move($this->conn, $msg_index, $folder);
        imap_expunge($this->conn);

        // re-read the inbox
        $this->inbox();
    }

    // get a specific message (1 = first email, 2 = second email, etc.)
    function get($msg_index=NULL) {
        if (count($this->inbox) <= 0) {
            return array();
        }

        elseif ( ! is_null($msg_index) && isset($this->inbox[$msg_index])) {
            return $this->inbox[$msg_index];
        }

        return $this->inbox[0];
    }

 
    // read the inbox
    function inbox() {
        $this->msg_cnt = imap_num_msg($this->conn);
        $in = array();
        for($i = 1; $i <= $this->msg_cnt; $i++) {
            $in[] = array(
                'index'     => $i,
                'header'    => imap_headerinfo($this->conn, $i),
                'body'      => imap_body($this->conn, $i),
                'structure' => imap_fetchstructure($this->conn, $i)
            );
        }

        $this->inbox = $in;
    }
}

?>

دقت کنید که متغیر های $server , $user , $pass رو تغییر بدین.متغیر $port رو هم باید مطابق با تنظیمات سرور تون باید تغییر بدین.

منبع : http://garrettstjohn.com/entry/reading-emails-with-php/
موفق باشید

بازدید : ۴۴۱۱

امیر
تیر ۶, ۱۳۹۲ @ ۱۲:۱۲ ق.ظ

سلام
اگه بخوایم یک mail server درست کنیم
باید چه کارهایی انجام بدیم
مثلا همین خواندن ایمیل از inbox
ایمیل که قرار هست خوانده شود دقیقا کجا ذخیره شده؟
دارم کار مطالعاتی رو انجام میدم
اگه شما هم هستین واسه درست کردن mail serverبا هم کار کنیم.
واسه نصب Imap لطفا توضیح بدین.
تشکر

پاسخ دادن
بهروز
تیر ۶, ۱۳۹۲ @ ۱۱:۵۹ ق.ظ

سلام ، خسته نباشید.
این خطا رو میده :
Couldn’t open stream {http://domain.ir/notls}

پاسخ دادن

پاسخ دهید

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


*