Dans un Rails 5.1 ActionMailer, je veux attacher un objet à un courrier électronique:Joindre le message de courrier à la poste dans Rails
def attach_mail(original_email)
attachments['original-email.eml'] = { mime_type: 'message/rfc822', encoding: '7bit', content: original_email.to_s }
mail to: 'postmaster', subject: 'mail should be attached'
end
Cependant, cela ne produit pas des e-mails valides. Thunderbird répertorie la pièce jointe avec la taille '0'. Horde liste la pièce jointe avec la taille correcte, mais ne la reconnaît pas comme un e-mail.
J'ai essayé des variations de la ligne attachments
:
attachments['original-email.eml'] = original_email
attachments['original-email.eml'] = { content: original_email.to_s }
attachments['original-email.eml'] = { mime_type: 'message/rfc822', content: original_email.to_s }
, mais aucun de ces résultats dans un e-mail avec une pièce jointe de courrier électronique.
Quelle est la solution?
Merci d'avoir documenté ceci ici! J'ai été perplexe pourquoi seulement les messages électroniques étaient brouillés. – neongrau
J'ai en outre eu un problème qui s'est produit avec les mails ayant seulement un corps html avec un fichier eml attaché. Là, l'attachement brouillait tout le courrier à la livraison. Alors que la conversion de l'objet Mail via sa méthode codée en un fichier .eml lui-même fonctionnait bizarrement. Au final, je suis en train d'envoyer eml-attachments avec mime_type: 'application/octet-stream', en encodant: '7bit' qui semble fonctionner le mieux pour mes différents formats. Au moins jusqu'à ce que je trébuche sur la prochaine combinaison étrange qui échouera dans l'un ou l'autre MUA – neongrau