PHP Mailer UTF-8 Encoding problems

17,492

Try replace:

$mail->CharSet="UTF-8";

by:

$mail->CharSet = 'UTF-8';

It's working perfectly here.

Share:
17,492
Zsolt Bíró
Author by

Zsolt Bíró

Updated on June 09, 2022

Comments

  • Zsolt Bíró
    Zsolt Bíró almost 2 years

    I've been working on a website recently and decided to include a PHPMailer on it. The problem is I'm hungarian and the site is fully in hungarian too so I had to use UTF-8 charset. The PHP mailer I decided to use is not yet capable of using UTF-8 and I cant figure out how to make it echo things in my prefered charset. Please help!

    <?php
    
    require_once('phpmailer/class.phpmailer.php');
    
    $mail = new PHPMailer();
    
    if( isset( $_POST['template-contactform-submit'] ) AND $_POST['template-contactform-submit'] == 'submit' ) {
        if( $_POST['template-contactform-name'] != '' AND $_POST['template-contactform-email'] != '' AND $_POST['template-contactform-message'] != '' ) {
    
            $name = $_POST['template-contactform-name'];
            $email = $_POST['template-contactform-email'];
            $phone = $_POST['template-contactform-phone'];
            $service = $_POST['template-contactform-service'];
            $subject = $_POST['template-contactform-subject'];
            $message = $_POST['template-contactform-message'];
    
            $subject = isset($subject) ? $subject : 'New Message From Contact Form';
    
            $botcheck = $_POST['template-contactform-botcheck'];
    
            $toemail = ''; // Your Email Address
            $toname = ''; // Your Name
    
            if( $botcheck == '' ) {
    
                $mail->SetFrom( $email , $name );
                $mail->AddReplyTo( $email , $name );
                $mail->AddAddress( $toemail , $toname );
                $mail->Subject = $subject;
    
                $name = isset($name) ? "Név: $name<br>" : '';
                $email = isset($email) ? "E-mail: $email<br><br>" : '';
                $message = isset($message) ? "Üzenet: $message<br>" : '';
    
                $referrer = $_SERVER['HTTP_REFERER'] ? '<br><br><br>Az üzenetet továbbította: ' . $_SERVER['HTTP_REFERER'] :'';
    
                $body = "$name $email $message $referrer";
    
                $mail->MsgHTML( $body );
    
                $mail->CharSet="UTF-8";
    
                $sendEmail = $mail->Send();
    
                if( $sendEmail == true ):
                    echo 'Üzenet elküldve!';
                else:
                    echo 'Üzenetküldés sikertelen. Kérlek próbáld újra!' . $mail->ErrorInfo . '';
                endif;
            } else {
                echo 'Bot vagy. Kérlek próbálkozz újra!';
            }
        } else {
            echo 'Kérlek tölts ki minden mezőt és próbáld meg újra!';
        }
    } else {
        echo 'Valami félrecsúszott. Kérlek próbáld meg mégegyszer.';
    }
    
    ?>