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 с локального хоста совершенно другие. Вы можете настроить файл 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