У меня довольно простое приложение на Rails, которое позволяет пользователям управлять своими клиентами и создавать кейс для каждого клиента. Когда дело создается, детали отправляются на два адреса электронной почты (различное содержимое в каждом письме) и, используя драгоценный камень, отправляют информацию на FreeagentCentral
.
Я реализовал delayed_job
, который хорошо работает для вызова Freeagent API
, но я думаю, что, вероятно, есть лучший, более дешевый способ отправки электронных писем. Кажется, это занимает довольно много времени.
В настоящее время у меня есть следующий код в моем приложении Rails 2.3.
kases_controller.rb
# POST /kases
# POST /kases.xml
def create
@company = Company.find(params[:kase][:company_id])
@kase = @company.kases.new(params[:kase])
if @kase.save
UserMailer.deliver_makeakase("dropbox@1223111.domain.highrisehq.com", "Highrise", @kase) if params[:sendtohighrise]
UserMailer.deliver_makeakaseteam("surveymanager@domain.co.uk", "Highrise", @kase) if params[:notify_team_of_creation]
@kase.delay.create_freeagent_project(current_user) if params[:send_to_freeagent]
redirect_to(@kase)
#flash[:notice] = 'Case was successfully created.'
flash[:notice] = fading_flash_message("Case was successfully created.", 5)
else
render :new
end
end
user_mailer.rb
def makeakase(email, name, kase, bccemails = [])
recipients email
from "info@domain.co.uk"
subject "FW: Case creation from Survey Manager"
bcc bccemails
sent_on Time.now
body :name => name, :kase => kase
end
def makeakaseteam(email, name, kase = [])
recipients email
from "info@domain.co.uk"
subject "A new case has been created."
sent_on Time.now
body :name => name, :kase => kase
content_type "text/html"
end
Я ищу какой-либо совет по уменьшению количества отправленных писем или способ добавления писем в отложенные задания.
Я использую PostmarkApp для отправки электронных писем, что является еще одним драгоценным камнем. Подробности о которых можно найти здесь: postmark-gem