class CHmail{
    var $to = null;
    var $from = null;
	var $reply = null;
    var $subject = null;
    var $body = null;
    var $headers = null;

   public function __construct($to,$from,$reply,$subject,$body){
        $this->to      = $to;
        $this->from    = $from;
		$this->reply    = $reply;
        $this->subject = $subject;
        $this->body    = $body;
    }



     public  function send(){
		 
      $this->addHeader('From: '.$this->from." <".$this->reply."> \n");
        $this->addHeader('Reply-To: '.$this->reply."\n");
        $this->addHeader('Return-Path: '.$this->from."\n");
        $this->addHeader('X-mailer: ZFmail 1.0'."\n");
		$this->addHeader('Content-type: text/html; charset=utf-8'."\n");
    

	
	    mail($this->to,$this->subject,$this->body,$this->headers);
    }

    function addHeader($header){
        $this->headers .= $header;
    }

}



Dan gebruik ik de mail zo

ob_start();
						include(DOC_ROOT.'inc/email_contact.php');
						$myHTML = ob_get_clean();
						$bericht = preg_replace('~[\n\r\s]+~',' ', $myHTML);						 
						$email = 'info@'.TRADE_URL.'';
						$mailReg = new CHmail($_POST['contact-email'],$from,$reply,'Contact '.TRADE_URL.'',$bericht);
						$mailReg->send();	




De mail word verstuurd in Raw format.
Terwijl dit html emails zijn.
Dit is gebeurd net toen ik de overzetting naar php8.1 heb gemaakt;
In php 7.3 werkte alles prima.

Kent iemand dit probleem?
Onderdeel van Zend Framework?
Heb je die al geupdated?

Ikzelf gebruik phpMailer.
Zal wel weer aan mij liggen, maar krijg phpmailer niet aan de praat:
Heb dit maar even gevolgd:

https://help.dreamhost.com/hc/en-us/articles/360031176531-PHPMailer-Installing-on-a-VPS-or-Dedicated-server


<b>Fatal error</b>: Uncaught Error: Class &quot;PHPMailer&quot; not found in /home/pmtdc/domains/domainnl/private_html/inc/contact.php:47
Stack trace:
#0 /home/pmtdc/domains/domain.nl/private_html/index.php(161): include()
#1 {main}
thrown in <b>/home/pmtdc/domains/domain.nl/private_html/inc/contact.php</b> on line <b>47</b><br />



in index bovenaan heb ik het volgende:

use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

Denk dat phpmailer niet bugvrij is.

Ik heb het zonder comoser ook gedownload , met dezelfde errors
Niet bugvrij? Het werkt prima.
Blijkbaar lees je de handleiding niet goed? :-P

https://github.com/PHPMailer/PHPMailer

Check de includes.
Of gebruik composer en roep de autoLoader aan. Veel praktischer.
Ik had het eerst met composer geinstalleerd, zoals ik aangaf. Dit werkte niet.
Daarna manueel gedownload en de paden ingesteld. Ik volg alles exact zoals in de manuel staat.
Maar het werkt voor geen meter. Blij dit krijgen:

<b>Fatal error</b>: Uncaught Error: Class &quot;PHPMailer&quot; not found in
Heb je wel "composer update" gedaan?
Enkel requiren met composer downloadt nog niks.
O ja, het downloadt toch wel.

[size=xsmall]Toevoeging op 11/09/2022 16:51:12:[/size]

Anyway, ik ben wel bezig met een tutorial over Composer. Misschien een idee om dit in de gaten te houden ;-P
Ja heb ik gedaan. Ik zie het probleem al. Als ik alles in


use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;

//Load Composer's autoloader
require 'vendor/autoload.php';

//Create an instance; passing `true` enables exceptions
$mail = new PHPMailer();                              // Passing `true` enables exceptions
try {
    //Server settings
    $mail->SMTPDebug = 2;                                 // Enable verbose debug output
    $mail->isSMTP();                              
...etc


Dan doet hij het wel.

Maar ik gebruik vanaf $mail = new PHPMailer(); in een include, dat is dus het probleem.
Kan ik de mailclass dan niet in een include gebruiken? De oude class helemaal hierboven deed het wel zo
Heb je de namespaces ook in die include staan?
the includes van PHPMailer zijn

require_once $_SERVER['DOCUMENT_ROOT'] . '/PHPMailer/src/Exception.php';
require_once $_SERVER['DOCUMENT_ROOT'] . '/PHPMailer/src/PHPMailer.php';
require_once $_SERVER['DOCUMENT_ROOT'] . '/PHPMailer/src/SMTP.php';


En het werkt perfect
@Jan R. Die gebruik je als je geen autoloader gebruikt.
ja ik had de namespace ook in de include gedaan, zodat hij werkte.
Ik had zonder autoloader ook met reuire apart de bestanden gepaatst, maar leek niet te werken.

Dus de nametags moet ik in de include en daarbuiten in index.php bovenaan 2 keer definieren.
Lijkt me omslachtig, maar anders werkt de boel niet.

Reageren