Laravel 9订阅场景下无法分别向用户与管理员发送独立邮件
实现联系表单双邮件发送:用户确认+管理员提醒
当前你的代码是给用户和管理员发送同一模板的邮件,要实现不同内容的两封邮件,需要拆分发送逻辑并使用独立的邮件视图,具体步骤如下:
1. 创建两个邮件视图文件
在resources/views目录下新增两个Blade模板:
用户订阅确认模板(user_subscription_confirmation.blade.php)
用于给用户发送感谢订阅的确认邮件:
<h1>您好,{{ $name }}!</h1> <p>感谢您的订阅,我们会尽快处理您的请求。</p> <p>您的订阅主题:{{ $subject }}</p>
管理员提醒模板(admin_subscription_notification.blade.php)
用于给管理员发送包含用户信息的提醒邮件:
<h1>新用户订阅提醒</h1> <p>用户姓名:{{ $name }}</p> <p>用户邮箱:{{ $email }}</p> <p>用户电话:{{ $phone }}</p> <p>订阅主题:{{ $subject }}</p> <p>用户留言:{{ $message }}</p>
2. 修改ContactController中的邮件发送逻辑
拆分原有的单次发送逻辑,分别调用Mail::send发送两封独立的邮件:
public function handleContactForm(Request $request) { $input = $request->all(); // 发送给用户的订阅确认邮件 \Mail::send('user_subscription_confirmation', [ 'name' => $input['name'], 'subject' => $input['subject'], ], function($message) use ($request) { // 建议使用公司官方邮箱作为发件人,避免邮件被标记为垃圾邮件 $message->from('your-company-email@example.com', 'Carrez Conseil'); $message->to($request->email, $request->name) ->subject('感谢您的订阅 | Carrez Conseil'); }); // 发送给管理员的提醒邮件 \Mail::send('admin_subscription_notification', [ 'name' => $input['name'], 'email' => $input['email'], 'phone' => $input['phone'], 'subject' => $input['subject'], 'message' => $input['message'], ], function($message) use ($request) { $message->from('your-company-email@example.com', 'Carrez Conseil'); $message->to('abde*******@gmail.com', 'Admin') ->subject('新用户订阅提醒 | Carrez Conseil'); }); return redirect()->back()->with(['success' => 'Contact Form Submit Successfully']); }
关键注意事项
- 替换代码中的
your-company-email@example.com为你的官方业务邮箱,不要使用用户提交的邮箱作为发件人,否则大概率会被邮件服务商判定为垃圾邮件。 - 确保Laravel的邮件配置(
config/mail.php)已正确设置,比如SMTP服务器、端口、账号密码等,保证邮件能正常发送。 - 可以根据需求自定义两封邮件的主题和内容,让用户和管理员收到的信息更贴合各自的需求。
内容的提问来源于stack exchange,提问作者Abdellah Hajjam
相关产品推荐
相关产品推荐

