it-swarm.com.de

senden Sie HTML-Mail mit dem Codeigniter

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?

19
user1182623

Sie können diese Codezeile ausprobieren, in der der Mail-Typ für HTML festgelegt wird:

 $this->email->set_mailtype("html");
71
Gabriel

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.

20
Madan Sapkota

Das Einstellen des Mail-Typs auf HTML funktioniert für mich:

$email_setting  = array('mailtype'=>'html');
$this->email->initialize($email_setting);
3
kebyang

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

IMAP- und POP-Status aktivieren

1
Parimal Nakrani

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.

1
Carlos Atencio

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);
    }
0
Nikunj K.

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!!

0
Umesh Patil

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

0
zechdc

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();
0
Vishal P Gothi