为codeigniter的电子邮件收件人设置名称(别名)

时间:2013-06-12 23:25:02

标签: php codeigniter email

user manual of Codeigniter's Email Library电子邮件功能参考下,您会看到$this->email->from()有两个参数:电子邮件地址以及设置为'Your Name'的{​​{1}}第二个参数。

但是当谈到$this->email->to()时,我们无法设置收件人的姓名。虽然我们可以在现实世界中看到(例如gmail),但请求已经按照预期得到了回答。

3 个答案:

答案 0 :(得分:2)

不幸的是,函数to()没有提供设置收件人姓名的任何方法。

但是,您可以扩展Email类并手动添加其他功能,例如设置名称。

否则您应该使用其他工具发送电子邮件。例如PHPMailer

答案 1 :(得分:2)

请不要浪费时间尝试使用以下代码传递收件人的姓名:

 $this->email->to('John Smith <john@example.com>');

因为 to()函数清除了用clean_email()传递的所有参数

    public function to($to)
    {
        $to = $this->_str_to_array($to);
        $to = $this->clean_email($to);
    // ...



/**
 * Clean Extended Email Address: Joe Smith <joe@smith.com>
 *
 * @access  public
 * @param   string
 * @return  string
 */
public function clean_email($email)
{
    if ( ! is_array($email))
    {
        if (preg_match('/\<(.*)\>/', $email, $match))
        {
            return $match['1'];
        }
        else
        {
            return $email;
        }
    }
    // ...

答案 2 :(得分:1)

我刚刚在Codeigniter中找到了绕过清洁过程的技巧。 您应该手动设置电子邮件标题,而不是使用$this->email->to()

$this->email->set_header('To', '"' . $recipient_display_name . '" <'. $recipient_email . '>');

我还没有提供收件人电子邮件列表的测试,但是我认为想法是相同的。