Salut à tous,
J’ai donc une question pour un problème qui m’énerve depuis quelques
jours.
J’ai un newsletter_controller qui contient :
def send_newsletter
news = Newsletter.find(params[:id])
news.update_attribute(‘date’,Time.now)
@liste = get_all_emails()
for mail in @liste
email = Notifier.create_mail_mailing_list_all(mail,news)
Notifier.deliver(email)
end
end
news c’est donc une newsletter que ça va chercher dans la base de
données.
mail est donc un membre de la mailinglist.
J’ai donc le model Notifier qui contient l’action mail_mailing_list_all
:
def mail_mailing_list_all(mail,news)
if mail[:language] == 'fr'
subject = news[:subjectfr]
subj_temp = news[:subjectfr]
body = replace_ids(news[:textfr],mail[:id])
contenu = replace_ids(news[:htmlfr],mail[:id])
message = replace_ids(news[:nohtmlfr],mail[:id])
elsif mail[:language] == 'en'
subject = news[:subjecten]
subj_temp = news[:subjecten]
body = replace_ids(news[:texten],mail[:id])
contenu = replace_ids(news[:htmlen],mail[:id])
message = replace_ids(news[:nohtmlen],mail[:id])
end
@recipients = mail[:mail]
@from = ["Newsletter UpShot <[email protected]>"]
@subject = subject
@sent_to = Time.now
@charset = "UTF-8"
@headers["X-Mailer"] = "Ruby ActionMailer"
@headers["Reply-to"] = "Newsletter UpShot <
[email protected]>"
@headers[“X-Priority”] = “3”
@headers[“Content-Transfer-Encoding”] = “8bit”
if mail[:mailtype] == 'text'
@content_type = "text/plain"
@body["message"] = body
@body["hash"] = mail_hash(mail[:mail])
@body["id"] = mail[:id]
@body["lang"] = mail[:language]
@body["subj"] = replace_spaces(subj_temp)
elsif mail[:mailtype] == 'html'
@content_type = "multipart/alternative"
part :content_type => "text/plain",
:body => render_message("mail_mailing_list_all_plain", :message
=>
message, :id => mail[:id], :lang => mail[:language], :hash =>
mail_hash(mail[:mail]), :subj => replace_spaces(subj_temp))
part :content_type => "text/html",
:body => render_message("mail_mailing_list_all_html", :contenu
=>
contenu, :id => mail[:id], :lang => mail[:language], :hash =>
mail_hash(mail[:mail]))
end
end
Cette action va donc envoyer la newsletter, français/anglais, html/text
etc.
La fonction replace_spaces va remplacer les espaces du sujet de la
newsletter par des tirets pour créer un joli lien à mettre dans la
newsletter qui permettra aux personnes d’accéder à la newsletter online.
Le problème est que pour la première newsletter envoyée à la première
personne, tout va bien, mais ensuite il me mets des tirets dans les
sujets
des newsletter à envoyer.
Mais donc je me retrouve avec un sujet “à tirets” même dans les
news[:subjectfr] et news[:subjecten] alors qu’ils n’ont normalement
jamais
été modifiés et qu’ils sont récupérés directement depuis la bdd et
passés en
paramètre dans la boucle du controller newsletter.
Quelqu’un qui aura eut le courage de me lire jusqu’Ã la fin saurait
m’expliquer ce problème ?
Merci d’avance,
Romain