美文网首页
Laravel5.6发送邮件问题解决方案

Laravel5.6发送邮件问题解决方案

作者: Feng_Yikai | 来源:发表于2018-07-27 15:15 被阅读0次

    有两个解决方案:一个是使用 SSL 协议发送邮件,另一个是不使用 SSL,只使用普通的 25 号端口去发送邮件

    第一个方案更安全,但不灵活,需要修改 swift mailer 的源代码(下面主要说这个方案)

    第二个方案很简单,但不够安全

    SSL 的方案
    配置 .env文件

    MAIL_DRIVER=smtp 
    MAIL_HOST=smtp.163.com 
    MAIL_PORT=465
    MAIL_USERNAME=your_name@your_company.com
    MAIL_PASSWORD=your_password
    

    配置 config/mail.php (主要是将 encryption 的值从 tls 改成 ssl

    'from' => ['address' => '你的发件人地址', 'name' => '你的发件人名称'],
    'encryption' => 'ssl',
    

    修改 swiftmailer/lib/classes/Swift/Transport/StreamBuffer.phpestablishSocketConnection 中有个 $options = [];,只需要在它下面加上:

    $options['ssl'] = array('verify_peer' => false, 'verify_peer_name' => false, 'allow_self_signed' => true);
    

    基本完成了,现在可以发邮件了:

    namespace App\Http\Controllers;
    
    use App\Http\Controllers\Controller;
    use Illuminate\Support\Facades\Mail;
    
    class MailController extends Controller
    {
        public function send($user_email)
        {
            Mail::send('email/code', ['name' => 'name'], function($message) use ($user_email)
            {
                $message->to($user_email)->subject('content');
            });
        }
    }
    

    SSL 方案
    上面的 第 1 步 中的 MAIL_PORT 换成 25

    上面的第 2 步 中只需要注释掉 encryption 这一行

    不用修改上面的 第 3 步 中的代码

    完成

    相关文章

      网友评论

          本文标题:Laravel5.6发送邮件问题解决方案

          本文链接:https://www.haomeiwen.com/subject/yqhgmftx.html