PDA

View Full Version : آموزش: فرستادن Email از طریق Localhost - ( تست شده با Wamp )



siavashsay
دوشنبه 16 بهمن 1391, 11:06 صبح
دوستان من توی فروم Search زدم اما چیزی دراین مورد پیدا نکردم !
گفتم این آموزش برای دوستانی که میخوان تابع Mail رو در PHP توی Localhost تست کنن باید مفید باشه!
کل مراحل زیر نهایتا 5 دقیقه زمان میبره !
با این کار شما میتونید به راحتی از Localhost به ایمیل مورد نظر خودتون ( در اینجا Gmail تست شده ) ایمیل بزنید و در برنامه خودتون نمونه تابع رو اجرای اون رو ببینید !
خوب در ابتدا شما نیاز به دانلود این فایل دارید :
دانلود برنامه Sendmail (http://www.glob.com.au/sendmail/sendmail.zip)
- بعد از دانلود برنامه اون رو Extract کنید و محتویات اون رو داخل پوشه به نام sendmail بریزید !
- پوشه sendmail رو copy کرده و در مسیر bin برنامه wamp بریزید :
دقیقا در کنار پوشه های apache - mysql - php - که اینطوری میشه :

C:\wamp\bin\sendmail
- سپس پوشه sendmail رو باز کرده و فایل sendmail.ini رو باز کنید !
- حالا باید تنظمات مورد نظر رو اعمال کنید - اما از اونجایی که خودم قبلا درست کردم کافیه که کل متن زیر رو بجای محتویات فایل خودتون کپی کنید و بعد ذخیره کنید :

; configuration for fake sendmail

; if this file doesn't exist, sendmail.exe will look for the settings in
; the registry, under HKLM\Software\Sendmail

[sendmail]

; you must change mail.mydomain.com to your smtp server,
; or to IIS's "pickup" directory. (generally C:\Inetpub\mailroot\Pickup)
; emails delivered via IIS's pickup directory cause sendmail to
; run quicker, but you won't get error messages back to the calling
; application.

smtp_server=smtp.gmail.com

; smtp port (normally 25)

smtp_port=587

; SMTPS (SSL) support
; auto = use SSL for port 465, otherwise try to use TLS
; ssl = alway use SSL
; tls = always use TLS
; none = never try to use SSL

smtp_ssl=tls

; the default domain for this server will be read from the registry
; this will be appended to email addresses when one isn't provided
; if you want to override the value in the registry, uncomment and modify

;default_domain=mydomain.com

; log smtp errors to error.log (defaults to same directory as sendmail.exe)
; uncomment to enable logging

error_logfile=error.log

; create debug log as debug.log (defaults to same directory as sendmail.exe)
; uncomment to enable debugging

;debug_logfile=debug.log

; if your smtp server requires authentication, modify the following two lines

auth_username=your@gmail.com
auth_password=yourpassword

; if your smtp server uses pop3 before smtp authentication, modify the
; following three lines. do not enable unless it is required.

;pop3_server=
;pop3_username=
;pop3_password=

; force the sender to always be the following email address
; this will only affect the "MAIL FROM" command, it won't modify
; the "From: " header of the message content

force_sender=

; force the sender to always be the following email address
; this will only affect the "RCTP TO" command, it won't modify
; the "To: " header of the message content

force_recipient=

; sendmail will use your hostname and your default_domain in the ehlo/helo
; smtp greeting. you can manually set the ehlo/helo name if required

hostname=


دقت کنید در این فایل 2 تا گزینه ی auth_username و auth_password رو تغییر بدید !
اولی ایمیلی هست که شما دارید با اون ایمیل میفرستید و نام اون عنوان میشه !
و دومی هم رمز ایمیلتون هست که برنامه باید با اون Login شه تا ایمیل بفرسته !
- حالا نوبت تنظیمات فایل php.ini هست - به دنبال خطوط زیر در فایل بگردید و تنظیمات زیر رو اعمال کنید :

; For Win32 only.
; http://php.net/smtp
; SMTP =
; http://php.net/smtp-port
; smtp_port = 25

; For Win32 only.
; http://php.net/sendmail-from
; sendmail_from = an email address that is already there

; For Unix only. You may supply arguments as well (default: “sendmail -t -i”).
; http://php.net/sendmail-path
sendmail_path ="C:\wamp\bin\sendmail\sendmail.exe -t"


توجه کنید که در این قسمت نیازی نیست کاری کنید - تنها کاری که میکنید این هست که کاراکتر ; رو به اول خطها مورد نظر اضافه میکنید تا غیرفعال شن !
تنها نکته مهم قسمت sendmail_path هست که باید مسیر فایل sendmail.exe رو در پوشه sendmail بهش بدید و یک -t هم آخر اون اضافه کنید !
حالا wamp رو restart کنید و یک ایمیل برای خودتون بفرستید !
اینم یک نمون کد فرستادن ایمیل :

$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= 'From: sender@sender.com' . "\r\n";
mail("your@gmail.com","subject Test","body Test",$headers);
گزینه your@gmail.com رو تغییر بدید و ایمیل خودتون رو بگذارید !
موفق باشید :)
============== ویرایش جهت تنظیمات و مشکل در ارسال در ویندوز 8 و یا 2012 سرور =============
دوستانی که در از ویندوز های 8 و یا 2012 سرور استفاده میکنند اگر مشکل در ارسال داشتند و کار نمیکرد این مراحل رو طی کنن حتما درست میشه - در ویندوز 2012 سرور این برنامه رو به لیست برنامه های مورد تایید برای فایروال هم اضافه کنید :)

1º Right click on sendmail.exe
2º Properties
3º Compatibility
4º Change the configuration for all users
5º Execute as Windows XP SP 3
6º Execute as adminitrator
موفق باشید

siavashsay
چهارشنبه 18 بهمن 1391, 10:34 صبح
دوستان میتونن برای استفاده از یاهو همین مراحل رو انجام بدن !
اما قسمت smtp و پورت های اون رو - پورتهای مربوط به یاهو رو بگذارن ! :)

ravand
جمعه 20 بهمن 1391, 20:53 عصر
دوستان میتونن برای استفاده از یاهو همین مراحل رو انجام بدن !
اما قسمت smtp و پورت های اون رو - پورتهای مربوط به یاهو رو بگذارن ! :)

من اطلاعات یاهو رو ندارم اگه شما دارید بذارید متشکرم.

2undercover
شنبه 21 بهمن 1391, 16:50 عصر
من اطلاعات یاهو رو ندارم اگه شما دارید بذارید متشکرم.

و خداوند جستجو را آفرید:

سرور SMTP : smtp.mail.yahoo.com


SSL: دارد

Port : 465

نیاز به Authentication

منبع خود Yahoo (http://help.yahoo.com/kb/index?page=content&y=PROD_MAIL_CLASSIC&locale=en_US&id=SLN3219&pir=rG6nGQNibUmlYqy07mdzAsXXVZIDm8aIQfRdEWt50T_IcT gZAoDn85SZccSoZmZ_7D0pg26sfZDbXLqHKP9KRGhB.Bjc6g--)

milad0077
شنبه 25 خرداد 1392, 13:30 عصر
با سلام
من نفهمیدم کدوم php.ini رو ویرایش کنم
اون که تو php هستش یا اون که to apache هستش

با تشگر

MRmoon
شنبه 25 خرداد 1392, 14:46 عصر
با سلام
من نفهمیدم کدوم php.ini رو ویرایش کنم
اون که تو php هستش یا اون که to apache هستش

با تشگر
مگه چند تا هست؟

هموني كه تو php هست ديگه.

milad0077
شنبه 25 خرداد 1392, 14:49 عصر
هم تو PHP هست هم تو APACHE

mahmod2000
شنبه 25 خرداد 1392, 16:03 عصر
من تو xampp تست کردم.. ارور پورت میده.. واسه جیمیل میخواستم

Unique
شنبه 25 خرداد 1392, 23:39 عصر
راستش نمیدونم خودتون تست کردین یا نه ولی ۱۰۰٪ ایمیل هایی که به صورت local و از روی ip های ایران ارسال میشه که تنظیمات dns درست وحسابی ندارند spam شناخته میشه. البته این تجربه منه و میخوام بدونم موضوع فقط آموزش بوده یا استفاده عملی و واقعی و نتیجه گرفته شده ؟

siavashsay
جمعه 30 خرداد 1393, 14:30 عصر
بله - کاملا تست شد و نتیجه داد .
بنده از یک اکانت جیمیل دیگه واسه ارسال استفاده میکنم وا مستقیم به INBOX ایمیل مورد نظر میره و کار میکنه ! :)
موفق باشید

Unique
شنبه 31 خرداد 1393, 12:22 عصر
بنده از یک اکانت جیمیل دیگه واسه ارسال استفاده میکنم
از یک account gmail دیگه که میدونم میره ! از روی local یعنی با ip ایران ارسال بشه قطعا spam میشه.

منظور شما از local در واقع لوکال نیست ! شما دارین از یک gmail account (یعنی mail server شرکت google ونه mail server روی سیستم خودتون) ارسال میکنید که محدودیت ها gmail مثل ۵۰۰ ایمیل در روز و این ها را داره اما local mail server باشه حتمی spam میشه.

مهدی اسماعیلی
شنبه 31 خرداد 1393, 16:14 عصر
سلام لطفا آموزش برای xampp هم بگذارید.
با سپاس :خجالت:

abolfazl-z
یک شنبه 01 تیر 1393, 09:38 صبح
سلام لطفا آموزش برای xampp هم بگذارید.
با سپاس :خجالت:

هیچ فرقی نمیکند !

C:\xampp\sendmail

koorosh4
چهارشنبه 11 تیر 1393, 11:28 صبح
$headers .= 'From: sender@sender.com' . "\r\n";
mail("your@gmail.com","subject Test","body Test",$headers);[/PHP]
سلام دوست عزیز . من
sender@sender.com' را به آدرس ایمیل خودم که قراره ارسال کنه میل را تغییر دادم و your@gmail.com را هم به آدرس میلی که قراره میل را دریافت کنه . هیچ اروری نداد پروژه اما هیچ ایمیلی هم ارسال نشد .

koorosh4
چهارشنبه 11 تیر 1393, 11:36 صبح
من امتحان کردم . مثل جزوه . اما هیچی به میل من نیومد . البته ارور هم نمیده هااااا . اما چیزی هم ارسال نمیشه . نه توی ارسال میل من هیچی هست و نه تو اینباکس میلی که باید دریافت کننده باشه .

eshpilen
چهارشنبه 11 تیر 1393, 11:55 صبح
در هنگام توسعه و تست در ابتدای تمام اسکریپت های خود این کدها را قرار دهید:

error_reporting(E_ALL);
ini_set('display_errors', '1');
تا از هرگونه مشکل احتمالی خبردار شوید.

ضمنا یادتان باشد بعد از تغییرات کانفیگ PHP یا آپاچی باید آپاچی را ریستارت کنید تا تغییرات اعمال شوند.

koorosh4
چهارشنبه 11 تیر 1393, 12:07 عصر
در هنگام توسعه و تست در ابتدای تمام اسکریپت های خود این کدها را قرار دهید:

error_reporting(E_ALL);
ini_set('display_errors', '1');
تا از هرگونه مشکل احتمالی خبردار شوید.

ضمنا یادتان باشد بعد از تغییرات کانفیگ PHP یا آپاچی باید آپاچی را ریستارت کنید تا تغییرات اعمال شوند.

بله شما درست میفرمایید . اما من این کارها را فرمودید هم انجام داده ام . اما نه ارور داره برنامه و نه اینکه میل ارسال میکنه . بطور همزمان من الان جفت میل هارا باز کردم و هر لحظه صندوق ارسال و دریافت را چک میکنم . هیچ چیزی ارسال و دریافت نشده . من کد ارسال را داخل لاگ این نوشتم که به محظ لاگ این شدن به من میل بزنه . اما نمیکنه چنین کاری را .

<br>
<?php echo jdate('j / F / Y');?>

<br>
<?php echo $this->currentUser->username; ?>
<?php echo('خوش آمدید '); ?>
<br>
<?php echo ('آی پی شما :');?>

<?php
error_reporting(E_ALL);
ini_set('display_errors', '1');
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= 'From: akbari1363@gmail.com' . "\r\n";
mail("akbaree.m@gmail.com","Test","aleki Test",$headers);
?>


<?php echo getenv("remote_addr"); ?>
<br>
<?php echo CHtml::link('خروج', array('site/logout')); ?>
<?php endif; ?>
<br>

sooren_66
چهارشنبه 11 تیر 1393, 13:12 عصر
بله شما درست میفرمایید . اما من این کارها را فرمودید هم انجام داده ام . اما نه ارور داره برنامه و نه اینکه میل ارسال میکنه . بطور همزمان من الان جفت میل هارا باز کردم و هر لحظه صندوق ارسال و دریافت را چک میکنم . هیچ چیزی ارسال و دریافت نشده . من کد ارسال را داخل لاگ این نوشتم که به محظ لاگ این شدن به من میل بزنه . اما نمیکنه چنین کاری را .

<br>
<?php echo jdate('j / F / Y');?>

<br>
<?php echo $this->currentUser->username; ?>
<?php echo('خوش آمدید '); ?>
<br>
<?php echo ('آی پی شما :');?>

<?php
error_reporting(E_ALL);
ini_set('display_errors', '1');
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= 'From: akbari1363@gmail.com' . "\r\n";
mail("akbaree.m@gmail.com","Test","aleki Test",$headers);
?>


<?php echo getenv("remote_addr"); ?>
<br>
<?php echo CHtml::link('خروج', array('site/logout')); ?>
<?php endif; ?>
<br>

همه دارن میگن با آی پی ایران اسپم میشه.پوشه ی اسپم رو هم چک کردید؟

koorosh4
چهارشنبه 11 تیر 1393, 13:15 عصر
همه دارن میگن با آی پی ایران اسپم میشه.پوشه ی اسپم رو هم چک کردید؟

بله . کلا میلم را تمیز کردم و در هر پوشه ای بیاد میبینمش . حتی توی تراش(سطل بازیافت) هم نگاه کردم که شاید بعنوان ویروس یا چیزی پاک شده باشه اما اونجام نبود . هم ایمیل فرستنده و هم گیرنده را چک کردم . دقیق مثل جزوه پیش رفتم .

night-man
دوشنبه 18 آبان 1394, 08:58 صبح
شما آخرین ورژن wamp رو نصب کن میبینی که همه چی بدون حتی تغییرات و تنظیمات درست انجام میشه
منم همین مشکل رو داشتم سه روز داشتم سر و کله میزدم و همش ارور میداد
ولی تو آخرین ورژن خیلی راحت ارسال و دریافت میشه
اگ از جیمیل استفاده میکنی تو این لینک وارد حساب جی میلت شو و امنیت جیمیلتو کم کن
https://accounts.google.com/ServiceLogin?service=accountsettings&passive=1209600&osid=1&continue=https://www.google.com/settings/security/lesssecureapps&followup=https://www.google.com/settings/security/lesssecureapps&emr=1&mrp=security

us1234
دوشنبه 18 آبان 1394, 11:00 صبح
تاپیک قدیمی ...

ویندوزش را نمیدونم ، ولی در لینوکس با Postfix این کار قابل انجام است .

ساخت میل سرور ، فوروارد کردن ایمیل به آدرس دیگه و ... با همان Postfix میشه انجام داد .

وب ترین ها
چهارشنبه 04 آذر 1394, 14:54 عصر
دوستان من همه ی روش های ذکر شده رو امتحان کردم
اولش جی میل خطای authentication میداد که از تنظیمات جی میل استفاده کردم و این مشکل حل شد اما الان دیگه هیچ خطایی هم نمیده.
ولی هیچ ایمیلی هم دریافت نمیکنم پوشه ی spam هم چک کردم.

تنطیمات ومپ سرور هم انجام دادم .و فایل sendmail و اضافه کردم.اما موفق نبودم.بنظرتون مشکل از کجاست؟
از کجا میتونم بفهمم که جی میل،IP منو Banned کرده؟؟؟؟؟؟؟

behrouzhassan
دوشنبه 07 خرداد 1397, 01:31 صبح
دوستان من همه ی روش های ذکر شده رو امتحان کردم
اولش جی میل خطای authentication میداد که از تنظیمات جی میل استفاده کردم و این مشکل حل شد اما الان دیگه هیچ خطایی هم نمیده.
ولی هیچ ایمیلی هم دریافت نمیکنم پوشه ی spam هم چک کردم.

تنطیمات ومپ سرور هم انجام دادم .و فایل sendmail و اضافه کردم.اما موفق نبودم.بنظرتون مشکل از کجاست؟
از کجا میتونم بفهمم که جی میل،IP منو Banned کرده؟؟؟؟؟؟؟


<?php
require_once 'phpmailer/class.phpmailer.php';
$php=new PHPMailer();
$php->AddAddress("behrouzfe@yahoo.com");
$php->SetFrom("behrouzfe@yahoo.com");
$php->Subject="man behrouz hastam";
$php->Body="hello word";
$php->IsSMTP();
$php->Host="smtp.gmail.com";
$php->Username="behrouzfe@gmail.com";
$php->Password="password";
$php->SMTPSecure="ssl";
$php->Port=465;
$php->SMTPAuth=true;
if($php->Send())
{
echo 'yes';
}
else
{
echo 'no';
}
?>

کلاس phpmailer رو دانلود کن و سپس این کد رو کپی کن ..

باید ایمیل و رمز رو تغییربدی.

البته تنظیمات اپاچی رو هم انجام بدید

behrouzhassan
دوشنبه 07 خرداد 1397, 03:30 صبح
با استفاده از کلاس phpmailer می توان در localhost ایمیل ارسال کرد.

1.دانلود فایل کلاسphpmailer
2.استفاده از کد زیر
<?php
require_once 'phpmailer/class.phpmailer.php';
$php=new PHPMailer();
$php->AddAddress("behrouzfe@yahoo.com");
$php->SetFrom("behrouzfe@yahoo.com");
$php->Subject="m";
$php->Body="hellooooooo";
$php->IsSMTP();
$php->Host="smtp.gmail.com";
$php->Username="behrouzfe@gmail.com";
$php->Password="passwordgmail";
$php->SMTPSecure="ssl";
$php->Port=465;
$php->SMTPAuth=true;
if($php->Send())
{
echo 'yes';
}
else
{
echo 'no';
}
?>
3.تنظیمات ssl از طریق اپاچی و پی اچ پی از ومپ سرور

بهروز 09186076360