[发送邮件]如何动态切换发件人

项目需求是:不同类型的邮件使用不同的发件人
根据文档所说的,通过form来设置发件人

public function build()
{
    return $this->from('example@example.com')
                ->view('emails.orders.shipped');
}

但是这里仅仅只能设置发件人的邮箱地址和姓名,如果我的发件人包含了网易、qq邮箱,该如何动态的设置 MAIL_HOSTMAIL_PORT这些参数呢

《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 5
leo

Laravel 7 及以上支持,邮件发送《Laravel 7 中文文档》

3年前 评论

刚写了个发送邮箱验证码功能,看看能不能参考一下。

public function verificationCodes(VerificationCodeRequest $request)
    {
        $email = $request->email;
        $code = str_pad(random_int(1, 9999), 4, 0, STR_PAD_LEFT);
        $view = 'verificationCodes';
        $data = ['email'=>$email, 'code'=>$code];


        Mail::send($view, $data, function($message) use ($email) {

            $message->to($email)->subject('申请会员的验证码');
        });

        $key = 'verificationCode_'.Str::random(15);
        $expiredAt = now()->addMinutes(5);
        // 缓存验证码 5 分钟过期。
        \Cache::put($key, ['email' => $email, 'code' => $code], $expiredAt);

        return response()->json([
            'key' => $key,
            'expired_at' => $expiredAt->toDateTimeString(),
        ])->setStatusCode(201);
    }
3年前 评论
ywmelo (楼主) 3年前
Sloth (作者) 3年前

通过config()覆盖掉原来的邮箱配置

3年前 评论
ywmelo (楼主) 3年前
leo

Laravel 7 及以上支持,邮件发送《Laravel 7 中文文档》

3年前 评论

这样可以吗?

class OrderShipped
{
    public function __construct($from)
    {
        $this->from = $from;
    }
    public function build()
    {
        return $this->from($this->from)
                ->view('emails.orders.shipped');
    }
}
3年前 评论

可以参考这个

 use Illuminate\Support\Facades\Mail;
 public function SendMail($type='qq'){
        //备份原有Mailer
        $backup = Mail::getSwiftMailer();

        // 设置邮箱账号,支持qq邮箱/163邮箱/谷歌邮箱/腾讯企业邮箱
        if ($type == 'qq') {
            $transport = new \Swift_SmtpTransport('smtp.qq.com', 465, 'ssl');
            $fromName='测试';
            $username='123456@qq.com';
            $password='123456';
        } else if ($type == 'gmail') {
            $transport = new \Swift_SmtpTransport('smtp.gmail.com', 465, 'ssl');
            $fromName='';
            $username='';
            $password='';
        }  else if ($type == '163') {
            $transport = new \Swift_SmtpTransport('smtp.163.com', 465, 'ssl');
            $fromName='';
            $username='';
            $password='';
        } else if ($type == 'exmail') {
            $transport = new \Swift_SmtpTransport('smtp.exmail.qq.com', 465, 'ssl');
            $fromName='';
            $username='';
            $password='';
        } else {
            throw  new \Exception('邮箱类型不支持!','5000');
        }
        $transport->setUsername($username);
        $transport->setPassword($password);

        $mailer = new \Swift_Mailer($transport);

        Mail::setSwiftMailer($mailer);

        Mail::send('welcome',
            function ($message){
                .
                .
                .
                }
            });

        $failCount = count(Mail::failures());

        // 发送后还原
        Mail::setSwiftMailer($backup);

        return $failCount;
    }
3年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!