কাজ করার জন্য লারাভেল 5 ইমেল পাওয়ার চেষ্টা করছেন


154

আমি ইউআরএল টাইপ করে নির্দিষ্ট ব্যবহারকারীর কাছে একটি ইমেল প্রেরণের চেষ্টা করছি, তবে আমি নিম্নলিখিত ত্রুটিটি পাচ্ছি:

অ্যাবস্ট্রাক্টসএমটিটিপিট্রান্সপোর্ট.এফপি লাইন 383 এ সুইফট ট্রান্সপোর্টএক্সসেপশন: প্রত্যাশিত প্রতিক্রিয়া কোড 250 কিন্তু কোড পেয়েছে "530", বার্তা সহ "530 5.7.1 প্রমাণীকরণ প্রয়োজন

এখন পর্যন্ত আমি এটি Gmail এর সাথে কাজ করার চেষ্টা করছি। আমি কীভাবে এটি কাজ করতে পারি?

আমার এখন অবধি এটিই রয়েছে: 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 @rol- এ সুন্দর টিপ
বেন

Mailtrap.io
luisfer

উত্তর:


243

আমি জানি এটি এখন আপনার পক্ষে কাজ করছে @ ভ্যান্থেমন but তবে এটি অন্য কারও ক্ষেত্রে একই রকম হলে আমার পক্ষে কাজ করেছে।

আমি .env ফাইলটিতে আমি যে মেল পরিষেবাটি ব্যবহার করছি তার বিবরণ যুক্ত করেছি। সুতরাং নিম্নলিখিত বিবরণ নিশ্চিত করুন

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

.env ফাইল এ সঠিক হয়।

দ্রষ্টব্য: .env ফাইল সম্পাদনা করার পরে আপনার সার্ভারটি পুনরায় চালু করতে ভুলবেন না যাতে এটি আপনার যে নতুন ডেটা রেখে দেয় তা বেছে নেবে।

আপনি যদি নিজের সার্ভারটি পুনরায় চালু না করেন তবে .env ফাইলটি তবুও পুরানো মেল ডেটা অ্যাপটিতে উপস্থাপন করা চালিয়ে যাবে যদিও আপনি পরিবর্তন করেছেন যা এই ত্রুটির কারণ হতে পারে।


59
বাহ, সেই 'নোট' আমাকে বাঁচিয়েছিল। আমি জানি না যে ENV ভার্সগুলি স্টার্টআপে ক্যাশে হয়েছিল!
গারবেন জ্যাকবস

আপনি কি উত্তরটি আপডেট করতে পারবেন - এবং কনফিগারেশন ফাইলের পরিবর্তে পুনরায় চালু সার্ভারটি হাইলাইট করতে পারেন?
এমআরওয়াইম

2
@ এমআরওয়াইম, আমি ভেবেছিলাম সার্ভারটি পুনরায় আরম্ভ করা ঠিক নোটটিতে যা উল্লেখ করা হয়েছে, যদি না আপনি যা বলছেন তা না পেয়ে।
ওসেই-বনসু খ্রিস্টান 21'15

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তা আমার জন্য সমাধান করে kept ধন্যবাদ!
টিমগাভিন

4
আপনার নোটটি সম্পর্কে php artisan config:cache
উজাড় হয়েছে

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_USERNAME'), 'password' => env('MAIL_PASSWORD'), Which এবং যা আমি আকর্ষণীয় বলে মনে করি কারণ সর্বত্র আমাকে তার ইমেল ঠিকানা এবং পাসওয়ার্ড ইনপুট করতে বলে। আমি এখনও একটি ত্রুটি পাচ্ছি 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'));। কনফিগারেশন ডিরেক্টরিটিতে প্রচুর ফাইল রয়েছে
ভ্যান্থেমান

কীভাবে আপনার কনফিগারটি পরীক্ষা করতে হয় তার উদাহরণ সহ আমার আপডেট করা উত্তর দেখুন।
jszobody

এটি দুর্দান্ত যে আমি এখনও একটি ত্রুটি পেয়েছি, তবে আমি এটি দেখতে পাচ্ছি আসলেই। কোনও কারণে এটি v "হোস্ট" => "মেইলট্রেপ.ইও" the এনভিকে পাস করার চেষ্টা করছে যদিও মেইল 'host' => env('MAIL_HOST', 'smtp.gmail.com'),
পিএইচপিতে

MAIL_HOSTআপনার .env ফাইলে ডাবল চেক করুন
jszobody

এটা সঠিক। MAIL_HOST=smtp.gmail.com সুতরাং আমি যা করতে পেরেছি তা হ'ল মেইল.এইচপিপি ফাইলের প্রতিটি অংশ থেকে সমস্ত এনভিলিটি অপসারণ করা। এবং এখন সঠিক তথ্য দিয়ে যাচ্ছে। ওএমজি ধন্যবাদ এটি কাজ করে। আপনি লোকটি
15-15 এ ভ্যান্থেমান 6


13

অবশেষে আমি পেয়েছি! কেবল ভাগ করার জন্য, কেবলমাত্র .env এর চেয়ে বেশি কনফিগারেশন রয়েছে

এটি .env

MAIL_DRIVER=smtp

MAIL_HOST=smtp.gmail.com

MAIL_PORT=587

MAIL_USERNAME=UserName@gmail.com

MAIL_PASSWORD=********

MAIL_ENCRYPTION=tls

এটির কাজ করার জন্য কনফিগারেশন / মেল.এফপি এর ঠিকানা এবং নামও ইনপুট করতে হবে।

'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 এ খুঁজে পেতে পারেন। নিশ্চিত করুন যে শংসাপত্রগুলি সেখানে রয়েছে। এটি বের করতে আমার এক সপ্তাহ লেগেছিল। আমি আশা করি এটি একদিন কাউকে সহায়তা করবে।


আপনি স্যার, একটি দুর্দান্ত বোর্ডো প্রাপ্য, অনেক ধন্যবাদ! আমি লক্ষ্য করেছি যে সেই ফাইলের মধ্যে ব্যবহারকারীর নাম এবং পাসওয়ার্ড খালি ছিলাম এমনকি শক্ত দুটিই আমি তাদের দুটি যথাযথ ফাইলগুলিতে পূরণ করেছি there সেখান থেকে, আমি জানতাম কী করতে হবে! মারসি!
গ্রেগর্ডি

ধন্যবাদ! সিরিয়াসলি আমি কোনও ক্লাবের সাথে এক ঘন্টার জন্য ডিবাগ করছি তবে এই !!! এটি
আহমদ আলফি

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

অন্যথায় বাস্তবায়নের উদ্দেশ্যে আপনি মেল থেকে .env ফাইলে এসএমটিপি শংসাপত্র যুক্ত করতে পারবেন (যেমন জিমেইল এন সব)

পরে সার্ভারটি পুনরায় চালু করতে ভুলবেন না


পরে সার্ভারটি পুনরায় চালু করার বিষয়টি নিশ্চিত করুন .. এই বাক্যটি আমার সমস্যার সমাধান করেছে।
হোস বুধ

8

এটা আমার সাথেও ঘটে।

কারণ .envফাইলটি সম্পাদনা করার সময় আমাদের সার্ভারটি পুনরায় চালু করতে হবে। কেবল বর্তমানটি বন্ধ করুন php artisan serveএবং আবার এটি শুরু করুন। এটি নিশ্চিতভাবে কাজ করবে।

এখনও কাজ না করে চেষ্টা করুন php artisan config:cache


5

ভবিষ্যতে এখানে আসা লোকদের রেফারেন্সের জন্য। আপনি এখানে তৃতীয় উত্তরে প্রদত্ত আদেশটি চালানোর পরে ( আমি এখন লারাভেল 5.3 ব্যবহার করছি )।

php artisan config:cache

আপনি এই সমস্যার মুখোমুখি হতে পারেন:

[ReflectionException]
Class view does not exist

সেক্ষেত্রে আপনার এটিকে app.php ফাইলের অধীনে আপনার সরবরাহকারীর তালিকায় আবার ম্যানুয়ালি যুক্ত করা দরকার। যান - app->config->app.php->'providers[]'এবং এটি যোগ করুন, এর মতো:

Illuminate\View\ViewServiceProvider::class,

আশা করি যে কাউকে সাহায্য করবে।


4

আমারও একই সমস্যা হয়েছে; আমার MAIL_ENCRYPTIONছিল tlsউপর mail.phpকিন্তু এটা ছিল nullউপর .envফাইল।
তাই আমি পরিবর্তিত nullকরতে tlsএবং এটা কাজ!


এই ঘটনাটি ছিল!

3

উপরের সমাধানগুলির কোনওটিই লোকালহোস্টে আমার পক্ষে কাজ করেনি। এমনকি আমি কম সুরক্ষিত অ্যাপ্লিকেশন থেকে অ্যাক্সেসের অনুমতি দিয়েছি, ডিসপ্লে আনলক ক্যাপচা মাধ্যমে অ্যাক্সেসের অনুমতি পেয়েছি এবং পিয়ারের যাচাইকরণ এবং পিয়ারের নামটি মিথ্যাতে SSL এর জন্য যাচাই করে রেখেছি।

শেষ পর্যন্ত, আমি মেলহাগের ওপেন সোর্স এসএমটিপি পরীক্ষার সমাধানটি ব্যবহার করি। নিম্নরূপ পদক্ষেপ:

  1. আপনার ওএসের জন্য মেলহগের সর্বশেষতম সংস্করণটি ডাউনলোড করুন
  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. মেলহগের ডাউনলোড করা ফাইলটি চালান
  2. ইমেইল পাঠান
  3. লোকালহোস্টে গিয়ে প্রেরিত ইমেল চেক করুন: 8025

3

এর সহজ অর্থ হ'ল আপনার সার্ভারের এসএমটিপি সার্ভারে অ্যাক্সেস নেই।

আপনি এটি করে এটি পরীক্ষা করতে পারেন:

telnet <smtpServer> <smtpPort>

আপনার অ্যাক্সেস অস্বীকৃত ত্রুটি পাওয়া উচিত।

সমাধানটি হ'ল কেবলমাত্র অন্য একটি এসএমটিপি সার্ভার ব্যবহার করা যা আপনার সার্ভার দ্বারা অ্যাক্সেস করা যায়।


2

আপনার সার্ভারটি পুনরায় চালু করা উচিত এবং এই আদেশগুলি চালানো উচিত:

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

এটা কাজ করা উচিত।


0

যদি আপনার ফলাফলগুলি dd(Config::get('mail'));শূন্য হয় তবে কেবল কমান্ডটি ব্যবহার করুন

php artisan config:clear

0

আপনার .env ফাইলগুলিতে পরিবর্তন করার পরে আমার মতামত আপনার সার্ভারটি পুনরায় চালু করুন এবং অ্যাপটিকে আবার পরিবেশন করুন। কেবল আসল ত্রুটি সম্পর্কে নিশ্চিত হওয়া। পিএইচপি কারিগর পরিষ্কার এবং পরে ক্যাশে বেশ সূক্ষ্ম কাজ করে।


-1

আপনার মতো আমারও একই সমস্যা ছিল, আমি এটি কাজ করেছিলাম।

প্রথমত, আপনাকে .env সেটিংস সঠিকভাবে সেট আপ করা হয়েছে কিনা তা দ্বিগুণ পরীক্ষা করতে হবে। এখানে আমার সেটিংস:

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

দয়া করে নিশ্চিত হয়ে নিন যে আপনার পাসওয়ার্ডটি উদ্ধৃতি :) এর মধ্যে নেই।

এবং কনফিগারেশন / মেল.এফপিতে এটিতে মন্তব্যগুলি ছাড়াই রয়েছে।

<?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,

];

আশা করি এটা তোমার জন্য কাজ করবে :)


-1

আমার ক্ষেত্রে: সার্ভারটি পুনরায় চালু করুন এবং php artisan config:clearকমান্ড চালান ।


-2
  1. আপনি মেলগুনে যান
  2. অনুমোদিত প্রাপ্তিদের ক্লিক করুন
  3. আপনি যে ইমেল ঠিকানাটিতে মেইল ​​প্রেরণ করতে চান তা যুক্ত করুন।
  4. মেল পাঠানো বার্তা যাচাই করুন।
  5. ব্রাভো! ... তুমি যেতে ভাল।

2
আমার অজ্ঞতা দয়া করে ক্ষমা করুন। উপরের উত্তরটি কীভাবে প্রশ্নে লারাভেল 5 ইমেল সমস্যা সমাধান করবে?
jww
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.