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

Laravel 9中使用Mailchimp实现下单后自动发送交易邮件

在Laravel 9中通过Mailchimp Transactional API发送购买确认邮件

以下是完整的实现流程,基于你已持有Mailchimp Transactional API密钥的前提:

1. 配置环境变量

在项目根目录的.env文件中添加API密钥配置:

MAILCHIMP_TRANSACTIONAL_APIKEY=你的Mailchimp交易API密钥

注意:请求地址中的us12需要替换为你Mailchimp账号对应的服务器前缀(可在Mailchimp后台API设置页查看)。

2. 编写邮件发送逻辑

将以下代码嵌入到订单完成的业务流程中(比如支付成功回调、订单创建完成的控制器方法):

use Illuminate\Support\Facades\Http;

// 示例变量,实际需从订单流程中获取
$customerEmail = 'customer@example.com';
$orderDetails = [
    'firstName' => '张',
    'lastName' => '三',
    'orderId' => 'ORD-20240520-001',
    'totalAmount' => 199.99,
    'businessName' => '帝国网络',
    'businessNature' => '互联网服务',
    'customerPhone' => '13800138000'
];
$products = [
    [
        'productName' => '年度会员套餐',
        'productPrice' => 199.99
    ]
];

// 调用Mailchimp API发送邮件
$response = Http::withHeaders([
    'Authorization' => 'Basic ' . base64_encode('apikey:' . env('MAILCHIMP_TRANSACTIONAL_APIKEY')),
    'Content-Type' => 'application/json',
])->post('https://us12.api.mailchimp.com/3.0/messages/send', [
    'message' => [
        'subject' => '购买确认邮件',
        'from_email' => 'info@imperialinternet.com',
        'to' => [
            ['email' => $customerEmail],
        ],
        'html' => view('emails.purchase_confirmation', compact('orderDetails', 'products'))->render(),
        // 可选:添加纯文本版本,适配不支持HTML的邮件客户端
        'text' => "尊敬的{$orderDetails['firstName']}{$orderDetails['lastName']},感谢您的购买!\n订单ID:{$orderDetails['orderId']}\n总金额:${$orderDetails['totalAmount']}"
    ],
]);

// 可选:处理API响应
if ($response->successful()) {
    // 邮件发送成功,可记录日志或执行后续逻辑
} else {
    // 邮件发送失败,记录错误信息
    $errorInfo = $response->json();
    \Log::error('Mailchimp邮件发送失败', $errorInfo);
}

3. 创建邮件视图模板

在resources/views/emails/目录下新建purchase_confirmation.blade.php文件,内容如下:

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>购买确认</title>
    <style>
        body { font-family: Arial, sans-serif; line-height: 1.6; max-width: 600px; margin: 0 auto; padding: 20px; }
        h1, h2 { color: #2c3e50; }
        p { margin: 8px 0; }
    </style>
</head>
<body>
    <h1>购买确认</h1>
    <p>尊敬的 {{ $orderDetails['firstName'] }} {{ $orderDetails['lastName'] }}:</p>
    <p>感谢您的购买!以下是您的订单详情:</p>
    
    <h2>订单信息</h2>
    <p><strong>订单ID:</strong> {{ $orderDetails['orderId'] }}</p>
    <p><strong>总金额:</strong> ${{ $orderDetails['totalAmount'] }}</p>
    <!-- 可补充下单时间、支付方式等信息 -->

    <h2>商家信息</h2>
    <p><strong>商家名称:</strong> {{ $orderDetails['businessName'] }}</p>
    <p><strong>商家类型:</strong> {{ $orderDetails['businessNature'] }}</p>
    <!-- 可补充商家地址、联系方式等信息 -->

    <h2>客户信息</h2>
    <p><strong>联系邮箱:</strong> {{ $orderDetails['customerEmail'] }}</p>
    <p><strong>联系电话:</strong> {{ $orderDetails['customerPhone'] }}</p>
    <!-- 可补充收货地址等信息 -->

    <h2>产品详情</h2>
    @foreach ($products as $product)
        <p><strong>产品名称:</strong> {{ $product['productName'] }}</p>
        <p><strong>产品价格:</strong> ${{ $product['productPrice'] }}</p>
        <!-- 可补充产品规格、数量等信息 -->
    @endforeach
</body>
</html>

提示:如果希望模板中使用$order而非$orderDetails,只需将代码中的compact('orderDetails', 'products')改为['order' => $orderDetails, 'products' => $products]即可。

关键注意事项

  • 服务器前缀替换:必须将请求地址中的us12换成你自己Mailchimp账号对应的服务器编号,否则API请求会失败。
  • 依赖引入:确保控制器顶部已引入Illuminate\Support\Facades\Http。
  • 错误处理:建议保留响应判断逻辑,避免邮件发送失败时无感知,可将错误信息写入日志。
  • 响应式适配:邮件模板添加基础样式,确保在手机、邮箱客户端中显示正常。

内容的提问来源于stack exchange,提问作者hassan javaid

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 23:58:12