Cum se face ca mesajele de e-mail să folosească codificarea caracterelor UTF8? (Drupal, 7, Emailuri)

rashidkhan a intrebat.

Trimit mesaje de poștă electronică către utilizatori despre produse, folosind codul Suport pentru autentificarea SMTP și Mime Mail module. Am setat UTF8 ca set de caractere în antetul de mail, dar antetul este schimbat din UTF8 în multipart pe această linie din fișierul mail.inc:

$message = $system->format($message);

De fapt, se schimbă caracterele suedeze în niște caractere ciudate. Deci aceasta este problema: nu le pot afișa corect.

Aveți vreo sugestie pentru a le afișa corect?

2 răspunsuri
Mołot

Content-Type: multipart/alternative; înseamnă că există părți care pot avea propriul set de codificare. Dacă modulele dvs. de trimitere a corespondenței decid că au nevoie de multipart, corespondența ar trebui să fie formatată astfel:

MIME-Version: 1.0
Content-Type: multipart/alternative; boundary=boundary

--boundary
Content-Type: text/plain; charset=utf-8

This part uses UTF-8.
--boundary
Content-Type: text/plain; charset=iso-8859-1

This part uses ISO 8859-1.
--boundary--

cod sursă eșantion de cod aici

Dacă ați chemat totul așa cum vă spune docs modulele, iar datele UTF-8 nu se află în partea UTF-8, atunci tocmai ați găsit un bug în unul dintre modulele dvs.

Comentarii

  • Nu pot spune mai multe fără un cod complet. –  > Por Mołot.
  • Acestea sunt anteturile pe care le folosesc. $headers = array( 'MIME-Version' => '1. 0', 'Content-Type' => 'text/html; charset=UTF-8; format = flowed;', 'Content-Transfer-Encoding' => '8Bit', 'X-Mailer' => 'Drupal' ); foreach ($headers as $key => $value) { $message['headers'][$key] = $value; } –  > Por rashidkhan.
  • Având în vedere informațiile pe care le conține întrebarea, acesta este un răspuns plauzibil și atinge scopul. Setarea multipart/alternative ca tip de conținut nu intră în conflict cu setarea setului de caractere. Asta înseamnă că sau un modul conține o eroare, sau un modul nu a fost configurat corect. –  > Por kiamlaluno.
priyank

Bună ziua, puteți crea această funcționalitate și folosind cârlige personalizate.

function add_newsletter() {
 $news_query = db_insert('news_letter')
        ->fields(array(
            'email_id' => $_POST['email'],
            'created' => REQUEST_TIME))
        ->execute();
if($news_query) {
    echo '1';
}else {
    echo '0';
}

$to = "[email protected]";
$subject  = 'Mail coming from Subscribe';
$message  = "Hi, please check the below email coming from User Subscribers. User Email Id is : ".$_POST['email'];
$headers  = 'From: '.$_POST['email'] . "r
" .
            'MIME-Version: 1.0' . "r
" .
            'Content-type: text/html; charset=utf-8';
mail($to, $subject, $message, $headers);
if(mail($to, $subject, $message, $headers))
    echo "Email sent successfully";
else
    echo "Email sending failed";
}

Tags:,