You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Laravel中为直接发送的Nexmo SMS添加用户名

Laravel 框架下为Nexmo(Vonage)短信添加用户名的实现方案

首先确保你已经完成基础配置:安装laravel/vonage-notification-channel扩展,且在.env文件中正确配置VONAGE_KEY、VONAGE_SECRET、VONAGE_SMS_FROM三个核心参数。


方案1:通过通知类发送(官方推荐)

  • 生成通知类
    运行Artisan命令:
    php artisan make:notification CustomSmsNotification
    
  • 修改通知类逻辑,注入用户实例拼接用户名
    编辑app/Notifications/CustomSmsNotification.php文件:
    <?php
    
    namespace App\Notifications;
    
    use Illuminate\Bus\Queueable;
    use Illuminate\Notifications\Notification;
    use Illuminate\Notifications\Messages\VonageMessage;
    use App\Models\User;
    
    class CustomSmsNotification extends Notification
    {
        use Queueable;
    
        protected $user;
    
        // 构造方法接收用户实例
        public function __construct(User $user)
        {
            $this->user = $user;
        }
    
        public function via($notifiable)
        {
            return ['vonage'];
        }
    
        public function toVonage($notifiable)
        {
            // 拼接短信内容时直接插入用户名字段
            return (new VonageMessage)
                ->content("您好{$this->user->name},您的账户本次登录验证码为123456,5分钟内有效。");
        }
    }
    
  • 触发发送
    拿到目标用户实例后调用notify方法即可:
    $targetUser = User::find(1); // 替换为实际获取用户的逻辑
    $targetUser->notify(new CustomSmsNotification($targetUser));
    

方案2:直接调用Facade发送

如果不需要走Laravel通知体系,可直接调用Vonage facade手动构造内容:

use Illuminate\Support\Facades\Vonage;
use App\Models\User;

// 获取目标用户
$user = User::where('phone', '13xxxxxxxxx')->first();
// 构造带用户名的短信内容
$smsContent = "您好{$user->name},您订阅的服务已成功续费,有效期至2024年12月31日。";

// 执行发送
Vonage::sms()->send([
    'to' => '86' . $user->phone, // 国内手机号需加86前缀
    'from' => config('vonage.sms_from'),
    'text' => $smsContent,
]);

注意:如果使用的是旧版本Nexmo SDK,将上述代码中的Vonage替换为Nexmo即可,调用逻辑完全一致。手机号必须携带对应国家区号,否则会出现发送失败的问题。

内容的提问来源于stack exchange,提问作者Francis O. Manzolo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 18:18:01