提问者:小点点

Codeigniter邮件枪收件人变量


我想用Codeigniter、Mailgun和SMTP向许多收件人发送电子邮件。

我的设置是

         $config['mailtype'] = 'html';
      $config['charset'] = 'utf-8';

      $config['protocol'] = 'smtp';
      $config['smtp_host'] = 'ssl://smtp.mailgun.org';
      $config['smtp_port'] = 465;
      $config['smtp_user'] = '[your Mailgun SMTP username]';
      $config['smtp_pass'] = '[your Mailgun SMTP password]';
      $config['smtp_timeout'] = '4';
      $config['crlf'] = '\n';
      $config['newline'] = '\r\n';

$arr = array(
 'firstEmail@email.com' => array(
      'id' => '3123213',
      ),
  'secondEmail@email.com' => array(
      'id' => '423423423',
   )   
);

$this->email->set_header('X-Mailgun-Recipient-Variables',json_encode($arr));
$this->email->from('myEmail@email.com');
$this->email->to('firstEmail@email.com,secondEmail@email.com');
$this->email->subject("Subject");
$message = 'Message';
$this->email->message($message);
$this->email->send();

以上是我的设置。电子邮件被发送,但每个收件人可以看到其他收件人-我想是因为我设置错误的X-邮件-收件人-变量。

这里有说明https://documentation.mailgun.com/user_manual.html#batch-但是我真的不知道我做错了什么。

如有任何帮助,我将不胜感激


共1个答案

匿名用户

您正在向多个收件人发送,所以是的他们会看到彼此。

你需要做的是用你的电子邮件创建一个数组,然后做一个foreach循环,一次只向一个收件人发送电子邮件。

试试这个:

$addresses = array('firstEmail@email.com','secondEmail@email.com');
foreach ($addresses as $to){
    $this->email->set_header('X-Mailgun-Recipient-Variables',json_encode($arr));
    $this->email->from('myEmail@email.com');
    $this->email->subject("Subject");
    $message = 'Message';
    $this->email->message($message);    
    $this->email->to($to);
    $this->email->send();

    $this->email->clear();
}

我忘了clear()。(循环中的电子邮件使用Codeigniter中的电子邮件类发送相同的文件)这是重置变量所必需的。

相关问题