Question

Comment puis-je joindre du contenu dynamique de Mandrill Webhook et l'envoyer en utilisant SwiftMailer et SMTP (Mandrill).

Voici mon code:

<?php   

if(!isset($_POST['mandrill_events'])) {
echo 'A mandrill error occurred: Invalid mandrill_events';
exit;
}

// -------------- Receive --------------------------
$mail = array_pop(json_decode($_POST['mandrill_events']));


// ----------------- Send ----------------------------------------
include_once "swiftmailer-master/lib/swift_required.php";

$subject = $mail->msg->subject . " From " . $mail->msg->from_email;
$from = array('info@myDomain.ir' =>'myDomain');
$to = array(
  'myEmail@yahoo.com' => 'Hamed Gh'
);

$transport = Swift_SmtpTransport::newInstance('smtp.mandrillapp.com', 25,tls);
$transport->setUsername('username');
$transport->setPassword('***********');

$swift = Swift_Mailer::newInstance($transport);

$message = new Swift_Message($subject);
$message->setFrom($from);

//I think there is a problem here!!
foreach ($mail->msg->attachments as $attachment) {
$myType = $attachment->type;
$myName = $attachment->name;
$myContent = $attachment->content;

$attachment = Swift_Attachment::newInstance()
      ->setFilename($myName)
      ->setContentType($myType)
      ->setBody($myContent)
      ;
$message->attach($attachment);
}

$body = $mail->msg->html;
$message->setBody($body, 'text/html');

$message->setTo($to);

$text = "Mandrill speaks plaintext";
$message->addPart($text, 'text/plain');

if($recipients = $swift->send($message, $failures) )
{
 echo 'Message successfully sent!';
} else {
 echo "There was an error:\n";
 print_r($failures);
}
?>

Je recherche toutefois et lisez SwiftMailer Docs, mais je n'ai pas pu trouver de manière à résoudre mon problème.Tous la pièce jointe sera corrompue à la destination!

Était-ce utile?

La solution

Le contenu des fichiers joints dans Mandrill est de base64 codé par défaut (voir. champ de base64 dans le JSON).

Donc avant de définir le contenu attaché dans SwiftMailer, vous devez décoder le contenu.

$myContent = base64_decode($attachment->content);

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top