Fehler beim E-Mail-Inhalt mit SMTP in Codeigniter Eigentlich wird meine E-Mail mit HTML
-Tags gesendet und zeigt die HTML
-Tags an, die nicht korrekt sind.
$config = Array(
'protocol' => 'smtp',
'smtp_Host' => 'ssl://smtp.googlemail.com',
'smtp_port' => 465,
'smtp_user' => '[email protected]',
'smtp_pass' => '',
'mailtype' => 'html',
'charset' => 'utf-8',
'wordwrap' => TRUE
);
$this->load->library('email', $config);
$this->email->set_newline("\r\n");
$email_body ="<div>hello world</div>";
$this->email->from('[email protected]', 'ddd');
$list = array('[email protected]');
$this->email->to($list);
$this->email->subject('Testing Email');
$this->email->message($email_body);
$this->email->send();
echo $this->email->print_debugger();
Wenn ich E-Mails ohne SMTP verschicke, funktioniert das einwandfrei. Was ist mein Fehler?
Sie können diese Codezeile ausprobieren, in der der Mail-Typ für HTML
festgelegt wird:
$this->email->set_mailtype("html");
Ab CodeIgniter 3.x . Es wurden viele Funktionen hinzugefügt. Dieses Beispiel ist fast identisch mit früheren Versionen, aber Sie können noch viel mehr tun.
Folgen Sie dem Link zur Dokumentation.
// load email library
$this->load->library('email');
// prepare email
$this->email
->from('[email protected]', 'Example Inc.')
->to('[email protected]')
->subject('Hello from Example Inc.')
->message('Hello, We are <strong>Example Inc.</strong>')
->set_mailtype('html');
// send email
$this->email->send();
Wenn Sie Vorlagenentwurf haben. Sie können eine Vorlage auch wie folgt in die message
-Methode einfügen ...
->message($this->load->view('email_template', $data, true))
Der erste Parameter ist email_template.php
in Ihrem Ansichtenverzeichnis, der zweite Parameter die Daten, die an die E-Mail-Vorlage gesendet werden sollen. Sie können ''
oder array()
oder []
angeben, wenn keine dynamischen Daten übergeben werden, und der letzte Parameter true
stellt sicher, dass Sie die Vorlagendaten übernehmen stattdessen ausgeben.
Hoffe das ist hilfreich.
Das Einstellen des Mail-Typs auf HTML
funktioniert für mich:
$email_setting = array('mailtype'=>'html');
$this->email->initialize($email_setting);
Google Mail verhindert den Zugriff auf Ihr Konto. Sie benötigen einige Änderungen an Ihrer Google Mail-Adresse: -
Schritt 1
Einige Apps und Geräte verwenden eine weniger sichere Anmeldetechnologie, wodurch Ihr Konto ist anfälliger. Sie können den Zugriff für diese Apps deaktivieren, die wir empfehlen, oder aktivieren Sie den Zugriff, wenn Sie sie trotz .__ verwenden möchten. Die Risiken.
Weniger sichere App einschalten
Schritt 2
Aktivieren Sie den IMAP-Status
Aktivieren Sie den POP-Status
Versuchen Sie, den Inhaltstyp-Header folgendermaßen manuell festzulegen:
$this->email->set_header('Content-Type', 'text/html');
Das löst das Problem für mich.
Kannst du es bitte mit diesem Code versuchen?.
$configemail = Array(
'protocol' => 'smtp',
'smtp_Host' => 'ssl://smtp.gmail.com', //mail.webconsort.com
'smtp_port' => 465, //5074
'smtp_user' => '[email protected]', //[email protected]
'smtp_pass' => 'XXXXXXXX', //'T0r0r1d3'
'mailtype' => 'html',
'charset' => 'iso-8859-1'
);
$CI =& get_instance();
$CI->load->library('email', $configemail);
$CI->email->initialize($configemail);
$CI->email->set_newline("\r\n");
$CI->email->from($from, $fromName);
$CI->email->to($to);
$CI->email->subject($subject);
$CI->email->message($body);
if ($attachments != null && !empty($attachments)){
foreach($attachments as $a){
$CI->email->attach($a);
}
}
try{
$CI->email->send();
return true;
}
catch (Exception $e){
//var_dump($e);
}
Um HTML-E-Mails zu senden, müssen Sie Ihre Nachricht zunächst in einer Variablen verfassen und diese Variable anschließend an die "$ this-> email-> message ()" - Methode von codeigniter übergeben,
$this->load->library('email');
$message = "
<html>
<head>
<title>your title</title>
</head>
<body>
<p>Hello Sir,</p>
<p>Your message</p>
</body>
</html>";
$this->email->from('email id', 'name');
$this->email->to('email id');
$this->email->subject('email subject');
$this->email->message($message);
if ($this->email->send()) {
print "success";
} else {
print "Could not send email, please try again later";
}
hoffe es wird helfen.
genießen!!
Mein Problem war, dass die globale XSS-Filterung von Codeigniter einige HTML-Tags wie <html>
codierte, sodass die E-Mail-Clients sie nicht mehr erkennen konnten.
Um dies zu umgehen, checke meine anderen post .
Verwenden Sie es so .. es funktioniert gut für mich.
$this->load->library('email');
$config['charset'] = 'iso-8859-1';
$config['wordwrap'] = TRUE;
$config['mailtype'] = 'html';
$this->email->initialize($config);
$this->email->from($fromemail);
$this->email->to($toemail);
$this->email->subject('Subject');
$this->email->message($html);
$success=$this->email->send();