Как отправить запрос по электронной почте о событии из Gmail в Outlook в Django 2

Я пытался создать систему управления встречами, в которой пользователь может отправлять письмо с приглашением на встречу администратору. Я могу отправить одно письмо от пользователя к администратору, но как я могу отправить электронное письмо о событии из Gmail в outlook

Вот мой код settings.py

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_HOST_USER = '[email protected]'
EMAIL_HOST_PASSWORD = '******'
EMAIL_PORT = 587
EMAIL_USE_TLS = True

вот мой views.py

def sendRequest(request):
    email = EmailMessage('Subject', 'Body', to=['[email protected]'])
    email.send()
    return HttpResponseRedirect(request.META.get('HTTP_REFERER'))

Теперь мне нужно отправить электронное письмо о событии, а не одно письмо из моей системной учетной записи Gmail.

Я немного подхожу к google по этому поводу, но не нахожу подходящего решения шаг за шагом


person Antu    schedule 31.10.2018    source источник


Ответы (2)


Что вы можете сделать, так это создать .ics файл с информацией о приглашении (вы можете использовать шаблон Django для записи .ics файла или просто сгенерировать его, используя простой код Python).

Вы можете увидеть спецификацию файла .ics и прочитать о нем подробнее здесь:

https://en.wikipedia.org/wiki/ICalendar

Затем вы можете просто прикрепить этот .ics файл к своему электронному письму:

email = EmailMessage('Meeting invitation', 'Email body...', '[email protected]', ['[email protected]', ])
email.attach('invite.ics', invite_file_content, 'text/calendar')
email.send()

В качестве альтернативы вы можете использовать это стороннее приложение django-cal

Возможно, этот пост также может дать вам некоторое представление о проблеме: Как получить приглашение на собрание для правильной интеграции с Gmail / Google Apps?

person Vitor Freitas    schedule 31.10.2018
comment
Спасибо за ваш ответ. У меня проблема с invite_file_content этой ошибкой, как решить эту проблему? - person Antu; 31.10.2018

Сначала необходимо создать файл .ics

BEGIN:VCALENDAR
METHOD:REQUEST
PRODID:Microsoft Exchange Server 2010
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Bangladesh Standard Time
BEGIN:STANDARD
DTSTART:16010101T000000
TZOFFSETFROM:+0600
TZOFFSETTO:+0600
END:STANDARD
BEGIN:DAYLIGHT
DTSTART:16010101T000000
TZOFFSETFROM:+0600
TZOFFSETTO:+0600
END:DAYLIGHT
END:VTIMEZONE
BEGIN:VEVENT
ORGANIZER;CN=dekkoappoint:MAILTO:[email protected]
ATTENDEE;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS- 
ACTION;RSVP=TRUE;[email protected]:MAILTO:[email protected]
DESCRIPTION;LANGUAGE=en-US:Hi This is a test mail\n
UID:040000008200E00074C5B7101A82E008000000009CCD2D80E57BD401000000000000000
 010000000F02E168DB7BF3A4BAC1FAE1547D716BE
SUMMARY;LANGUAGE=en-US:Test Event
DTSTART;TZID=Bangladesh Standard Time:20181115T130000
DTEND;TZID=Bangladesh Standard Time:20181115T140000
CLASS:PUBLIC
PRIORITY:5
DTSTAMP:20181114T064433Z
TRANSP:OPAQUE
STATUS:CONFIRMED
SEQUENCE:0
LOCATION;LANGUAGE=en-US:Dhaka University Area (Dhaka University Area Dhaka\
 , Bangladesh)
X-MICROSOFT-CDO-APPT-SEQUENCE:0
X-MICROSOFT-CDO-OWNERAPPTID:2116776604
X-MICROSOFT-CDO-BUSYSTATUS:TENTATIVE
X-MICROSOFT-CDO-INTENDEDSTATUS:BUSY
X-MICROSOFT-CDO-ALLDAYEVENT:FALSE
X-MICROSOFT-CDO-IMPORTANCE:1
X-MICROSOFT-CDO-INSTTYPE:0
X-MICROSOFT-DONOTFORWARDMEETING:FALSE
X-MICROSOFT-DISALLOW-COUNTER:FALSE
X-MICROSOFT-LOCATIONDISPLAYNAME:Dhaka University Area
X-MICROSOFT-LOCATIONSOURCE:Device
X-MICROSOFT-LATITUDE:23.7303
X-MICROSOFT-LONGITUDE:90.3933
X-MICROSOFT-LOCATIONCITY:Dhaka University Area
X-MICROSOFT-LOCATIONSTATE:Dhaka
X-MICROSOFT-LOCATIONCOUNTRY:Bangladesh
X-MICROSOFT-LOCATIONS:[{"DisplayName":"Dhaka University Area"\,"LocationAnn
 otation":""\,"LocationSource":3\,"LocationUri":""\,"Latitude":23.7303\,"Lo
 ngitude":90.3933\,"LocationStreet":""\,"LocationCity":"Dhaka University Ar
 ea"\,"LocationState":"Dhaka"\,"LocationCountry":"Bangladesh"\,"LocationPos
 talCode":""\,"LocationFullAddress":""}]
BEGIN:VALARM
DESCRIPTION:REMINDER
TRIGGER;RELATED=START:-PT15M
ACTION:DISPLAY
END:VALARM
END:VEVENT
END:VCALENDAR

После этого в view.py

from django.core.mail import EmailMessage

def sendRequest(request):
    email = EmailMessage('Subject', 'email body', '[email protected]', ['[email protected]'])
    email.attach_file('assets/invite.ics', 'text/calendar')
    email.send()
    return HttpResponseRedirect(request.META.get('HTTP_REFERER'))
person Antu    schedule 15.11.2018