我想用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-但是我真的不知道我做错了什么。
如有任何帮助,我将不胜感激
您正在向多个收件人发送,所以是的他们会看到彼此。
你需要做的是用你的电子邮件创建一个数组,然后做一个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中的电子邮件类发送相同的文件)这是重置变量所必需的。