PDA

View Full Version : ارسال ایمیل (Email) توسط php - جدیدترین اسكریپت های مورد استفاده



majid_darab
جمعه 15 بهمن 1389, 00:58 صبح
با سلام و عرض خسته نباشید خدمت شما دوستان گرامی :
مدتی ست كه دارم با برخی از اسكریپت های php ور میرم و خلاصه كه بد نمی گذرده.
تا حالا php كار نكرده بودم ، ولی میشه فهمید چه خبره
خوب بزارین از اینجا بگم كه برای شروع wamp را از سایت مربوطه گرفتم و دانلود كردمو برای اجرای پروژه ها مشكلی ندارم.
موضوع سر ارسال ایمیل است كه هر چی بیشتر می گردم بیشتر گیج می شم.
اجازه بدید سوالاتمو به صورت شماره ای بپرسم تا نه تنها بنده و بلكه بقیه دوستان هم بتونن از این تاپیك نهایت استفاده رو ببرن
قبل از پرسیدن سوالات باید بگم كه یه گشتی هم تو سایت خود php.net زدم و خلاصه هنوز نفهمیدم فانكشن mail با سرور apache جدید من كه تازه دانلودش كردم كار می كنه یا باید برای ارسال ایمیل از package های خارجی دیگر بهره ببریم .
نكات (سیستم من) :
Apache Version :2.2.17 PHP Version :5.3.5 windows xp
واما سوالات :
1- اصلا فرق سه پروتكل smtp و imap و pop3 در چیست؟
یه چرخی تو گوگل زدم و فهمیدم كه smtp برای دریافت ایمیل استفاده می شه و imap و pop برای ارسال.
(تصحیح -> كاملا بر عكسه)
حالا فرق imap و pop در اینه كه در imap به روشی گفته می شه كه ایمیل ها پس از خوانده شدن از سرور روی سیستم كلاینت كپی نمی شن و در حالت pop ایمیل ها كپی می شن و كاربر می تونه لوكال ایمیل ها رو بررسی كنه (بررسی شد و درسته)
خوب این یه توضیح خیلی مختصر بود كه امیدوارم توسط دوستان محترم تكمیل و تصحیح گردد.
2- برای ارسال ایمیل توسط yahoo و gmail چه موادی لازم داریم +‌ توضیح در مورد آنها:
port
host
encryption
encoding
header ها
و كلا هر چی كه لازم هست.................
3-برای ارسال ایمیل غیر از script مورد نظر چه تنظیماتی باید صورت گیرد(در كجا و چگونه):
الف ) برای حالتی كه لوكال كار می كنیم ...
ب ) برای حالتی كه می خوایم از هاست استفاده كنیم ... (روی سرور چه مواردی برای استفاده كاربران باید تنظیم بشه)
مثلا می دونم برای ارسال ایمیل باید فایل php.ini ویرایش شود و كامنت openssl برداشته شده و فعال گردد.

4- تقضامندم روشی ارایه گردد كه ما را به كل از تنظیمات هاست مورد نظر مبرا كند و در عین حال تمام ریزه كاری های ایمیل در آن درج شده باشد.اعم از ssl - header - port - user name - password و فرستنده و گیرنده و encoding و كلا هر چه كه لازمه
در تاپیك های دیگر اسكریپت هایی دیدم كه هیچ كدوم كار نمی كردن و اصلا معلوم نبود یوزرنیم و پس فرستنده كجا ست می شه - خوب در حالت لوكال می گیم تو فایل php.ini ، اما برای حالتی كه داریم از هاست استفاده می كنیم چطور؟

6- فرق ssl و tls و كلا این جور سیستم ها در چیه و آیا با پورت مورد نظر در ارتباطه یا خیر؟

7- اگر در مورد Smtp‌ در ست گفته باشم این پروتكل برای دریافت ایمیل استفاه می شد.(معلوم گردید كه smtp برای ارسال استفاده می شه نه دریافت)
حالا من موندم چرا هر چی اسكریپت می بینیم داره از سرور های smtp برای ارسال استفاده می كنه؟
(جواب این سوال در یكی دو پست بعدی مشخص شد و اینكه smtp ذاتا كارش ارساله )

8- فرقexternal Smtp authenticatin و Smtp authenticatin در چیه؟

با تشكر از توجه شما دوستان گرامی

navidos
جمعه 15 بهمن 1389, 05:26 صبح
با سلام
دوست گرامی در مورد SMTP باید بگم که فقط یرای ارسال ایمیل هست نه دریافت .
شاید این لینک تفاوتها رو بهتر نشون بده :

http://www.emailaddressmanager.com/tips/protocol.html


در مورد SSL و TLS باید بگم که تفاوت چندانی ندارند . فقط انکربپشن در TLS قویتره و با پورتهای بیشتری میتونه کار کنه !

majid_darab
جمعه 15 بهمن 1389, 07:23 صبح
با سلام :
ورود شما را به فروم تبریك می گویم...
والا من نتونستم لینك مربوطه را باز كنم - شاید ایراد از سیستم من یا isp باشه - (خوب با یكی از روش های دور زننده قابل مشاهده شد) اما آنچه كه من در مورد سه پروتكل مزبور گفتم بر اساس تنظیمات outlook بود كه تازگی ها برای yahoo و gmail انجام دادم و
فكر نمی كردم بشه ایمیل های yahoo رو با outlook بررسی كرد - اما انجام شد.
به هر تقدیر این بحث جداگانه ای ست.
باید بگم كه سوالم رو در مورد Smtp‌ پس می گیرم و حرف شما دوست عزیز كاملا درست است. پس از دیدن لینك شما یه سری هم به outlook زدم و دیدم تمام outgoing ها از پروتكل smtp‌ استفاده می كنند.
از اینكه توجه نمودید تشكر می كنم

majid_darab
شنبه 16 بهمن 1389, 01:02 صبح
با سلام مجدد :
باید بگم كه امروز به شدت رو این قضیه كار كردم و بالاخره اونی كه دنبالش بودم رو تهیه كردم كه به زیبایی هر چه تمام تر تمام Future‌ های درخواستی از یك ایمیل در آن پیاده سازی شده و كار می كند.
برای ارسال ایمیل با php روش های متعددی وجود دارد كه عبارتند از :
phpmailer - PEAR Mail Package - swiftmailer - Zend Mail

اولش به دلیل تر و تمیز بودن كدهای phpmailer‌ رفتم سراغ اون - اما بعد گندش در اومد - یه سایت مضخرفی داره كه به زحمت میشه از توش Sample هاشو گیر آورد و وقتی هم گیر میاری میبینه مال عصر حجره - خلاصه كه خیلی اذیتم كرد - این package به صورت Library بود (بود....) كه می شد ازش استفاده كرد.
مثلا تو sample هاش فایلی رو صدا میزنه كه تو package دانلودی عمراً پیداش كنید.

در مورد zend‌ باید بگم كه یك application است نه library و باید رو هاست مورد نظر ما نصب باشه - ولی می تونید local نصب و تستش كنید - چون زیاد ازش تعریف شنیدم و اگر روی هاست شما نصب باشه به خوبی میشه از كاراییهاش بهره برد.

در مورد PEAR Mail Package تحقیق نكردم - اما زیاد به دلم نچسبید.

و در نهایت :‌ swiftmailer
برای استفاده می رید اینجا :
1-http://swiftmailer.org/
2- بعد دانلود unzip ش می كنید - از میان محتویات unzip‌ شده فقط با پوشه ی lib‌كار داریم كه همین پوشه رو دركنار فایل php‌ ارسال ایمیل رو هاست up می كنید و بقیه قضایا داخل فایل ارسال ایمیل كه اتچ كردم.
نكته : openssl در فایل php.ini باید active‌ باشه و از حالت comment در اومده باشه - یعنی ; اونو باید حذف كرد.

باید بگم كه تقریبا كل documet های سایتو بررسی كردم كه نزدیك چند ساعتی كار برد و ماحصل رو در فایل اتچ شده خدمت دوستان قرار می دم.
سعی كردم موارد لازم را خیلی تمیز دسته بندی كنم كه جای هیچ شك و شبهه ای نماند.
تمام آنچه كه از ارسال ایمیل لازم دارید در این فایل موجوده و با بررسی اون به نظرم نیازی نباشه حتی به سایتش سر بزنید.
فقط كافیه بعضی جاها رو در صورت نیاز از comment در آورید.


در مورد ارسال ایمیل از طریق gmail همه چی در فایل توضیح داده شده است و به خوبی كار می كند
در مورد ارسال ایمیل از طریق yahoo -- اول فایلو ببینید ، بعد بیاید راجع به اون بحث كنیم.
مثل اینكه در مورد yahoo ارسال ایمیل نشدنی ست!
درمورد ایمیل های متفرقه هم باید به خوبی كار كند (با توجه به وب هاستینگ شما و تنظیماتی كه در فایل مزبور انجام می دهید - از جمله host و port)

با تشكر از توجه شما
مجید داراب


و اما فایل ضمیمه ای :‌ -----------> 65957

keykan
شنبه 01 بهمن 1390, 19:36 عصر
با سلام خدمت شما دوست گرامی، اقای مجید داراب.
یک دنیا از شما ممنونم. از تحقیقات، توضیحات و راهنمایی شما... .
مشکل بنده هم بعد از حدود 5 ساعت گردش در اینترنت، با راهنمایی شما حل شد.
شاد باشید.

رضا قربانی
شنبه 01 بهمن 1390, 21:00 عصر
با چند تیکه کد هم می شه ایمیل ارسال کرد . برید دنبال ارسال ایمیل انبوه بدون حضور کاربر و اسپم شدن

armsoftpc
شنبه 01 بهمن 1390, 23:17 عصر
به نام خدا
با سلام
آیا میشه از این کدی که قرار دادید از لوکال با اکانت جیمیل ، ایمیل فرستاد؟
در سرور مشکلی ندارم! مشکل من با ارسال ایمیل در لوکال است، ارور های متعددی می دهد، اگر امکان دارد یک کدی بگذارید که بتوان با آن از لوکال ایمیل فرستاد.
ارور ها:


( ! ) Fatal error: Uncaught exception 'Swift_IoException' with message 'Connection to smtp.gmail.com:465 Timed Out' in D:\Dragon\Program Files\Server\wamp\www\armpc\smail\lib\classes\Swif t\Transport\StreamBuffer.php on line 174 ( ! ) Swift_IoException: Connection to smtp.gmail.com:465 Timed Out in D:\Dragon\Program Files\Server\wamp\www\armpc\smail\lib\classes\Swif t\Transport\StreamBuffer.php on line 174

MostafaEs3
یک شنبه 02 بهمن 1390, 15:00 عصر
//////////

armsoftpc
یک شنبه 02 بهمن 1390, 21:45 عصر
به نام خدا
با سلام
داداش نمی فرسته، شما فکر کن ، من بی سوادم.
لطفا یک کد کامل و تست شده با هر روش ارسالی که می خوای بزار ( چه می خواد تابع میل باشه ، چه کلاس phpmailer و...) فقط در لوکال کار کنه! این مهمه، در سرور هیچ مشکلی وجود نداره، البته من با خود سرور ایمیل رو ارسال می کنم.
در ضمن من به تنظیمات جیمیل آشنایی ندارم ، منظورم پورت ها و غیره هتسش اگه لطف کنید ، تمام تنظیمات لازم رو خودتون انجام بدید و فقط بخش هایی که مخصوص من هست ، مثل نام کاربری ، پسورد اکانت چیمیل را یک عبارت مثالی وارد کنید.
موفق باشید.

tux-world
یک شنبه 02 بهمن 1390, 22:44 عصر
............... فقط در لوکال کار کنه! این مهمه، در سرور هیچ مشکلی وجود نداره، البته من با خود سرور ایمیل رو ارسال می کنم.
موفق باشید.
تا جایی که من یادمه و میدونم این کار رو لینوکس به صورت لوکالی که میخوایید امکان پذیر هستش. شما از لینوکس استفاده میکنید یا ویندوز؟ اگه ویندوز که راه حلی ندارم واسش ولی اگه لینوکس باشه چرا

IKHATAMI
شنبه 08 بهمن 1390, 08:11 صبح
سلام
من با php روی iis7 کار می کنم در بخش ایمیل مشکل دارم راستش من تصمیم دارم محتوای خاصی مثل بخشی از متن را کاربر بتواند به ایمیل خاصی بفرستد چطور اینکار را انجام دهم من از تابع mail استفاده می کنم ولی کار نمی کند نمی دانم تنظیمات خاصی باید در php.ini انجام دهم یا نه؟


mail('mymail@mymail.com', 'my subject', $text , $headers)

لطفا مرا راهنمایی نمایید اگر لطف کنید یک سمپل هم بگذارید ممنون میشوم



آره میشه ... چندتا راه برای متصل کردن لوکال به SMTP وجود داره ... اولیش اینه که با استفاده از


ini_set('SMTP' , '.............');
ini_set('smtp_port', '..............')

سرور رو به smtp متصل کنی ... این روش برای تابع mail بکار میره ولی اگه روش راحتتره میخوای از کلاس phpmailer استفاده کن ! خیلی راحت به همه چی میتونی وصل بشی !! من کلا بیشتر تو کار ایمیل هستم ! هرسوال ایمیلی داری از خودم بپرس !!