2019年10月24日 星期四

透過 Django 寄送 EMAIL範例教學


之前介紹過 Django 匯入 Excel 檔案進行處理,

今天要來介紹:

透過 Django 寄送 EMAIL範例教學

在現代社會的書信往來,

大多已被 EMAIL 取代,

Django 也提供的信件處理相關的服務,

與 Python 相同,

必須 import 需要的模組:


from django.core.mail import EmailMultiAlternatives, get_connection


同時在 settings.py 要加上:


EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'


在程式碼方面,

必須先建立與 Mail Server 的連線:


conn = get_connection()
conn.username = tmp_server.m_user      # usernameconn.password = tmp_server.m_password  # passwordconn.host = tmp_server.m_server        # mail serverconn.open()


接著設定 Email 的信件內容:


test_from = Emails.objects.get(e_status='default').e_from
test_title = Emails.objects.get(e_status='default').e_title


context = {'insight_url': '........', 'course_id': '........' }
email_template_name = 'insight_dash.html't = loader.get_template(email_template_name)

mail_list = target_mails  # 收件者的郵件 List

subject, from_email, to = test_title, test_from, mail_list
html_content = t.render(dict(context))  # str(test_content)msg = EmailMultiAlternatives(subject, html_content, from_email, to)
msg.attach_alternative(html_content, "text/html")

conn.send_messages([msg, ])  # 寄送郵件


當然最後要關閉與 Server 間的連線


conn.close()


這封信件是以 HTML 方式寄出,

如果要以純文字寄送的話:



from django.core.mail import send_mail

send_mail('Subject here', 'Here is the message.', 'from@example.com',    
           ['to@example.com'], fail_silently=False)


直接以 send_mail 方式寄出即可,

除此以外,

也可以將 Mail Server 的相關設定存在 settings.py 中:


# EMAIL setting

EMAIL_USE_TLS = TrueEMAIL_HOST = 'mail.server'EMAIL_PORT = 587EMAIL_HOST_USER = 'admin@test'EMAIL_HOST_PASSWORD = 'test'DEFAULT_FROM_EMAIL = 'From '



這樣就可省略上述的建立連線,

這裡是不及格研究室,

今天的主題是:

透過 Django 寄送 EMAIL範例教學




沒有留言: