Jak utworzyć system ICS w szynach i wysłać go jako załącznik w poczcie?Jak utworzyć system ICS w szynach i wysłać go jako załącznik w poczcie?
Odpowiedz
Korzystanie ActionMailer
(API documentation), po prostu wygenerować plik i dodać go do attachments
:
class ApplicationMailer < ActionMailer::Base
def send_ics(recipient)
attachments['event.ics'] = File.read('path/to/event.ics')
mail(:to => recipient, :subject => "Calendar event!")
end
end
Można to zrobić bez faktycznie zapisywania pliku do systemu plików, ale zostawię to ćwiczenie do ty.
Można to zrobić za pomocą ri_cal GEM: Aby utworzyć wydarzenie plik ICS chcesz utworzyć zdarzenie:
event = RiCal.Event do
description "MA-6 First US Manned Spaceflight"
dtstart DateTime.parse("2/20/1962 14:47:39")
dtend DateTime.parse("2/20/1962 19:43:02")
location "Cape Canaveral"
add_attendee "[email protected]"
alarm do
description "Segment 51"
end
end
Następnie użyć .export(stream)
na zdarzenie (to wstawić zdarzenie kalendarz otoki, który zawiera tylko to wydarzenie, więc nie musisz go owijać). Strumień można ustawić na plik, który można dołączyć tak, jak sugerował Andy, lub można wywołać tę metodę bez argumentu stream, który zwróci ciąg znaków, który można umieścić w załączniku w niezmienionym stanie. Że coś będzie wyglądać następująco:
class UserMailer < ActionMailer::Base
def send_event_email(user, event)
attachments['event.ics'] = event.export()
mail(:to => user.email, :subject => "Calendar event!")
end
end
Do wysyłania załącznika za pośrednictwem SES ważne jest ustawienie mime/type. Tak więc załącznik staje się załącznikami ['event.ics'] = {: mime_type => "text/calendar",: content => event.export()} –
Dodaj ten klejnot do Gemfile
gem 'mail'
gem 'icalendar'
Musisz config poczty gem wewnątrz config/enviroment.rb
na przykład dla RoR 4.2
# Load the Rails application.
require File.expand_path('../application', __FILE__)
# Initialize the Rails application.
Rails.application.initialize!
# Initialize sendgrid
ActionMailer::Base.smtp_settings = {
:user_name => 'username',
:password => 'password',
:domain => 'something.com',
:address => 'smtp.something.com',
:port => 587,
:authentication => :plain,
:enable_starttls_auto => true
}
Użytkownik Model
has_may :calendar_events
Pola
- fullname
- poczty
modelu CalendarEvent
belongs_to :user
pola
- tytuł
- opis
- start_time
- end_time
- IDENTYFIKATOR_UŻYTKOWNIKA
app/mailers/mail_notifier.rb
class MailNotifier < ActionMailer::Base
default from: '[email protected]'
def send_calendar_event(calendar_event, organizer)
@cal = Icalendar::Calendar.new
@cal.event do |e|
e.dtstart = calendar_event.start_time
e.dtend = calendar_event.end_time
e.summary = calendar_event.title
e.organizer = "mailto:#{organizer.mail}"
e.organizer = Icalendar::Values::CalAddress.new("mailto:#{organizer.mail}", cn: organizer.fullname)
e.description = calendar_event.description
end
mail.attachments['calendar_event.ics'] = { mime_type: 'text/calendar', content: @cal.to_ical }
mail(to: calendar_event.user.mail,
subject: "[SUB] #{calendar_event.description} from #{l(calendar_event.start_time, format: :default)}")
end
end
Teraz można zadzwonić MailNotifier od kontrolera z następującego kodu
MailNotifier.send_calendar_event(@calendar_event, organizer_user).deliver
- 1. Jak wysłać plik zip jako załącznik w pythonie?
- 2. Jak wysłać załącznik z wiadomością e-mail w Racket?
- 3. Wyślij przesłany plik jako załącznik
- 4. Jak utworzyć system Mutex w C#
- 5. Załącznik Obraz wysłać pocztą przy użyciu Python
- 6. Jak wysłać wygenerowany plik PDF jako załącznik do wiadomości e-mail z C#?
- 7. Załącznik PHPmailer i pdf
- 8. TYPE_SYSTEM_OVERLAY w ICS
- 9. Plik ics - Nie można otworzyć dołączonego pliku .ICS w systemie iOS7
- 10. Android: Jak wysłać obraz jako załącznik wiadomości e-mail z aplikacji?
- 11. PHPMailer, wysłał załącznik jako inna nazwa
- 12. Jak usunąć zdjęcie jako załącznik, ale wykazują w organizmie email
- 13. Jak zapisać wyliczenie jako ciąg do bazy danych w szynach?
- 14. Jak zaktualizować spotkanie kalendarza ICS?
- 15. Jak wysłać załącznik za pomocą poczty e-mail wp_mail
- 16. wget plik i wysłać go do bash
- 17. Jak utworzyć dziewięcio-plaster i używać go w mojej aplikacji?
- 18. Django - jak utworzyć plik i zapisać go w FileField modelu?
- 19. Grupa i liczba w szynach
- 20. Grails wysyłają żądanie jako JSON i parsują go w kontrolerze
- 21. Utwórz załącznik w języku Lyx
- 22. Jak wysłać wynik zapytania w formacie CSV?
- 23. Jak pozorować/abstrakcyjny system plików w trybie go?
- 24. Dołączanie PNG w poczcie na urządzeniu LP2844Z (drukarka Zebra)
- 25. iPhone załącznik e-mail
- 26. Django: openpyxl zapisuje skoroszyt jako załącznik
- 27. dodaj załącznik jako strumień we wspólnej wiadomości e-mail
- 28. Wyślij StringList jako załącznik za pośrednictwem poczty e-mail - Indy
- 29. Jak wysłać załącznik ze zdjęciami e-mail w systemie iOS za pomocą żądania POST do SendGrid?
- 30. Styl ICS w aplikacjach Froyo i Gingerbread
Myślę, że jest również pytanie, jak do generowania ICS :-P –
Może. Czuję, że to jest prosta część. –