Qual è il modo giusto per incorporare un'immagine in e-mail utilizzando Rails?Qual è il modo giusto per incorporare l'immagine in email utilizzando Rails?
risposta
Non so molto di rotaie, ma ho lavorato a progetti in C# che creano e-mail e poi li inserisco in una casella di posta degli utenti tramite le API di Google. Per creare l'e-mail, ho dovuto generare la stringa e-mail da zero. Se abiliti multipart per l'e-mail, i byte dell'immagine saranno inclusi in una sezione multipart utilizzando la codifica base64.
È possibile controllare i pacchetti TMail e RubyMail per verificare se supportano queste azioni.
Ho combinato la risposta di Oksana con un approccio di supporto personalizzato e ho ottenuto quanto segue per funzionare abbastanza bene.
app/helpers/email_helper.rb
module EmailHelper
def email_image_tag(image, **options)
attachments[image] = File.read(Rails.root.join("app/assets/images/#{image}"))
image_tag attachments[image].url, **options
end
end
app/mailers/base_mailer.rb
class BaseMailer < ActionMailer::Base
add_template_helper(EmailHelper)
end
app/mailers/my_mailer.rb
class MyMailer < BaseMailer
def send_my_mail(email)
mail to: email, subject: "My Subject"
end
end
Poi per esempio dove voglio attaccare il logo aziendale nel mio file di layout e-mail che userei
app/views/layouts/email.html.erb
<%= email_image_tag("company_logo.png") %>
Nota le opzioni ** rende il tag più estensibile ma funzionerà solo in ruby> = 2. Per fare in modo che funzioni nel rubino < 2 dovrai utilizzare il vecchio modo di gestire le opzioni delle parole chiave.
ciò che è interessante è che le immagini con trattini nel nome del file si trasformeranno in caratteri di sottolineatura quando si utilizza questo metodo –
Non pensare che sia qualcosa che ho scritto lì. Potrebbe essere il risultato di URL.encode nell'helper image_tag delle rotaie ma non l'ho mai provato prima. –
Hey tdubs sembra che funzioni, ma su dispositivi mobili in gmail allegherà tutte le immagini e non le mostrerà in linea. Penso che devi specificare il mime_type e la codifica –
Aggiunta su Oksana e risponde alle tdubs'
I tdubs modulo ha scritto opere su desktop, ma per il cliente Gmail Mobile, le immagini è apparso come allegati. Per risolvere questo problema, fare questo per il
app/aiutanti/email_helper.rb
module EmailHelper
def email_image_tag(image, **options)
attachments[image] = {
:data => File.read(Rails.root.join("app/assets/images/emails/#{image}")),
:mime_type => "image/png",
:encoding => "base64"
}
image_tag attachments[image].url, **options
end
end
Per il resto, seguire la risposta di tdubs.
grazie per aver dedicato del tempo per postare questo avvertimento :) –
Attenzione al codice. Stai specificando un tipo di mime specifico e la codifica e probabilmente non tutte le tue immagini corrisponderanno a entrambe quelle –
Ricevo una sequenza di byte non valida con questo –
Dopo molte ricerche ho trovato un modo molto più semplice per incorporare l'immagine nella posta elettronica. Basta aggiungere seguente riga nel production.rb
e development.rb
config.action_mailer.asset_host = 'YOUR HOST URL'
nell'immagine embed vista utilizzando codice seguente.
<%= image_tag('My Web Site Logo.png') %>
Nota: Assicurati di aggiornare TUO URL HOST e il mio sito Web Logo.png in sopra il codice.
Per i dettagli di base sull'utilizzo di Action Mailer, fare riferimento a ActionMailer::Base.
Fai attenzione a fare questo. Dovrai ospitare quell'immagine a quell'URL per sempre o le persone non saranno più in grado di vedere l'email correttamente Molto meglio da incorporare con le immagini codificate in base64 –
Un avvertimento accettabile per la semplicità della soluzione. –
copia incolla da qui
allegati in linea
È inoltre possibile specificare che un file deve essere visualizzato in linea con altri HTML. Questo è utile se si desidera visualizzare un logo aziendale o una foto.
class Notifier < ApplicationMailer
def welcome(recipient)
attachments.inline['photo.png'] = File.read('path/to/photo.png')
mail(to: recipient, subject: "Here is what we look like")
end
end
E poi per fare riferimento all'immagine nella vista, si crea un file welcome.html.erb e fare una chiamata a image_tag passando l'allegato che si desidera visualizzare e quindi chiamare URL sull'allegato per ottenere il percorso relativo Content ID per la fonte immagine:
<h1>Please Don't Cringe</h1>
<%= image_tag attachments['photo.png'].url -%>
Come stiamo usando di azione View metodo image_tag, si può passare a qualsiasi altra opzione che si desidera:
<h1>Please Don't Cringe</h1>
<%= image_tag attachments['photo.png'].url, alt: 'Our Photo', class: 'photo' -%>
RAILS 5
Nel tuo metodo di posta elettronica aggiungi il tuo allegato in linea che punta al tuo immagine:
class ConfirmationMailer < ActionMailer::Base
def confirmation_email
attachments.inline["logo.png"] = File.read("#{Rails.root}/app/assets/images/logo.png")
mail(to: email, subject: 'test subject')
end
end
Poi nel tuo html mail ad un image_tag
con l'URL allegato:
<%= image_tag(attachments['logo.png'].url) %>
ha funzionato anche su binari 4.2 - grazie – ImranNaqvi
@ImranNaqvi felice di poterti aiutare! – Joel
- 1. Qual è il modo giusto per realizzare l'uguaglianza in rubino
- 2. Qual è il modo giusto per sostituire un metodo setter in Ruby on Rails?
- 3. Qual è il modo giusto per ospitare autonomamente un'API Web?
- 4. Qual è il modo giusto per fare i conteggi in Rails?
- 5. Qual è il modo giusto per gestire le connessioni Mongodb?
- 6. Qual è il modo giusto per inizializzare una QList?
- 7. qual è il modo giusto per usare pointer_from_objref() e Ref()?
- 8. Qual è il modo giusto per gestire le stringhe char *?
- 9. Qual è il modo giusto per disconnettere un MediaController?
- 10. Qual è il modo giusto per ottenere un grapheme?
- 11. Qual è il modo giusto per sopprimere gli avvertimenti EF?
- 12. Utilizzando Spring Security OAuth2, qual è il modo giusto per aggiornare l'autenticazione memorizzata nel TokenStore?
- 13. il modo giusto per incorporare la superclasse in un'implementazione di Guava Objects.hashcode()?
- 14. Qual è il modo consigliato per I18n in Rails 3
- 15. Qual è il modo giusto per definire l'annotazione per il tipo DECIMAL in Doctrine2
- 16. Qual è il modo migliore per testare un'app per rails?
- 17. Senza JOINs, qual è il modo giusto per gestire i dati nei database di documenti?
- 18. Qual è il modo giusto per caricare un'estensione di zend in php-fpm.conf?
- 19. Il modo giusto per accedere al EventLog utilizzando NLog
- 20. Qual è il modo giusto per prendere in giro le funzioni void in RhinoMocks?
- 21. Il modo giusto per arrotondare pandas.DataFrame?
- 22. Qual è il modo giusto per installare e utilizzare Bower in Meteor?
- 23. Qual è il modo giusto per utilizzare i metadati Unicode in setup.py?
- 24. È questo il modo giusto per smaltire SQLConnection
- 25. Quartz 2d/Core Grafica: qual è il modo giusto per disegnare del testo?
- 26. Il modo giusto per convertire il char * numero in int32_t
- 27. Qual è il modo giusto per inserire un'immagine di Drive in una cella Fogli programmaticamente?
- 28. qual è il modo giusto per impostare i parametri JVM in eclissi
- 29. Qual è il modo giusto per visualizzare gli aggiornamenti di Cairo in Gtk2hs?
- 30. In Lua, qual è il modo giusto per gestire varargs che contiene zero?
http://stackoverflow.com/questions/7520936/css-images-in-email-with-rails-3 e http://stackoverflow.com/questions/472450/how-do-i-create-email-with-css-and -immagini-dai-rails daranno più informazioni. – Mika