Giriş yapmadınız.

Duyuru

TÜRKÇE KİTAP DUYURUSU:
Laravel 5 : Laravel 5.1 Güzelliği (Türkçe)
Vue.js 2 : Vue.js 2 Majesteleri (Türkçe)

#1 03.12.2018 14:08:21

atagul98
Üye
Kayıtlı: 29.10.2018
Mesajlar: 15

Laravel Mailtrap Bağlantı Sorunu

Sent password reset'e bastığım zaman böyle bir hatayla karşılaşıyorum.
7fQByJ.png

Çevrimdışı

#2 05.12.2018 21:45:39

mgsmus
Moderatör
Yer: Mersin
Kayıtlı: 17.08.2013
Mesajlar: 1,360
Website

Yanıt: Laravel Mailtrap Bağlantı Sorunu

.env dosyasında mail bilgilerini girdiniz mi? Şu kısım:

MAIL_DRIVER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null

Eğer bu kısmı doldurmadıysanız mailin çalışabilmesi için bu kısmı doldurmanız lazım. Gmail kullanabilirsiniz mesela:

MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
[email protected]
MAIL_PASSWORD=şifreniz
MAIL_ENCRYPTION=tls
[email protected]
MAIL_FROM_NAME="Adınız ya da başka bir isim"

Ayrıca config:cache yaptıysanız config:clear ile önbelleğe alınan ayarları silmeniz lazım.
Zaten route:cache, config:cache gibi işlemleri geliştirme aşamasında değil sunucuda, uygulama yayında iken hızlandırmak için yapıyoruz. Bunları kendi bilgisayarınızda geliştirme yaparken kullanmayın, unuttuğunuzda böyle sorunlar çıkabiliyor. O yüzden geliştirme ortamında cache:clear ile önbelleğe alınan her şeyi silin.

Uygulamanızı sunucuya gönderirken .env dosyasını göndermiyorsunuz. Sunucuda kullanılacak ayarları config klasöründeki dosyalarda yapıyorsunuz.
Örneğin config/mail.php:

/*
|--------------------------------------------------------------------------
| Global "From" Address
|--------------------------------------------------------------------------
|
| You may wish for all e-mails sent by your application to be sent from
| the same address. Here, you may specify a name and address that is
| used globally for all e-mails that are sent by your application.
|
*/

'from' => [
    'address' => env('MAIL_FROM_ADDRESS', '[email protected]'),
    'name' => env('MAIL_FROM_NAME', 'Benim Sitem'),
],

Burada geliştirme ortamında .env dosyasındaki MAIL_FROM_ADDRESS ve MAIL_FROM_NAME alanları kullanılacak.
Sunucuda ise [email protected] ve Benim Sitem değerleri kullanılacak demek.

Son düzenleyen mgsmus (05.12.2018 21:48:30)

Çevrimiçi

#3 06.12.2018 19:08:43

atagul98
Üye
Kayıtlı: 29.10.2018
Mesajlar: 15

Yanıt: Laravel Mailtrap Bağlantı Sorunu

mgsmus yazdı:

.env dosyasında mail bilgilerini girdiniz mi? Şu kısım:

MAIL_DRIVER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null

Eğer bu kısmı doldurmadıysanız mailin çalışabilmesi için bu kısmı doldurmanız lazım. Gmail kullanabilirsiniz mesela:

MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
[email protected]
MAIL_PASSWORD=şifreniz
MAIL_ENCRYPTION=tls
[email protected]
MAIL_FROM_NAME="Adınız ya da başka bir isim"

Ayrıca config:cache yaptıysanız config:clear ile önbelleğe alınan ayarları silmeniz lazım.
Zaten route:cache, config:cache gibi işlemleri geliştirme aşamasında değil sunucuda, uygulama yayında iken hızlandırmak için yapıyoruz. Bunları kendi bilgisayarınızda geliştirme yaparken kullanmayın, unuttuğunuzda böyle sorunlar çıkabiliyor. O yüzden geliştirme ortamında cache:clear ile önbelleğe alınan her şeyi silin.

Uygulamanızı sunucuya gönderirken .env dosyasını göndermiyorsunuz. Sunucuda kullanılacak ayarları config klasöründeki dosyalarda yapıyorsunuz.
Örneğin config/mail.php:

/*
|--------------------------------------------------------------------------
| Global "From" Address
|--------------------------------------------------------------------------
|
| You may wish for all e-mails sent by your application to be sent from
| the same address. Here, you may specify a name and address that is
| used globally for all e-mails that are sent by your application.
|
*/

'from' => [
    'address' => env('MAIL_FROM_ADDRESS', '[email protected]'),
    'name' => env('MAIL_FROM_NAME', 'Benim Sitem'),
],

Burada geliştirme ortamında .env dosyasındaki MAIL_FROM_ADDRESS ve MAIL_FROM_NAME alanları kullanılacak.
Sunucuda ise [email protected] ve Benim Sitem değerleri kullanılacak demek.

QgP6p5.png
hocam bütün bilgiler doğru olduğuna eminim .
Daha önceden çalışıyordu.Şuan çalışmıyor.
Bu kısmı anlamadım tam olarak biraz daha açıklarsanız sevinirim.
Uygulamanızı sunucuya gönderirken .env dosyasını göndermiyorsunuz. Sunucuda kullanılacak ayarları config klasöründeki dosyalarda yapıyorsunuz.
Örneğin config/mail.php:

/*
|--------------------------------------------------------------------------
| Global "From" Address
|--------------------------------------------------------------------------
|
| You may wish for all e-mails sent by your application to be sent from
| the same address. Here, you may specify a name and address that is
| used globally for all e-mails that are sent by your application.
|
*/

'from' => [
    'address' => env('MAIL_FROM_ADDRESS', '[email protected]'),
    'name' => env('MAIL_FROM_NAME', 'Benim Sitem'),
],
Burada geliştirme ortamında .env dosyasındaki MAIL_FROM_ADDRESS ve MAIL_FROM_NAME alanları kullanılacak.
Sunucuda ise [email protected] ve Benim Sitem değerleri kullanılacak demek.

Çevrimdışı

#4 06.12.2018 19:40:57

mgsmus
Moderatör
Yer: Mersin
Kayıtlı: 17.08.2013
Mesajlar: 1,360
Website

Yanıt: Laravel Mailtrap Bağlantı Sorunu

Uygulamanın kök dizininde .env dosyası var. Laravel kurulduğunda .env.example dosyasının kopyasından .env adı ile bu dosyayı oluşturur.

Bu dosyanın içerisinde framework ayarları var. Uygulama ayarları, veritabanı, mail, pusher vs...

Buraya biz kendi ayarlarımızı da ekleyebiliyoruz. GOOGLE_API_KEY=AIuf67557sjkh435bbnb6 gibi

Bu ayarlara framework içerisinde env() yardımcı fonksiyonu ile ulaşıyoruz. Örneğin env('GOOGLE_API_KEY'); gibi

Yalnız bu .env dosyası sadece lokal ortamda, yani geliştirme ortamında, yani kendi bilgisayarınızda devreye giriyor. O yüzden sunucuya göndermiyorsunuz.

Genellikle sunucuda (prod/production environment) kullanılan ayarlar ile (örneğin veritabanı adı, şifresi vs) geliştirme ortamındaki (dev/development environment) ayarlar farklı olur. Sürekli ayar dosyaları güncellenmesin diye Laravel bu şekilde ortam-duyarlı değişken sistemi kullanıyor.

Şimdi benim bilgisayarımda veritabanı şifresi ABC123 ama sunucuda XYZ866. Böyle, env şeklinde bir sistem olmadığını düşünün. Ben bu dosyayı sunucuya gönderdikten sonra bilgisayarımdakini tekrar ABC123 yapmak zorunda kalırım. GIT gibi bir versiyon kontrolü kullanıyorsam bu bana sıkıntı çıkarır.

O yüzden bu .env dosyası aynı anda kendi bilgisayarınız için ayrı, sunucu için ayrı ayar yapmanıza olanak sağlıyor.

env() yardımcı fonksiyonu 2 parametre alır. İlki .env dosyasındaki değişken adı, ikincisi ise öyle bir değişken yoksa yerine çekilecek bir öntanımlı değer.

Örneğin config/database.php dosyasını açın bakın:

'mysql' => [
    'driver' => 'mysql',
    'host' => env('DB_HOST', '127.0.0.1'),
    'port' => env('DB_PORT', '3306'),
    'database' => env('DB_DATABASE', 'server_db'),
    'username' => env('DB_USERNAME', 'server_user'),
    'password' => env('DB_PASSWORD', 'XYZ866'),
    'unix_socket' => env('DB_SOCKET', ''),
    'charset' => 'utf8mb4',
    'collation' => 'utf8mb4_unicode_ci',
    'prefix' => '',
    'strict' => false,
    'engine' => 'InnoDB',
],

Burada örneğin
'database' => env('DB_DATABASE', 'server_db'), // Kendi bilgisayarım ise .env dosyasındaki DB_DATABASE değişkenini kullan, sunucu ise veritabanı adı server_db olsun demek
'username' => env('DB_USERNAME', 'server_user'), // Kendi bilgisayarım ise .env dosyasındaki DB_USERNAME değişkenini kullan, sunucu ise kullanıcı adı server_user olsun demek
'password' => env('DB_PASSWORD', 'XYZ866'), // Kendi bilgisayarım ise .env dosyasındaki DB_PASSWORD değişkenini kullan, sunucu ise veritabanı şifresi XYZ866 demek

Yani anlayacağınız .env dosyasını biz gerçek ayarlar için kullanmıyoruz.

Ben de sizin mailtrap.io kullanmadığınızı varsayarak ayarları .env dosyasında yaptığınızı, config/mail.php de sunucu ayarları yapmadığınızı düşünüyorum.

Diğeri düşüncem ise .env dosyasında ayarları değiştirmeden önce config:cache yayıp ayarları önbelleğe aldınız, sonra .env dosyasını değiştirdiniz ama tekrar config:cache yapmadığınız için eski ayarlar devrede. O yüzden diğer yazımda önbelleği temizleyen komutları verdim.

Başka bir sorun da olabilir ama ayrıntılı bilgi vermediğiniz için düşüncem bu.

Çevrimiçi

Forum alt kısmı