php 8.1 html email in raw formaat
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
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;
}
}
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
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
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();
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?
Heb je die al geupdated?
Ikzelf gebruik phpMailer.
Heb dit maar even gevolgd:
https://help.dreamhost.com/hc/en-us/articles/360031176531-PHPMailer-Installing-on-a-VPS-or-Dedicated-server
Quote:
<b>Fatal error</b>: Uncaught Error: Class "PHPMailer" 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 />
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
Gewijzigd op 11/09/2022 16:31:03 door Daniel van Seggelen
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.
Gewijzigd op 11/09/2022 16:39:02 door - Ariën -
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 "PHPMailer" not found in
O ja, het downloadt toch wel.
Toevoeging op 11/09/2022 16:51:12:
Anyway, ik ben wel bezig met een tutorial over Composer. Misschien een idee om dit in de gaten te houden ;-P
Gewijzigd op 14/09/2022 01:42:29 door - Ariën -
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
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
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?
Code (php)
1
2
3
2
3
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';
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.
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.
Gewijzigd op 12/09/2022 04:54:28 door Daniel van Seggelen
Maar je kan ze ook in de class aanroep verwerken.