<?php
class Email extends Controller {
function Email()
{
parent::Controller();
$this->load->library('email');
}
function index()
{
$config['protocol'] = 'smtp';
$config['smtp_host'] = 'ssl://smtp.gmail.com';
$config['smtp_port'] = '465';
$config['smtp_timeout'] = '7';
$config['smtp_user'] = '[email protected]';
$config['smtp_pass'] = '*******';
$config['charset'] = 'utf-8';
$config['newline'] = "\r\n";
$config['mailtype'] = 'text'; // or html
$config['validation'] = TRUE; // bool whether to validate email or not
$this->email->initialize($config);
$this->email->from('[email protected]', 'myname');
$this->email->to('[email protected]');
$this->email->subject('Email Test');
$this->email->message('Testing the email class.');
$this->email->send();
echo $this->email->print_debugger();
$this->load->view('email_view');
}
}
Ich erhalte diesen Fehler:
A PHP Error was encountered
Severity: Warning
Message: fsockopen() [function.fsockopen]: unable to connect to ssl://smtp.gmail.com:465 (Connection timed out)
Filename: libraries/Email.php
Line Number: 1641
Verwenden von PORT 25/587
Ich habe diesen Fehler erhalten:
A PHP Error was encountered
Severity: Warning
Message: fsockopen() [function.fsockopen]: SSL operation failed with code 1. OpenSSL Error messages: error:140770FC:SSL routines:func(119):reason(252)
Filename: libraries/Email.php
Line Number: 1641
Ich möchte jetzt phpmailer nicht verwenden. (Eigentlich habe ich versucht, phpmailer zu verwenden, aber ich bin gescheitert).
Wie löse ich dieses Problem, Leute?
php
codeigniter
email
smtp
Shiv
quelle
quelle
$config['validation'] = TRUE
ist falsch, der Indexschlüssel ist validiert, also verwenden Sie$config['validate'] = TRUE
Antworten:
$config = Array( 'protocol' => 'smtp', 'smtp_host' => 'ssl://smtp.googlemail.com', 'smtp_port' => 465, 'smtp_user' => 'xxx', 'smtp_pass' => 'xxx', 'mailtype' => 'html', 'charset' => 'iso-8859-1' ); $this->load->library('email', $config); $this->email->set_newline("\r\n"); // Set to, from, message, etc. $result = $this->email->send();
Aus den CodeIgniter-Foren
quelle
$this->email->set_newline
in doppelte Anführungszeichen eingeschlossen sind. das ist sehr wichtig oder es funktioniert nicht.\n
nur dann eine neue Zeile in doppelten Anführungszeichen steht. In einfachen Anführungszeichen bedeutet dies die Literalzeichen \ n.$result = $this->email->send();
Sie müssen SSL in Ihrer PHP-Konfiguration aktivieren. Laden Sie
php.ini
und finden Sie eine Zeile mit den folgenden:;extension=php_openssl.dll
Kommentieren Sie es aus. : D.
(durch Entfernen des Semikolons aus der Anweisung)
extension=php_openssl.dll
quelle
Laut CI-Dokumenten ( CodeIgniter Email Library ) ...
Ich konnte dies zum Laufen bringen, indem ich alle Einstellungen in application / config / email.php ablegte .
$config['useragent'] = 'CodeIgniter'; $config['protocol'] = 'smtp'; //$config['mailpath'] = '/usr/sbin/sendmail'; $config['smtp_host'] = 'ssl://smtp.googlemail.com'; $config['smtp_user'] = '[email protected]'; $config['smtp_pass'] = 'YOURPASSWORDHERE'; $config['smtp_port'] = 465; $config['smtp_timeout'] = 5; $config['wordwrap'] = TRUE; $config['wrapchars'] = 76; $config['mailtype'] = 'html'; $config['charset'] = 'utf-8'; $config['validate'] = FALSE; $config['priority'] = 3; $config['crlf'] = "\r\n"; $config['newline'] = "\r\n"; $config['bcc_batch_mode'] = FALSE; $config['bcc_batch_size'] = 200;
Dann habe ich in einer der Controller-Methoden so etwas wie:
$this->load->library('email'); // Note: no $config param needed $this->email->from('[email protected]', '[email protected]'); $this->email->to('[email protected]'); $this->email->subject('Test email from CI and Gmail'); $this->email->message('This is a test.'); $this->email->send();
Außerdem musste ich, wie Cerebro schrieb, diese Zeile in meiner php.ini-Datei auskommentieren und PHP neu starten:
quelle
Ändern Sie es wie folgt:
$ci = get_instance(); $ci->load->library('email'); $config['protocol'] = "smtp"; $config['smtp_host'] = "ssl://smtp.gmail.com"; $config['smtp_port'] = "465"; $config['smtp_user'] = "[email protected]"; $config['smtp_pass'] = "yourpassword"; $config['charset'] = "utf-8"; $config['mailtype'] = "html"; $config['newline'] = "\r\n"; $ci->email->initialize($config); $ci->email->from('[email protected]', 'Blabla'); $list = array('[email protected]'); $ci->email->to($list); $this->email->reply_to('[email protected]', 'Explendid Videos'); $ci->email->subject('This is an email test'); $ci->email->message('It is working. Great!'); $ci->email->send();
quelle
Senden Sie eine HTML-E-Mail über Codeiginater
$this->load->library('email'); $this->load->library('parser'); $this->email->clear(); $config['mailtype'] = "html"; $this->email->initialize($config); $this->email->set_newline("\r\n"); $this->email->from('[email protected]', 'Website'); $list = array('[email protected]', '[email protected]'); $this->email->to($list); $data = array(); $htmlMessage = $this->parser->parse('messages/email', $data, true); $this->email->subject('This is an email test'); $this->email->message($htmlMessage); if ($this->email->send()) { echo 'Your email was sent, thanks chamil.'; } else { show_error($this->email->print_debugger()); }
quelle
Eine weitere Option, die ich auf einem Linux-Server mit Postfix habe:
Konfigurieren Sie zunächst CI-E-Mails so, dass sie das E-Mail-System Ihres Servers verwenden: z.
email.php
B. in# alias to postfix in a typical Postfix server $config['protocol'] = 'sendmail'; $config['mailpath'] = '/usr/sbin/sendmail';
Konfigurieren Sie dann Ihren Postfix so, dass die E-Mail an Google weitergeleitet wird (möglicherweise abhängig von der Absenderadresse). Sie müssen wahrscheinlich Ihre Benutzerkennworteinstellungen in (docs) eingeben.
/etc/postfix/sasl_passwd
Dies ist viel einfacher (und weniger fragmentarisch), wenn Sie eine Linux-Box haben, die bereits so konfiguriert ist, dass einige / alle ausgehenden E-Mails an Google gesendet werden.
quelle
Möglicherweise befinden sich Ihr Hosting-Server und Ihr E-Mail-Server am selben Ort, und Sie müssen keine SMTP-Authentifizierung durchführen. Behalten Sie einfach alles wie folgt bei:
$config = array( 'protocol' => '', 'smtp_host' => '', 'smtp_port' => '', 'smtp_user' => '[email protected]', 'smtp_pass' => '**********' );
oder
$config['protocol'] = ''; $config['smtp_host'] = ''; $config['smtp_port'] = ; $config['smtp_user'] = '[email protected]'; $config['smtp_pass'] = 'password';
Für mich geht das.
quelle
Es kann sein:
Fehler beim Senden einer E-Mail mit CodeIgniter
quelle