CodeIgniter 的电子邮件可传递性问题。我的代码 returns 电子邮件已发送,但未送达 vps 服务器上的收件人
Issues with email deliverability with CodeIgniter. my code returns email sent, but doesn't get delivered to the recipient on a vps server
这是我的代码。我已尝试使用 'mail' 作为协议,但仍未交付。但它确实可以在本地主机和其他服务器上完美交付。但是在这个特定的 vps 服务器上,它没有。提前致谢。
$config = array(
'protocol' => 'smtp',
'smtp_host' => 'ssl://smtp.googlemail.com',
'smtp_port' => 465,
'smtp_user' => 'myemail@gmail.com',
'smtp_pass' => '***********',
'smtp_timeout' => 10,
'mailtype' => 'html',
'starttls' => true,
'newline' => "\r\n",
);
$this->load->library('email');
$this->email->initialize($config);
$this->email->from($sender);
$this->email->to($email);
$this->email->subject($subject);
$this->email->message($mailToSend);
$flag = $this->email->send();
if ($flag) {
return $flag;
} else {
return false;
}
删除
$this->email->initialize($config);
行并让 Codeigniter 使用它的默认参数。
或者使用这个配置
$config['useragent'] = 'PHPMailer';
$config['protocol'] = 'mail';
$config['mailpath'] = '/usr/sbin/sendmail';
$config['smtp_host'] = 'localhost';
$config['smtp_user'] = '';
$config['smtp_pass'] = '';
$config['smtp_port'] = 25;
$config['smtp_timeout'] = 30;
$config['smtp_crypto'] = '';
$config['smtp_debug'] = 0;
$config['smtp_auto_tls'] = true;
$config['smtp_conn_options'] = array();
$config['wordwrap'] = true;
$config['wrapchars'] = 76;
$config['mailtype'] = 'html';
$config['charset'] = null;
$config['validate'] = true;
$config['priority'] = 3;
$config['crlf'] = "\n";
$config['newline'] = "\n";
$config['bcc_batch_mode'] = false;
$config['bcc_batch_size'] = 200;
$config['encoding'] = '8bit';
$this->email->initialize($config);
我收到了,它似乎可以发送邮件,但问题是它没有发送给收件人。相反,它将它发送到网络邮件。
$this->load->library('email');
$config['mailtype'] = 'html';
$config['protocol'] = 'sendmail';
$config['smtp_port'] = '465';
$config['mailpath'] = '/usr/sbin/sendmail';
$this->email->initialize($config);
$this->email->message($mailToSend);
$this->email->subject($subject);
$this->email->from($sender);
$this->email->reply_to("admin@domain.com");
$this->email->to($email);
// Set recipients
$this->email->bcc_batch_mode = true;
$this->email->bcc_batch_size = 50;
$this->email->bcc("admin@domain.com);
set_time_limit(0);
ignore_user_abort(true);
// Send this mailing
$flag = $this->email->send();
if ($flag) {
return $flag;
} else {
return false;
}
[已解决]
问题来自邮件 headers。我没有设置 headers。这是一个工作示例
$config = array(
'protocol' => 'sendmail',
'smtp_host' => 'ssl://smtp.googlemail.com',
'smtp_port' => '465',
'smtp_user' => 'me@gmail.com',
'smtp_pass' => '****',
'smtp_timeout' => 50,
'mailtype' => 'html',
'starttls' => true,
'charset' => 'utf-8',
'protocol' => 'sendmail',
'mailpath' => '/usr/sbin/sendmail',
'charset' => 'iso-8859-1',
'wordwrap' => TRUE,
);
$this->load->library('email');
$this->email->initialize($config);
$this->email->set_header('X-Mailer', 'CodeIgniter');
$this->email->set_header('X-Priority', '1');
$this->email->set_header('Subject', $subject);
$this->email->set_header('Mime-Version', '1.0');
$this->email->set_header('Importance', 'High');
$this->email->set_header('X-MSMail-Priority', 'High');
$this->email->set_newline("\r\n");
$this->email->from('me@mail.com', $sender);
$this->email->to($email);
$this->email->cc('me@mail.com');
$this->email->subject($subject);
$this->email->message($mailToSend);
$flag = $this->email->send();
if ($flag) {
return $flag;
} else {
return false;
}
这是我的代码。我已尝试使用 'mail' 作为协议,但仍未交付。但它确实可以在本地主机和其他服务器上完美交付。但是在这个特定的 vps 服务器上,它没有。提前致谢。
$config = array(
'protocol' => 'smtp',
'smtp_host' => 'ssl://smtp.googlemail.com',
'smtp_port' => 465,
'smtp_user' => 'myemail@gmail.com',
'smtp_pass' => '***********',
'smtp_timeout' => 10,
'mailtype' => 'html',
'starttls' => true,
'newline' => "\r\n",
);
$this->load->library('email');
$this->email->initialize($config);
$this->email->from($sender);
$this->email->to($email);
$this->email->subject($subject);
$this->email->message($mailToSend);
$flag = $this->email->send();
if ($flag) {
return $flag;
} else {
return false;
}
删除
$this->email->initialize($config);
行并让 Codeigniter 使用它的默认参数。 或者使用这个配置
$config['useragent'] = 'PHPMailer';
$config['protocol'] = 'mail';
$config['mailpath'] = '/usr/sbin/sendmail';
$config['smtp_host'] = 'localhost';
$config['smtp_user'] = '';
$config['smtp_pass'] = '';
$config['smtp_port'] = 25;
$config['smtp_timeout'] = 30;
$config['smtp_crypto'] = '';
$config['smtp_debug'] = 0;
$config['smtp_auto_tls'] = true;
$config['smtp_conn_options'] = array();
$config['wordwrap'] = true;
$config['wrapchars'] = 76;
$config['mailtype'] = 'html';
$config['charset'] = null;
$config['validate'] = true;
$config['priority'] = 3;
$config['crlf'] = "\n";
$config['newline'] = "\n";
$config['bcc_batch_mode'] = false;
$config['bcc_batch_size'] = 200;
$config['encoding'] = '8bit';
$this->email->initialize($config);
我收到了,它似乎可以发送邮件,但问题是它没有发送给收件人。相反,它将它发送到网络邮件。
$this->load->library('email');
$config['mailtype'] = 'html';
$config['protocol'] = 'sendmail';
$config['smtp_port'] = '465';
$config['mailpath'] = '/usr/sbin/sendmail';
$this->email->initialize($config);
$this->email->message($mailToSend);
$this->email->subject($subject);
$this->email->from($sender);
$this->email->reply_to("admin@domain.com");
$this->email->to($email);
// Set recipients
$this->email->bcc_batch_mode = true;
$this->email->bcc_batch_size = 50;
$this->email->bcc("admin@domain.com);
set_time_limit(0);
ignore_user_abort(true);
// Send this mailing
$flag = $this->email->send();
if ($flag) {
return $flag;
} else {
return false;
}
[已解决] 问题来自邮件 headers。我没有设置 headers。这是一个工作示例
$config = array(
'protocol' => 'sendmail',
'smtp_host' => 'ssl://smtp.googlemail.com',
'smtp_port' => '465',
'smtp_user' => 'me@gmail.com',
'smtp_pass' => '****',
'smtp_timeout' => 50,
'mailtype' => 'html',
'starttls' => true,
'charset' => 'utf-8',
'protocol' => 'sendmail',
'mailpath' => '/usr/sbin/sendmail',
'charset' => 'iso-8859-1',
'wordwrap' => TRUE,
);
$this->load->library('email');
$this->email->initialize($config);
$this->email->set_header('X-Mailer', 'CodeIgniter');
$this->email->set_header('X-Priority', '1');
$this->email->set_header('Subject', $subject);
$this->email->set_header('Mime-Version', '1.0');
$this->email->set_header('Importance', 'High');
$this->email->set_header('X-MSMail-Priority', 'High');
$this->email->set_newline("\r\n");
$this->email->from('me@mail.com', $sender);
$this->email->to($email);
$this->email->cc('me@mail.com');
$this->email->subject($subject);
$this->email->message($mailToSend);
$flag = $this->email->send();
if ($flag) {
return $flag;
} else {
return false;
}