💻 آخرین فرصت یادگیری برنامه‌نویسی با آفر ویژه قبل از افزایش قیمت در ۵ آذر ماه (🎁 به همراه یک هدیه ارزشمند )
۰ ثانیه
۰ دقیقه
۰ ساعت
۵ مرتضی حرمتی
دارا بودن چند ایمیل در سیستم
جامعه لاراول ایجاد شده در ۱۱ خرداد ۱۳۹۸

سلام خدمت استاد گرامی 

برای اینکه یک smtp  به سیستم معرفی کنیم از فایل env   استفاده میکنیم ...

اگر برنامه زمانی احتیاج به داشتن دو یا چند  سیستم  smtp برای یک env  رو داشته باشه باید چکار کرد 

مشکل در فهم این موضوع است که خیلی خب . درایور رو ست کردی ولی از چند ایمیل متفاوت روی  smtp میخوای استفاده کنی ... برای این موضوع چطور؟

 برای یک smtp  چندین میل متفاوت ست کنیم و از اونها در برنامه استفاده کنیم مانند 

مثلا برای ثبت نام 

no-reply@example.com

برای پشتیبانی 

support@example.com 

و استفاده کردن هرکدوم بر جای خودش را راهنمایی میفرمایید 

فک کنم راه حلش اینه :

شما باید override پیکربندی رو در زمان اجرای برنامه :

// In some controller
public function sendEmail(Request $request)
{
    Config::set('mail.host', 'smtp1.sample.com');
    Mail::to($request->user())->send(new OrderShipped($order));
    Config::set('mail.host', 'smtp2.sample.com');
    Mail::to($request->user())->send(new OrderShipped($order));
}

 

و در آخر باید یک سرویس بنویسید که اینو براتون هندل کنه مثال:

 

$config = [
    'driver' => 'smtp',
    'host' => 'smtp1.example.com',
    'username' => foo',
    'password' => 'bar'
]
Config::set('mail', $config);

منبع: https://laracasts.com/discuss/channels/laravel/sending-email-from-different-smtp-configuration

MohammadMoghadasi ۱۱ خرداد ۱۳۹۸، ۱۰:۵۶

سلام ... 

در مورد داشتن SMTP‌های مختلف، لاراول به صورت پیش فرض این مورد رو پشتیبانی نمیکنه و اصولا هم این کار رو نمیکنند و دلیلی برای وجود چندین SMTP برای یک سیستم وجود نداره ... ولی برای این کار روش‌های زیادی وجود داره یکی از راحتترین روش‌ها این هستش که زمانی که دارید ایمیل رو ارسال میکنید SMTP خودتون رو تغییر بدید . 

$config = [
    'driver' => 'smtp',
    'host' => 'smtp.example.com',
    'username' => user',
    'password' => 'password'
]
Config::set('mail', $config);

 

در مورد موضوع استفاده از آدرس‌های مختلف، لاراول این موضوع رو پشتیبانی میکنه و زمانی که دارید ایمیل رو ارسال میکنید با استفاده از تابع from میتونید آدرس رو تغییر بدید . به صورت زیر : 

public function build()
{
    return $this->from('example@example.com')
                ->view('emails.orders.shipped');
}

 

موفق باشید . 

مهرداد سامی ۱۱ خرداد ۱۳۹۸، ۱۱:۰۴

ممنونم محمد جان مرسی از راهنماییت :)) 

استاد با Build اخر موضوع جا افتاد فقط یک سوال وقتی از متود from استفاده میکنیم علنا داریم دیفالت MAIL_USERNAME env  رو عوض میکنیم ،

در واقع این ایمیل ، ایمیلی خارج از سیستم میشه ... مقادیر این ایمیل جدید کجا مشخص میشه ؟ 

MAIL_USERNAME= example@example.com
MAIL_PASSWORD=6d3bbc0835b365 ====> ?????

وقتی جای  deafult میشینه ...پسورد دستزسی به اون ایمیل رو از کجا تنظیم میکنیم ؟

مرتضی حرمتی ۱۱ خرداد ۱۳۹۸، ۱۲:۰۵

خیر مرتضی جان، شما با تابع from دارید MAIL_FROM_ADDRESS رو عوض میکنید نه MAIL_USERNAME رو .. 

یک موضوعی که باید در مورد SMTP بدونید اینه که وقتی شما یک دسترسی به یک SMTP خاصی دارید با هر یوزری که بخواید میتونید ایمیل ارسال کنید، و یوزر و پسورد SMTP کاملا متفاوت هستش از اون یوزری که بااون ایمیل رو ارسال میکنید . 

به عنوان مثال ما الان یک یوزر و پسورد از یک SMTP به خصوص داریم که روی دامین ما به نام exmaple.com ثبت شده، از این به بعد ما با هر یوزری که بخواهیم از دامین example.com میتونیم ایمیل ارسال کنیم مثلا admin@example.com یا no-reply@example.com و هر یوزری دیگه ای که دلخواه ما هستش. 

موفق باشید . 

مهرداد سامی ۱۱ خرداد ۱۳۹۸، ۱۴:۳۴

مرسی استاد الان کاملا مفهومیه موضوع جا افتاد 

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

 

مرتضی حرمتی ۱۲ خرداد ۱۳۹۸، ۰۵:۱۲