Laravel/XAMPP/Sendmail не изпраща поща

Имам същия проблем с XAMPP и WAMP. Не съм сигурен какво причинява този проблем, тъй като в регистрационните файлове няма абсолютно нищо.

Проверих три пъти конфигурацията си и всичко е както трябва, дори изключих защитната си стена, но нищо не се случва.

Laravel 4 хвърля това (време за изчакване) изключение: Symfony\Component\Debug\Exception\FatalErrorException

\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Transport\StreamBuffer.php165

public function readLine($sequence)
{
    if (isset($this->_out) && !feof($this->_out)) {
        $line = fgets($this->_out);
        if (strlen($line)==0) {

Тази функция Laravel 4 използва за четене на шаблонния файл. Въпреки това няма проблем с достъпа до файла, тъй като той е правилно наименуван и е в правилната папка. Методът за изпращане на пощата е този:

    Mail::send('emails.activate', array('url' => $url), function($message) {
        $message->to(trim(Input::get('email')))->subject('Account activation.');
    });

И mail.php на Laravel от конфигурационната папка:

<?php

return array(
    'driver' => 'smtp', // Changed this to mail() and sendmail same error
    'host' => 'smtp.gmail.com',
    'port' => 465,
    'from' => array('address' => '[email protected]', 'name' => 'Support Team'),
    'encryption' => 'tls',
    'username' => '****@gmail.com',
    'password' => '*****',
    'sendmail' => 'C:\xampp\sendmail\sendmail.exe -t',
);

В моя php.ini файл имам:

[mail function]
; XAMPP: Comment out this if you want to work with an SMTP Server like Mercury
SMTP = smtp.gmail.com
smtp_port = 465

; For Win32 only.
; http://php.net/sendmail-from
sendmail_from = ****@gmail.com


; XAMPP: Comment out this if you want to work with fakemail for forwarding to your mailbox (sendmail.exe in the sendmail folder)
sendmail_path = "\"C:\xampp\sendmail\sendmail.exe\" -t"

И в моя sendmail.ini имам:

smtp_server=smtp.gmail.com
smtp_port=465
smtp_ssl=auto
error_logfile=error.log
auth_username=****@gmail.com
auth_password=****
pop3_server=
pop3_username=
pop3_password=
force_sender=
force_recipient=
hostname=

Всичко съм настроил правилно, изключих защитната стена, проверих, че рутерът ми не може да го проследи така или иначе.


person Sterling Duchess    schedule 01.06.2013    source източник


Отговори (4)


Публикувах отговор тук, който може да реши това за някои.

Накратко, когато използвате порт 465, настройката за криптиране по подразбиране трябва да бъде променена от tls на ssl.

'host' => 'smtp.gmail.com',
'port' => 465, 
'encryption' => 'ssl',
person LifeQuery    schedule 21.07.2014

Вероятно сте го разбрали досега, но мисля, че проблемът е във вас

    Mail::send('emails.activate', array('url' => $url), function($message) {
    $message->to(trim(Input::get('email')))->subject('Account activation.');
});

Опитайте да го промените на:

    $to = trim(Input::get('email'));
    $subject = 'Account activation.'; //for illustration purposes
    Mail::send('emails.activate', array('url' => $url), function($message) use ($to, $subject){
    $message->to($to)->subject($subject);
});
person kJamesy    schedule 06.06.2013

Ако gmail ви блокира и не ви позволява да влезете с идентификационните си данни, опитайте това.

Влезте с вашия gmail акаунт и след това отидете на: https://accounts.google.com/b/0/DisplayUnlockCaptcha

и щракнете върху продължи и след това имате няколко минути, за да изпратите имейла си с вашия код. След това Google ще позволи влизане в този акаунт от новия източник.

person vstruhar    schedule 06.01.2015

Знам, че темата е стара, но за тези, които се интересуват. Настоящите изисквания за използване на вашия Gmail от localhost са доста различни. Можете да конфигурирате вашия Laravel .env файл, както следва

MAIL_MAILER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
[email protected]
MAIL_PASSWORD=YOURPASSWORD
MAIL_ENCRYPTION=tls

ПО ИЗБОР:

[email protected]
MAIL_FROM_NAME="${APP_NAME}"

Препоръчително е да сте конфигурирали PHP да изпраща имейли, преди да направите това на laravel. Използвам фалшив sendemail и работи. Всичко, което трябва да направите, е да конфигурирате своя sendemail.ini file.

Можете да разгледате тази публикация как да направите това https://stackoverflow.com/a/18185233/14106184

person Viceo    schedule 14.10.2020