无法在laravel 5中发送电子邮件

时间:2015-12-09 08:11:13

标签: php laravel laravel-5 sendmail

我的代码是这样的:

public function sendMail(array $data)
    { 
        $data = explode('#', $data['id']);
        $email_from = Auth::user()->email;
        $email_to = $data[4];
        $subject = 'Send Email Test';

        $data_user = ['user_name' => $data[1], 'full_name' => $data[2].' '.$data[3] ];

        $sent = Mail::send('backend.auth.success_approved', $data_user, function ($mail) use ($email_to, $email_from, $subject)
                {
                    $mail->from($email_from)
                         ->to($email_to)
                         ->subject($subject);
                });
    }  

我在mail.php中的配置:

return [
    'driver' => env('MAIL_DRIVER', 'smtp'),
    'host' => env('MAIL_HOST', 'ssl://secure.emailsrvr.com'),
    'port' => env('MAIL_PORT', 465),
    'from' => ['address' => 'myemail@chel.com', 'name' => 'myname'],
    'encryption' => env('MAIL_ENCRYPTION', 'tls'),
    'username' => env('MAIL_USERNAME', 'myemail@chel.com'),
    'password' => env('MAIL_PASSWORD', 'mypassword'),
    'sendmail' => '/usr/sbin/sendmail -bs',
    'pretend' => false,
];

有错误消息:

Swift_TransportException in StreamBuffer.php line 265: Connection could not be established with host ssl://secure.emailsrvr.com [php_network_getaddresses: getaddrinfo failed: The requested name is valid, but no data of the requested type was found. #0].

如何解决这个问题?

谢谢。

3 个答案:

答案 0 :(得分:0)

从错误消息中我认为由于某种原因无法解析邮件服务器的域(secure.emailsrvr.com)。 如果您在共享主机上,您应该询问您的托管服务提供商,如果您使用专用服务器或vps,则应该ping主机名并查看是否可以解析。

答案 1 :(得分:0)

我做了以下事情,对我有用。

  1. 在服务器上创建电子邮件帐户。现在我们有MAIL_USERNAME和MAIL_PASSWORD。
  2. 进行以下更改以在Laravel框架的.env文件中创建全局变量。

    MAIL_DRIVER=smtp
    MAIL_HOST=yourhost
    MAIL_PORT=465
    MAIL_ENCRYPTION=ssl
    MAIL_USERNAME=youremail@something.com
    MAIL_PASSWORD=yourpassword
    

    或者您可以在config / mail.php中添加上述更改。它会工作。

答案 2 :(得分:-3)

laravel 5+中的一些电子邮件参数在.env文件中定义,有时laravel不识别.env文件之外的其他参数, 首先检查您的参数是否已发送,如果没有尝试发送电子邮件到您的个人帐户并尝试更改.env文件中的参数