2017-09-25 6 views
0

Actuellement, je suis en utilisant le code suivant pour envoyer mes e-mails dans cadre sans gras:Envoi du texte et email multipart html cadre sans gras

$smtp = new SMTP ($f3->get('MAILHOST'), $f3->get('MAILPORT'), $f3->get('MAILPROTOCOL'), $f3->get('MAILUSER'), $f3->get('MAILPW')); 
     $smtp->set('Content-type', 'text/html; charset=UTF-8'); 
     $smtp->set('Errors-to', '<$my_mail_address>'); 
     $smtp->set('To', "<$my_mail_address>"); 
     $smtp->set('From', '"$my_mailer_name" <$my_mail_address>'); 
     $smtp->set('Subject', "$subject"); 
     $smtp->set('Date', date("r")); 
     $smtp->set('Message-Id',generateMessageID()); 
$smtp->send(Template::instance()->render('emails/'.$mailTemplate.'.html')); 

Et cela fonctionne comme un charme. Mais je voudrais ajouter une version texte à cet e-mail. Y at-il un moyen de le faire dans le plugin SMTP de Fat Free Framework? Si oui, comment dois-je faire cela? Et si non, comment pourrais-je faire ça en F3?

+0

En regardant le [code source] (https://github.com/bcosca/fatfree-core/blob/master/smtp.php) , il semble qu'il n'est pas possible d'envoyer deux versions (HTML + texte) du même message dans un seul email. Vous pouvez cependant joindre la version texte en tant que fichier distinct. – xfra35

Répondre

0

En fait, il peut envoyer un courrier multiplate-texte + html. La classe SMTP est juste une implémentation de protocole, elle peut donc sembler un peu délicate à ce stade. Vous avez besoin essentiellement de préparer votre corps de mail avec le multipart comme ceci:

$text = 'Hello world.'; 
$html = 'Hello <b>world</b>'; 

$smtp = new \SMTP(); 
$hash=uniqid(NULL,TRUE); 
$smtp->set('From', '[email protected]'); 
$smtp->set('To', '[email protected]'); 
$smtp->set('Content-Type', 'multipart/alternative; boundary="'.$hash.'"'); 
$smtp->set('Subject', 'Multipart test'); 

$eol="\r\n"; 
$body = '--'.$hash.$eol; 
$body .= 'Content-Type: text/plain; charset=UTF-8'.$eol; 
$body .= $text.$eol.$eol; 
$body .= '--'.$hash.$eol; 
$body .= 'Content-Type: text/html; charset=UTF-8'.$eol.$eol; 
$body .= $html.$eol; 

$smtp->send($body,true);