簡體   English   中英

使用數據庫中的數組數據將電子郵件發送給多個收件人

[英]using array data from database for send email to multiple recipients codeigniter

我嘗試將電子郵件發送給多個收件人。 我將收件人輸入到數組中,如下所示:

$recipients = array(
            'email1@host.com',
            'email2@host.com',
            'email3@host.com'
        );

而且效果很好。

現在,我需要獲取電子郵件地址表單數據庫,當我運行它時,它顯示錯誤:

遇到PHP錯誤

嚴重程度:警告

消息:preg_match()期望參數2為字符串,給定數組

文件名:libraries / Email.php

行號:795

我試圖從數據庫中查看該數組,它看起來像這樣:

Array ( [0] => Array ( [email] => vikki2@afteroffice.com ) [1] => Array ( [email] => nanapuspita05@hotmail.com ) )

這是發送電子郵件的功能:

function send_bulk_mail() {
        $from = 'email@email.com';
        $to = 'email1@email.com';
        $search_by = $this->input->post('search_by');
        $search_field = $this->input->post('search_field');
        $recipients = $this->company_model->get_email($search_by, $search_field);;
        $subject = $this->input->post('subject');
        $message = $this->input->post('message');

        $this->load->library('email');
        $this->email->from($from);
        $this->email->to($to);
        $this->email->bcc($recipients);
        $this->email->subject($subject);
        $this->email->message($message);
        $this->email->send();

        redirect(base_url('index.php/company'));
    }

有什么解決方案來更改陣列嗎? 或更改libraries/email.php的規則

這是libraries / email.php中的函數:

public function clean_email($email)
    {
        if ( ! is_array($email))
        {
            if (preg_match('/\<(.*)\>/', $email, $match))
            {
                return $match['1'];
            }
            else
            {
                return $email;
            }
        }

        $clean_email = array();

        foreach ($email as $addy)
        {
            if (preg_match( '/\<(.*)\>/', $addy, $match))
            {
                $clean_email[] = $match['1'];
            }
            else
            {
                $clean_email[] = $addy;
            }
        }

        return $clean_email;
    }

謝謝...

從DB檢索的$ recipients是一個數組,每個元素是一個數組 ,而下面描述的$ recipients是一個數組,每個元素是一個字符串 像這樣從數據庫檢索時,嘗試使每個元素都是一個字符串的數組:

$recipient_array = $this->company_model->get_email($search_by, $search_field);
$recipients = array();
foreach($recipient_array as $key => $value) {
     $recipients[] = $value['email'];
}

preg_match需要兩個字符串,然后是一個數組。 http://php.net/manual/zh/function.preg-match.php )。 該錯誤似乎表明它沒有獲得格式正確的數組作為第二個參數。

根據數組的正確格式( http://php.net/manual/en/function.array.php )與數組輸出相比,似乎您給它的數組是用'email枚舉的數組索引。 (很像所提供鏈接中的“水果”示例)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM