Использование MSMTP с библиотекой электронной почты CodeIgniter
Может ли кто-нибудь успешно отправлять электронную почту с помощью стандартной библиотеки электронной почты CodeIgniter при использовании msmtp?
Я запускаю Ubuntu, и я успешно установил и настроил MSMTP. Я смог отправить электронную почту из командной строки, а также использовать функцию PHP mail()
по умолчанию.
Мой application/config/email.php
файл выглядит следующим образом
$config = array(
'protocol' => 'sendmail',
'mailpath' => '/usr/bin/msmtp -C /etc/msmtp/.msmtprc -t',
'smtp_host' => 'smtp.gmail.com',
'smtp_user' => '[email protected]',
'smtp_pass' => 'xxxxxxxx',
'smtp_port' => 587,
'smtp_timeout' => 30,
'smtp_crypto' => 'tls',
);
Но это не работает. Если бы кто-то был успешным, было бы хорошо знать, как вы это сделали. В идеале я бы хотел использовать библиотеку электронной почты CodeIgniter, поскольку у нее много хороших функций, которые я не хочу писать самостоятельно.
Ответы
Ответ 1
Я смог отправить электронное письмо через CodeIgniter и msmtp без особых проблем. В моем случае я использовал Sendgrid, когда сталкивался с проблемами аутентификации, используя msmtp с Gmail и Yahoo. Здесь моя настройка (работает на Ubuntu 14.04, php 5.5.9, Code Igniter last):
msmtp config -/home/quickshiftin/.msmtprc
account sendgrid
host smtp.sendgrid.net
port 587
auth on
tls on
tls_starttls on
tls_trust_file /etc/ssl/certs/ca-certificates.crt
user SendGridUsername
password SendGridPassword
Контроллер воспламенения кода - приложение/контроллер/Tools.php
class Tools extends CI_Controller {
public function message()
{
$this->load->library('email');
$this->email->from('[email protected]', 'Nate');
$this->email->to('[email protected]');
$this->email->subject('Send email through Code Igniter and msmtp');
$this->email->message('Testing the email class.');
$this->email->send();
}
}
Библиотека электронной почты Config - application/config/email.php
$config = [
'protocol' => 'sendmail',
'mailpath' => '/usr/bin/msmtp -C /home/quickshiftin/.msmtprc --logfile /var/log/msmtp.log -a sendgrid -t',
];
Отправка электронной почты через CLI
php index.php tools message
Мысли о вашей проблеме
- Является ли /etc/msmtp/.msmtprc доступным для чтения вашим веб-сервером или пользователем командной строки? Является ли
/usr/bin/msmtp
исполняемым пользователем?
-
popen
может быть отключен в вашей среде PHP
- Используйте отладчик для отслеживания вызова метода
CI_Email::_send_with_sendmail
, чтобы определить, почему он не работает в вашем случае
- Если вы настроите файл журнала для msmtp, как я есть, вы можете посмотреть там, пытаясь отправить через Code Igniter, чтобы поймать возможные проблемы.
Ответ 2
Конфигурация электронной почты ниже:
<?php defined('BASEPATH') OR exit('No direct script access allowed.');
// Mail engine switcher: 'CodeIgniter' or 'PHPMailer'
$config['useragent'] = 'PHPMailer';
// 'mail', 'sendmail', or 'smtp'
$config['protocol'] = 'smtp';
$config['mailpath'] = '/project-folder/sendmail';
$config['smtp_host'] = 'smtp.gmail.com';
$config['smtp_user'] = 'Your Gmail Email';
$config['smtp_pass'] = 'Your Gmail Pass';
$config['smtp_port'] = 587;
// (in seconds)
$config['smtp_timeout'] = 30;
// '' or 'tls' or 'ssl'
$config['smtp_crypto'] = 'tls';
// PHPMailer SMTP debug info level: 0 = off, 1 = commands, 2 = commands and data, 3 = as 2 plus connection status, 4 = low level data output.
$config['smtp_debug'] = 0;
// Whether to enable TLS encryption automatically if a server supports it, even if `smtp_crypto` is not set to 'tls'.
$config['smtp_auto_tls'] = false;
// SMTP connection options, an array passed to the function stream_context_create() when connecting via SMTP.
$config['smtp_conn_options'] = array();
$config['wordwrap'] = true;
$config['wrapchars'] = 76;
// 'text' or 'html'
$config['mailtype'] = 'html';
// 'UTF-8', 'ISO-8859-15', ...; NULL (preferable) means config_item('charset'), i.e. the character set of the site.
$config['charset'] = null;
$config['validate'] = true;
// 1, 2, 3, 4, 5; on PHPMailer useragent NULL is a possible option, it means that X-priority header is not set at all
$config['priority'] = 3;
// "\r\n" or "\n" or "\r"
$config['crlf'] = "\n";
// "\r\n" or "\n" or "\r"
$config['newline'] = "\n";
$config['bcc_batch_mode'] = false;
$config['bcc_batch_size'] = 200;
// The body encoding. For CodeIgniter: '8bit' or '7bit'. For PHPMailer: '8bit', '7bit', 'binary', 'base64', or 'quoted-printable'.
$config['encoding'] = '8bit';