काम करने के लिए Laravel 5 ईमेल प्राप्त करने की कोशिश कर रहा है


154

मैं URL में लिखकर एक निर्दिष्ट उपयोगकर्ता को एक ईमेल भेजने की कोशिश कर रहा हूं, लेकिन मुझे निम्नलिखित त्रुटि मिल रही है:

AbstractSmtpTransport.php लाइन 383 में Swift_TransportException: अपेक्षित प्रतिक्रिया कोड 250 लेकिन कोड "530" मिला, जिसमें संदेश "530 5.7.1 प्रमाणीकरण आवश्यक है"

अब तक मैं सिर्फ जीमेल के साथ काम करने के लिए कोशिश कर रहा हूं। में इससे कैसे चला सकता हूँ?

यह मेरे पास अभी तक है: mail.php

<?php
    return [
        'driver' => env('MAIL_DRIVER',' smtp'),
        'host' => env('MAIL_HOST', 'smtp.gmail.com'),
        'port' => env('MAIL_PORT', 587),
        'from' => ['address' =>"MyUsername@gmail.com" , 'name' => "example"],
        'encryption' => 'tls',
        'username' => env('MyUsername@gmail.com'),
        'password' => env('MyPassword'),
        'sendmail' => '/usr/sbin/sendmail -bs',
        'pretend' => false,
    ];

यह मेरे पास मार्गों में है:

Route::get('test', function() {
    Mail::send('Email.test', [], function ($message) {
        $message->to('example@gmail.com', 'HisName')->subject('Welcome!');
    });
});

यह मेरे नियंत्रक में है:

class MailController extends Controller
{
    public function Sending_Email()
    {
        $this->call('GET','Email.test');
        return View('Email.test');
    }
}

और यह मेरे .env फ़ाइल में है:

MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=MyUsername@gmail.com
MAIL_PASSWORD=MyPassword

4
परीक्षण के लिए mailtrap.io का उपयोग करें
रोल करें

Mailtrap.io पर अच्छा टिप। @ ट्रोल
बेन

जब मुझे
luisfer

जवाबों:


243

मुझे पता है कि यह आपके लिए अभी @ Vantheman6 पर काम कर रहा है, लेकिन किसी और के लिए ऐसा ही है।

मैंने अपने .env फ़ाइल में उस मेल सेवा का विवरण जोड़ा जिसका मैं उपयोग कर रहा हूं। तो निम्नलिखित विवरण सुनिश्चित करें

MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=MyUsername@gmail.com
MAIL_PASSWORD=MyPassword

.env फ़ाइल में सटीक हैं।

नोट: .env फ़ाइल को संपादित करने के बाद अपने सर्वर को पुनः आरंभ करने के लिए मत भूलना ताकि यह आपके द्वारा डाले गए नए डेटा को चुन ले।

यदि आप अपने सर्वर को पुनः आरंभ नहीं करते हैं, तो .env फ़ाइल अभी भी पुराने मेल डेटा को ऐप में पेश करती रहेगी, भले ही आपने बदलाव किए हों जो इस त्रुटि का कारण हो सकता है।


59
वाह, उस 'नोट' ने मुझे बचा लिया। मुझे नहीं पता था कि ईएनवी संस्करण स्टार्टअप पर कैश्ड थे!
गेरेबेन जैकब

क्या आप उत्तर को अपडेट कर सकते हैं - और कॉन्फ़िगरेशन फ़ाइल के बजाय पुनरारंभ सर्वर को हाइलाइट कर सकते हैं?
म्रविम

2
@mrwaim, मुझे लगा कि सर्वर का पुनः आरंभ वही है जो मैंने नोट में निर्दिष्ट किया था, जब तक कि मुझे वह नहीं मिल रहा है जो आप पर निर्भर कर रहे हैं।
ओसी-बोंसु ईसाई

1
मैं "नोट:" से पहले सब कुछ हटाने का सुझाव दूंगा - क्या नोट में मदद की गई थी, और इससे पहले की चीजें नहीं। मेरा सुझाव है, यदि आप अन्य भागों को रखना चाहते हैं, तो उन्हें नोट के बाद रख दें। 3 लोगों ने 'नोट' टिप्पणी को गलत ठहराया, इसलिए नोट ने शायद उनकी भी मदद की।
मर्व

22
यदि आपने पहले अपने कॉन्फ़िगरेशन को कैश किया है, php artisan config:cacheतो सर्वर को पुनरारंभ करने के बाद अपडेट कॉन्फ़िगरेशन को नहीं उठाएंगे। php artisan config:cacheफिर से चलने की कोशिश करें
darronz

53

मेरी .env फ़ाइल विन्यास लार्वा 5.1 के लिए इस तरह है

MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=example@gmail.com
MAIL_PASSWORD=****************
MAIL_ENCRYPTION=tls

यहाँ सबसे महत्वपूर्ण बात यह है कि मैंने gmail एप्लिकेशन विशिष्ट पासवर्ड (16 अंक) बनाया है।

मुझे किसी भी कॉन्फ़िगरेशन के लिए कोई भी भाग्य प्रकट करने की आवश्यकता नहीं है। यही है, जब भी मैं बदल गया .env फ़ाइल को इस कमांड को चलाने की आवश्यकता है

php artisan config:cache

और यह सबसे अधिक महत्वपूर्ण है क्योंकि इस कमांड के बिना लार्वा कैश से पिछली सेटिंग्स को निष्पादित करता है। यह पता लगाने के लिए मुझे 10 घंटे से अधिक की आवश्यकता है।


1
php artisan cache:clearजब php artisan config:cacheमेरे लिए इसे हल किया जाता है तो मैं इसका उपयोग करता रहा । धन्यवाद!
टाइमग्विन

4
आपके नोट के कारण upvotedphp artisan config:cache
darronz

35

आपको प्रमाणीकरण त्रुटि मिल रही है क्योंकि आपकी कॉन्फ़िग फ़ाइल में उपयोगकर्ता नाम और पासवर्ड गलत है।

इसे बदलो:

'username' => env('MyUsername@gmail.com'),
'password' => env('MyPassword'),

इसके लिए:

'username' => env('MAIL_USERNAME'),
'password' => env('MAIL_PASSWORD'),

envविधि अपने .env फ़ाइल की जाँच करता है। अपनी .env फ़ाइल में आप इन्हें कॉल करते हैं MAIL_USERNAME, इसलिए आपको envविधि को पास करने की आवश्यकता है ।

एक समस्या निवारण टिप: इसे जोड़ें dd(Config::get('mail'));ताकि आप वास्तविक उत्पन्न कॉन्फ़िगरेशन देख सकें । इससे आपको इस तरह के मुद्दों को सुलझाने में मदद मिलेगी, और यह जान पाएंगे कि लारवेल किस जानकारी का उपयोग करने की कोशिश कर रहा है। इसलिए आप अपने परीक्षण मार्ग में अस्थायी रूप से रोकना चाहते हैं कि आपके पास क्या है:

Route::get('test', function()
{
    dd(Config::get('mail'));
});

इसलिए मैंने आपके सुझावों को प्रतिबिंबित करने के लिए अपनी mail.php फ़ाइल को बदल दिया 'password' => env('MAIL_PASSWORD'), । मुझे अभी भी एक त्रुटि मिल रही है Swift_TransportException in AbstractSmtpTransport.php line 383: Expected response code 250 but got code "530", with message "530 5.7.1 Authentication required. I'm sorry but where do i actually place the " dd(Config::get('mail'));। विन्यास निर्देशिका में बहुत सारी फाइलें हैं
Vantheman6

अपने कॉन्फ़िगर की जांच कैसे करें, इसके उदाहरण के साथ, मेरा अद्यतन उत्तर देखें।
jszobody

यह बहुत बढ़िया है, मुझे अभी भी एक त्रुटि मिल रही है, लेकिन मैं वास्तव में देख सकता हूं कि यह क्या कर रहा है। किसी कारण से यह "" होस्ट "=>" mailtrap.io "को पास करने की कोशिश कर रहा है, भले ही वह ईवीएम में मेल php में कह रहा हो'host' => env('MAIL_HOST', 'smtp.gmail.com'),
Vantheman6

MAIL_HOSTअपनी .env फ़ाइल में डबल चेक करें
jszobody

यह सही है। MAIL_HOST=smtp.gmail.com तो मैं क्या कर रहा था mail.php फ़ाइल के प्रत्येक भाग से सभी env निकाल रहा था। और अब सही जानकारी से गुजर रहा है। OMG धन्यवाद, इसने काम किया। आप आदमी हैं
Vantheman6


13

अंत में मुझे मिल गया! बस साझा करने के लिए, केवल .env की तुलना में अधिक कॉन्फ़िगर हैं

यह .env है

MAIL_DRIVER=smtp

MAIL_HOST=smtp.gmail.com

MAIL_PORT=587

MAIL_USERNAME=UserName@gmail.com

MAIL_PASSWORD=********

MAIL_ENCRYPTION=tls

config / mail.php को भी काम करने के लिए पता और नाम इनपुट करना होगा।

'driver' => env('MAIL_DRIVER', 'smtp'),
'host' => env('MAIL_HOST', 'smtp.gmail.com'),
'port' => env('MAIL_PORT', 587),
'from' => ['address' => 'Username@gmail.com' , 'name' => 'YourName' ],
'encryption' => env('MAIL_ENCRYPTION', 'tls'),
'username' => env('MAIL_USERNAME'),
'password' => env('MAIL_PASSWORD'),
'sendmail' => '/usr/sbin/sendmail -bs',
'pretend' => false,

11

यदि आपको कभी भी यही परेशानी होती है और ऑनलाइन सब कुछ करने की कोशिश करें और यह काम नहीं करता है, तो शायद यह कॉन्फ़िगर कैश फ़ाइल है जो गलत जानकारी भेज रही है। आप इसे बूटस्ट्रैप / कैश / config.php में पा सकते हैं। सुनिश्चित करें कि क्रेडेंशियल्स वहीं हैं। मुझे यह पता लगाने में एक सप्ताह का समय लगा। मुझे उम्मीद है कि यह किसी दिन मदद करेगा।


आप सर, एक अच्छे बोर्डो के हकदार थे, बहुत बहुत धन्यवाद! मैंने देखा कि उस फ़ाइल में उपयोगकर्ता नाम और पासवर्ड भी मुश्किल से खाली थे, मैंने उन्हें दो उपयुक्त फ़ाइलों में भर दिया। वहाँ से, मुझे पता था कि क्या करना है! मर्सी!
ग्रेगोरी

धन्यवाद! गंभीरता से मैं NO CLUE लेकिन इस के साथ एक घंटे के लिए डिबगिंग कर रहा हूँ !!! THIS
अहमद अल्फी

11

विकास के उद्देश्य से https://mailtrap.io/ आपको सभी सेटिंग्स प्रदान करता है, जिन्हें .env फ़ाइल में जोड़ा जाना चाहिए। उदाहरण के लिए:

Host:   mailtrap.io
Port:   25 or 465 or 2525
Username:   cb1d1475bc6cce
Password:   7a330479c15f99
Auth:   PLAIN, LOGIN and CRAM-MD5
TLS:    Optional

अन्यथा कार्यान्वयन के उद्देश्य से आप smtp क्रेडेंशियल्स को मेल से .env फ़ाइल में जोड़ा जा सकता है (जैसे जीमेल n सब)

इसके अलावा सर्वर को पुनरारंभ करना सुनिश्चित करें


इसके बाद सर्वर को पुनः आरंभ करना सुनिश्चित करें .. इस वाक्य ने मेरी समस्या हल कर दी।
होस मर्करी

8

मेरे साथ भी ऐसा होता है।

ऐसा इसलिए है क्योंकि जब हम .envफाइल को एडिट करते हैं तो हमें सर्वर को रिस्टार्ट करने की जरूरत होती है। बस करंट को रोकें php artisan serveऔर इसे एक बार फिर से शुरू करें। यह सुनिश्चित करने के लिए काम करेगा।

अगर फिर भी काम करने की कोशिश नहीं की गई php artisan config:cache


5

यहां आने वाले लोगों के भविष्य के संदर्भ के लिए। आपके द्वारा उस कमांड को चलाने के बाद जो यहां तीसरे उत्तर में दी गई थी ( मैं अब लारवेल 5.3 का उपयोग कर रहा हूं )।

php artisan config:cache

आप इस समस्या का सामना कर सकते हैं:

[ReflectionException]
Class view does not exist

उस स्थिति में, आपको app.php फ़ाइल के तहत इसे अपने प्रदाता सूची में मैन्युअल रूप से जोड़ना होगा। GO-TO: app->config->app.php->'providers[]'और इसे जोड़ें, जैसे:

Illuminate\View\ViewServiceProvider::class,

आशा है कि किसी की मदद करता है।


4

मुझे भी यही समस्या हुई है; मेरा चालू MAIL_ENCRYPTIONथा tls, mail.phpलेकिन यह फ़ाइल nullपर था .env
इसलिए मैं बदल nullगया tlsऔर यह काम कर गया!


ये था मामला!
13 劇場

3

उपरोक्त समाधानों में से किसी ने भी मेरे लिए लोकलहोस्ट पर काम नहीं किया। मैंने कम सुरक्षित ऐप्स से भी एक्सेस की अनुमति दी है, डिस्प्ले अनलॉक कैप्चा के माध्यम से एक्सेस की अनुमति दी है और सत्यापित सहकर्मी को सेट करें और SSL के लिए झूठा नाम सत्यापित करें।

आखिरकार, मैंने MailHog के ओपन सोर्स SMTP परीक्षण समाधान का उपयोग किया। चरण इस प्रकार हैं:

  1. अपने OS के लिए MailHog का नवीनतम संस्करण डाउनलोड करें
  2. अपनी .env फ़ाइल में निम्न सेटिंग्स निर्दिष्ट करें

MAIL_DRIVER = smtp

MAIL_HOST = 127.0.0.1

MAIL_PORT = 1025

MAIL_USERNAME = testuser

MAIL_PASSWORD = testpwd

MAIL_ENCRYPTION = बातिल

MAIL_FROM_ADDRESS=theaddress@youwant.com

  1. MailHog की डाउनलोड की गई फ़ाइल चलाएँ
  2. ईमेल भेजें
  3. लोकलहोस्ट: 8025 पर जाकर भेजे गए ईमेल की जाँच करें

3

इसका सीधा सा मतलब है कि आपके सर्वर की एसएमटीपी सर्वर तक पहुंच नहीं है।

आप ऐसा करके परीक्षण कर सकते हैं:

telnet <smtpServer> <smtpPort>

आपको प्रवेश निषेध त्रुटि मिलनी चाहिए।

समाधान सिर्फ एक और SMTP सर्वर का उपयोग करना है जिसे आपके सर्वर द्वारा एक्सेस किया जा सकता है।


2

आपको सर्वर को पुनरारंभ करना चाहिए और इस कमांड को चलाना चाहिए:

php artisan cache:clear
php artisan view:clear
php artisan route:clear
php artisan config:clear
php artisan config:cache

वह काम करना चाहिए।



0

आपकी .env फ़ाइलों पर परिवर्तन करने के बाद मेरी राय आपके सर्वर को पुनरारंभ करती है और ऐप को फिर से सेवा देती है। बस वास्तविक त्रुटि के बारे में सुनिश्चित होना चाहिए। Php कारीगर स्पष्ट और बाद में कैश बहुत अच्छा काम करता है।


-1

मुझे आपके समान ही समस्या थी, मुझे बस काम करना था।

सबसे पहले, आपको यह जांचने की आवश्यकता है कि .env सेटिंग्स सही तरीके से सेट की गई हैं। यहाँ मेरी सेटिंग्स हैं:

MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=yourusername
MAIL_PASSWORD=yourpassword
MAIL_ENCRYPTION=tls

कृपया सुनिश्चित करें कि आपका पासवर्ड उद्धरण के बीच नहीं है :)।

और config / mail.php में यह टिप्पणी के बिना निम्नलिखित है।

<?php

return [

'driver' => 'smtp',
'host' => env('MAIL_HOST', 'smtp.gmail.com'),
'port' => env('MAIL_PORT', '587'),
'from' => ['address' => 'yourusername', 'name' => 'yourname'],
'encryption' => env('MAIL_ENCRYPTION','tls'),
'username' => env('MAIL_USERNAME', 'username@gmail.com'),
'password' => env('MAIL_PASSWORD', 'password'),
'sendmail' => '/usr/sbin/sendmail -bs',

'pretend' => false,

];

आशा है कि यह आप के लिए काम करता है :)



-2
  1. आप मेलगंज जाएं
  2. अधिकृत प्राप्तकर्ता पर क्लिक करें
  3. उस ईमेल पते को जोड़ें जिसे आप मेल भेजना चाहते हैं।
  4. मेल पर भेजे गए संदेश को सत्यापित करें।
  5. ब्रावो! ... आप जाने के लिए अच्छे हैं।

2
कृपया मेरी अज्ञानता को क्षमा करें। उपरोक्त प्रश्न में Laravel5 ईमेल समस्याओं का समाधान कैसे किया जाता है?
jww
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.