【问题标题】:Setting a name (alias) for codeigniter's email recipient为 codeigniter 的电子邮件收件人设置名称(别名)
【发布时间】:2013-06-09 05:53:35
【问题描述】:

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

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

【问题讨论】:

    标签: php codeigniter email


    【解决方案1】:

    我刚刚发现了一个绕过 Codeigniter 中的清理过程的技巧。 不要使用$this->email->to(),您应该手动设置电子邮件标题。

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

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

    【讨论】:

      【解决方案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;
              }
          }
          // ...
      

      【讨论】:

        【解决方案3】:

        很遗憾,to() 函数不提供任何设置收件人姓名的方法。

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

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

        【讨论】:

        • +1 非常感谢,很抱歉没有两个答案可以标记为接受。无论如何,我尊重你的时间和回答。
        猜你喜欢
        • 1970-01-01
        • 2021-04-13
        • 2012-03-31
        • 1970-01-01
        • 2011-11-01
        • 2016-06-18
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多