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

CodeIgniter中如何仅向勾选复选框的联系人发送邮件

我来帮你搞定这个需求,其实核心逻辑就是把选中的联系人ID传到后台,再针对性获取他们的邮箱发送邮件,分这几步来实现:

1. 完善前端复选框与表单结构

你已经用array_unshift给表格加了复选框列,现在要确保每个复选框的命名是数组形式,这样提交后能正确拿到多个选中的ID。调整表格数据的构建逻辑:

// 假设你从模型获取的联系人数据是$contacts数组
foreach ($contacts as &$row) {
    // 给每行开头插入带正确命名的复选框
    array_unshift($row, '<input type="checkbox" name="contact_ids[]" value="' . $row['id'] . '">');
}

// 把整个表格包裹在表单里,指定提交到控制器的处理方法
echo form_open('your_controller/send_selected_emails');
// 输出CodeIgniter生成的表格
echo $this->table->generate($contacts);
// 添加提交按钮
echo form_submit('submit_btn', '发送邮件给选中联系人');
echo form_close();
2. 控制器中处理表单提交

在你的控制器里新增一个方法,负责接收选中的ID、调用模型获取数据,最终发送邮件:

public function send_selected_emails() {
    // 检查是否有选中的联系人ID
    if ($this->input->post('contact_ids')) {
        $selected_ids = $this->input->post('contact_ids');
        
        // 加载所需的模型和邮件库
        $this->load->model('Contacts_model');
        $this->load->library('email');
        
        // 从模型获取选中联系人的邮箱信息
        $target_contacts = $this->Contacts_model->get_selected_contacts($selected_ids);
        
        // 配置邮件基础信息(根据你的实际需求调整)
        $this->email->from('your_email@example.com', '你的名称');
        $this->email->subject('专属邮件通知');
        $this->email->message('这是发送给选中联系人的邮件内容');
        
        // 批量添加收件人
        foreach ($target_contacts as $contact) {
            $this->email->to($contact['email']);
        }
        
        // 执行发送并反馈结果
        if ($this->email->send()) {
            $this->session->set_flashdata('success', '邮件已成功发送给选中联系人!');
            redirect('your_controller/display_contacts'); // 跳回联系人列表页
        } else {
            $this->session->set_flashdata('error', '邮件发送失败:' . $this->email->print_debugger());
            redirect('your_controller/display_contacts');
        }
    } else {
        $this->session->set_flashdata('warning', '请至少选择一个联系人!');
        redirect('your_controller/display_contacts');
    }
}
3. 模型中实现选中联系人的查询逻辑

在Contacts_model里添加一个方法,根据传入的ID数组,安全获取对应的联系人邮箱:

public function get_selected_contacts($contact_ids) {
    // 使用where_in筛选指定ID的联系人,CodeIgniter会自动处理SQL注入防护
    $this->db->where_in('id', $contact_ids);
    // 只查询需要的email字段,减少数据传输
    $query = $this->db->get('contacts'); // 替换成你的联系人表名
    
    // 返回查询结果的数组格式
    return $query->result_array();
}
额外注意事项
  • 确保你的联系人表中有id和email字段,根据实际表结构调整字段名
  • 提前在config/email.php中配置好邮件发送的SMTP参数,避免发送失败
  • 如果选中的联系人数量较多,建议分批发送邮件,避免请求超时
  • 可以给前端加个“全选”复选框,用JS实现一键选中所有联系人,提升用户体验

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 03:35:55