PDA

View Full Version : سوال: دریافت ایمیل با php



roomusic
جمعه 30 خرداد 1393, 03:07 صبح
با سلام و خسته نباشید خدمت اساتید محترم
من دارم رو یه پروژه کار مبکنم که یه قسمتش باید ایمیل های دریافتیو آنالیز کنه و من باید ایمیل هارو از اینباکس با پی اچ پی بخونم
تو نت گشتم یه چبزی پیدا کردم که فکر کنم به کارم بیاد ولی نمیدونم چه جوری!!!
میخواستم شما اساتیدد محترم بهم کمک کنید که این کار رو انجام بدم :قلب::قلب::قلب:
ایتم لینک اون سایتی که پیدا کردم :
http://garrettstjohn.com/entry/reading-emails-with-php
http://harrybailey.com/2009/02/send-or-pipe-an-email-to-a-php-script

واقعا ممنونتون مشم کمکم کنید

cpuram
جمعه 30 خرداد 1393, 10:06 صبح
باید آی پی رو عوض کنی این لینک باز بشه.
https://code.google.com/p/php-imap

roomusic
جمعه 30 خرداد 1393, 16:22 عصر
باید آی پی رو عوض کنی این لینک باز بشه.
https://code.google.com/p/php-imap

سلام دوست عزیز
خیلی ممنون
من یکم تو فروم رو گشتم
این رو پیدا کردم
http://barnamenevis.org/showthread.php?159190-%D8%AF%D8%B1%DB%8C%D8%A7%D9%81%D8%AA-%D8%A7%DB%8C%D9%85%DB%8C%D9%84-%D8%A8%D8%A7-php&p=720797&viewfull=1#post720797

ولی مشکل من اینه که از کجا هاستی چیدا کنم که اجازه ی دسترسی imap رو بهم بده
اگه میشه با SMTP کار کرد بهم یه مرجعی بدید لطفا

cpuram
جمعه 30 خرداد 1393, 17:15 عصر
vps ندارین؟

roomusic
جمعه 30 خرداد 1393, 21:56 عصر
vps ندارین؟
نه دوست عزیز
الآن تو نت داشتم دنبال ههمچین چیزی میگشتم ، تو یکی از سایتای خارجی گفته بود که فیسبوک برای هر کاربرش به طور واقعی یک email نمیسازه
مثلا ایمیلی که فیس بوک به یک کار بر داده مانند user@facebook.com وقتی ایمیلی به این ایمیل آدرس ارسال میشه یه صفحه ای هست که عبارت user رو چک میکنه و به همون user پیام میفرسته
میشه واقعا همچین کاری انجام داد ؟

cpuram
شنبه 31 خرداد 1393, 00:31 صبح
من چن تا هاستیگ رو بررسی کردم توضیحاتشون میگفت imap بازه .بگردید هست.
به هر حال وقتی به آدرس مورد نظر ایمیل ارسال میشه طبق پرتکلهای ایمیل هست و حتما نباید طرف بیاد توی هاست یک یوزر بسازه تا ما بگیم اون ایمیل واقعیه.
مطمئنا اطلاعات من کافی نیست دوستان بیشتر راهنمایی کنید.

roomusic
شنبه 31 خرداد 1393, 03:18 صبح
من چن تا هاستیگ رو بررسی کردم توضیحاتشون میگفت imap بازه .بگردید هست.
به هر حال وقتی به آدرس مورد نظر ایمیل ارسال میشه طبق پرتکلهای ایمیل هست و حتما نباید طرف بیاد توی هاست یک یوزر بسازه تا ما بگیم اون ایمیل واقعیه.
مطمئنا اطلاعات من کافی نیست دوستان بیشتر راهنمایی کنید.
واقعا ازتون ممنونم
من زیاد در این باره اطلاع ندارم
اگه میشه بیشتز راهنماییم کنید درباره ی :


الآن تو نت داشتم دنبال ههمچین چیزی میگشتم ، تو یکی از سایتای خارجی گفته بود که فیسبوک برای هر کاربرش به طور واقعی یک email نمیسازه
مثلا ایمیلی که فیس بوک به یک کار بر داده مانند user@facebook.com
وقتی ایمیلی به این ایمیل آدرس ارسال میشه یه صفحه ای هست که عبارت user رو چک میکنه و به همون user پیام میفرسته
میشه واقعا همچین کاری انجام داد ؟

کسی بجز شما تو این تالار جواب نمیده داداش
واقعا هم محتاجم
ممنون میشم بیشتر راهنماییم کنید

cpuram
شنبه 31 خرداد 1393, 09:50 صبح
اینم یه کلاس ساده با آی مپ

<?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;
}

}

?>

Unique
شنبه 31 خرداد 1393, 12:10 عصر
با اجازه cpuram عزیز :

سرویس ایمیل بر اساس پرتوکل های SMTP,POP3,IMAP هست که SMTP برای ارسال ایمیل و POP3,IMAP برای دریافت ایمیل استفاده میشه. اکثر هاست ها هر سه پرتوکل را پشتیبانی میکنند و در بدترین حالت IMAP پشتیبانی نمیشه. شما کافیه با مسئول سایت تماس بگیرین و آدرس های مرتبط را بپرسین ! منظور ip یا domain و port و اینکه اگه encrypt میکنند روی چه port ی هست.

بعدش نیاز به کلاس خاصی نیست و معمولا php_imap روی هاست ها نصبه. اگه هم نبور کلاس براش زیاده. این هم doc (http://php.net/manual/en/book.imap.php) مربوطه.
PHP PEAR هم از imap پشتیباین میکنه و احتمال نصب بودن اون هم زیاد هستش. اگه دنبال کد میگری هم توی گوگل جستجو کن : php gmail using imap

roomusic
شنبه 31 خرداد 1393, 13:53 عصر
اینم یه کلاس ساده با آی مپ

<?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;
}

}

?>

سلام دوست عزیز
واقعا ممنون
فقط یه چیزی اگه اینو فقط User , Server , Pass , Port ش رو با سرور ok کنم inbox رو بهم کامل نشون میده ؟؟؟

roomusic
شنبه 31 خرداد 1393, 13:55 عصر
با اجازه cpuram عزیز :

سرویس ایمیل بر اساس پرتوکل های SMTP,POP3,IMAP هست که SMTP برای ارسال ایمیل و POP3,IMAP برای دریافت ایمیل استفاده میشه. اکثر هاست ها هر سه پرتوکل را پشتیبانی میکنند و در بدترین حالت IMAP پشتیبانی نمیشه. شما کافیه با مسئول سایت تماس بگیرین و آدرس های مرتبط را بپرسین ! منظور ip یا domain و port و اینکه اگه encrypt میکنند روی چه port ی هست.

بعدش نیاز به کلاس خاصی نیست و معمولا php_imap روی هاست ها نصبه. اگه هم نبور کلاس براش زیاده. این هم doc (http://php.net/manual/en/book.imap.php) مربوطه.
PHP PEAR هم از imap پشتیباین میکنه و احتمال نصب بودن اون هم زیاد هستش. اگه دنبال کد میگری هم توی گوگل جستجو کن : php gmail using imap

سلام دوست عزیز
خیلی ممنون
حالا قضیه ی این سیستم Facebook چیه ؟
که آدرس ایمیلایی که میسازه حقیقی نیستن و مجازیَن ؟؟

Unique
شنبه 31 خرداد 1393, 19:01 عصر
حالا قضیه ی این سیستم Facebook چیه ؟
که آدرس ایمیلایی که میسازه حقیقی نیستن و مجازیَن ؟؟

اتفاقا توی همین انجمن بحث شده و خودم هم جواب دادم ! جستجو کنین پیدا میکنید. توی این روش از pipe کرد ناستفاده میکنند و قبل از اینکه mail server ایمیل را پردازش کنه میفرسته به صفحه php شما و شما هر بلایی بخوای سر ایمیل میاری ! اینجوری به صورت مجازی میشه باهاش کار کرد.

roomusic
شنبه 31 خرداد 1393, 21:41 عصر
اتفاقا توی همین انجمن بحث شده و خودم هم جواب دادم ! جستجو کنین پیدا میکنید. توی این روش از pipe کرد ناستفاده میکنند و قبل از اینکه mail server ایمیل را پردازش کنه میفرسته به صفحه php شما و شما هر بلایی بخوای سر ایمیل میاری ! اینجوری به صورت مجازی میشه باهاش کار کرد.

واقعا ممنون دوست عزیز
اگه میشه لینکی چیزی از صفحه بزارید:خجالت:
pipe تو همه ی هاست ها کار میکنه ؟؟

Unique
یک شنبه 01 تیر 1393, 17:42 عصر
pipe تو همه ی هاست ها کار میکنه ؟؟

تا اونجا که من میدونم خیر کار نمیکنه ، شما باید به تنظیمات Mail Server دسترسی داشته باشین. پستی که میگفتم این پسته (http://barnamenevis.org/showthread.php?354287-%D8%A7%D8%AC%D8%B1%D8%A7%DB%8C-%DA%A9%D8%AF-PHP-%D8%A8%D8%B9%D8%AF-%D8%A7%D8%B2-%D8%AF%D8%B1%DB%8C%D8%A7%D9%81%D8%AA-%D8%A7%DB%8C%D9%85%DB%8C%D9%84) ! (توجه تا آخرش بخونین چون جواب را توی پست های آخری دادم)

roomusic
یک شنبه 01 تیر 1393, 18:48 عصر
تا اونجا که من میدونم خیر کار نمیکنه ، شما باید به تنظیمات Mail Server دسترسی داشته باشین. پستی که میگفتم این پسته (http://barnamenevis.org/showthread.php?354287-%D8%A7%D8%AC%D8%B1%D8%A7%DB%8C-%DA%A9%D8%AF-PHP-%D8%A8%D8%B9%D8%AF-%D8%A7%D8%B2-%D8%AF%D8%B1%DB%8C%D8%A7%D9%81%D8%AA-%D8%A7%DB%8C%D9%85%DB%8C%D9%84) ! (توجه تا آخرش بخونین چون جواب را توی پست های آخری دادم)

واقعا ممنون دوست عزیز
من این کد رو هنوز تو هاست چک نکردم ، فعلا دارم هاستی میگیرم که با pipe هماهنگ باشه!
فک کنم قضیه ی این کد اینه که هر کس به سرور من با هر یوزری (User@Server.com) ایمیل ارسال کرد یه ایمیل به من ارسال میکنه و میگه که ایمیل ارسال شده !

mail('you@yoursite.com','From my email pipe!','"' . $email . '"');
ولی من میخوام هر چیزی که ارسال میشه( یعنی pipe میشه ) همه چی رو آنالیز کنه ، From , Subject , Message و همون user
این کار ها رو چه جوری باید چک کنم ؟

Unique
دوشنبه 02 تیر 1393, 00:41 صبح
نمیدونم اون پست را خوندین یا نه !
اول از همه میزبانی های shared به درد شما نمیخوره و باید حداقل vps بگیرید !
حالا که vps میخواین یا باید managed بگیرین یا خودتون بتونین یک linux server را از اول config کنید.
نیاز دارین که یک mail server یا mta داشته باشین که توی مثال مربوطه postfix را گفته و اصل کار اونجاست که توی فایل config به Postfix میگیم که اطلاعات ایمیل را از طریق stdin به php بفرسته (در واقع php از روی stdin اطلاعات را میگیره) اطلاعات هم هر چیزی از email که بخواین توی config فایلی که اشاره شد قابل تنظیم هست و میشه آنالیز کردش !

پس اگه با این مفاهیم اشنا نیستین ! یا با یک server admin وارد مذاکره بشین که همه چیز را برای شما ست کنه (خودم دقیقا این را تست نکردم اما ۱۰۰ درصد شدنیه و وقتش را ندارم وگرنه دریغ نمیکردم و شاید یک روزی کل روال را توی وبلاگ (http://geekfarsi.com) خودم بگذارم) و شما فقط بخش php را که خیلی خیلی راحته انجام بدین ! اگه هم مثل من دیوانه ور رفتن به این چیز ها هستین ۲ یا ۳ روز وقت کافیه که همش را یاد بگیرین ! (البته از دید من ،‌شما را خدایی نمیدونم)

Unique
دوشنبه 02 تیر 1393, 00:43 صبح
نمیدونم اون پست را خوندین یا نه !
اول از همه میزبانی های shared به درد شما نمیخوره و باید حداقل vps بگیرید !
حالا که vps میخواین یا باید managed بگیرین یا خودتون بتونین یک linux server را از اول config کنید.
نیاز دارین که یک mail server یا mta داشته باشین که توی مثال مربوطه postfix را گفته و اصل کار اونجاست که توی فایل config به Postfix میگیم که اطلاعات ایمیل را از طریق stdin به php بفرسته (در واقع php از روی stdin اطلاعات را میگیره) اطلاعات هم هر چیزی از email که بخواین توی config فایلی که اشاره شد قابل تنظیم هست و میشه آنالیز کردش !

پس اگه با این مفاهیم اشنا نیستین ! یا با یک server admin وارد مذاکره بشین که همه چیز را برای شما ست کنه (خودم دقیقا این را تست نکردم اما ۱۰۰ درصد شدنیه و وقتش را ندارم وگرنه دریغ نمیکردم و شاید یک روزی کل روال را توی وبلاگ (http://geekfarsi.com) خودم بگذارم) و شما فقط بخش php را که خیلی خیلی راحته انجام بدین ! اگه هم مثل من دیوانه ور رفتن به این چیز ها هستین ۲ یا ۳ روز وقت کافیه که همش را یاد بگیرین ! (البته از دید من ،‌شما را خدایی نمیدونم)