2017-03-09 82 views
1

根據我的代碼中if語句的狀態,我需要根據if語句的狀態發送不同郵件給不同郵件的用戶。目前,我發送電子郵件這樣的:根據if語句發送帶有消息的電子郵件Django

send_mail(
    'Subject', 
    'Body', 
    'From', 
    '['To']' 
) 

但是,我需要一種方法,我可以根據道路用戶導航的if語句,像這樣改變電子郵件的正文:

# drop down to select a, b, or c 
if dropdown == 'a': 
    sendmail(to b,c) 
if dropdown == 'b': 
    sendmail(to a,c) 
if dropdown == 'c': 
    sendmail(to a,b) 

我可以在每個if陳述中發送電子郵件,但我覺得有一種方法可以讓我有一個電子郵件模板,根據電子郵件發送的位置,我可以填充該模板。

謝謝你的幫助!

回答

1

使用列表

recipients = ['a','b','c'] 
recipients.remove('drop down') 
sendmail(recipients) 
+0

謝謝你的迴應!我將如何添加電子郵件正文,因爲每個if語句中的電子郵件正文都會有所不同?或者這太超出了範圍? – GreenSaber

+0

您也可以使用一些類似的機構,但由於這回答您的原始問題,請標記爲正確併發佈一個新問題,但一定要發佈https://stackoverflow.com/help/mcve – e4c5

+0

嗯,以及您的輸入我確信我能弄清楚我的問題,再次感謝您的幫助! – GreenSaber

1

使用變量,並根據條件改變它們的值。

subject = '' 
body = '' 
from = '[email protected]' 
recipients = ['a','b','c'] 

if dropdown == 'a': 
    subject = 'Subject A' 
    body = 'Body A' 
    recipients = ['a','b','c'] 
elif dropdown == 'b': 
    subject = 'Subject B' 
    body = 'Body B' 
    recipients = ['b'] 
elif dropdown == 'c': 
    subject = 'Subject C' 
    body = 'Body C' 
    recipients = ['a','b'] 

sendmail(subject, body, from) 
+0

你是否必須在最後的'sendmail'中指定收件人? – GreenSaber

+0

這是很多代碼,如果收件人數量增長,它會增長。 – e4c5

+0

而你正在發送給兩個不正確的收件人,這種方法錯誤就像是規範而不是例外 – e4c5

0

你總是可以在一個時間

sender = '[email protected]' 
recipients = ['a', 'b', 'c'] 
for recipient in recipients: 
    if recipient == dropdown: 
     continue 
    subject = 'Subject {}'.format(recipient.upper()) 
    body = 'Email body for {}'.format(recipient.upper()) 
    sendmail(subject, body, sender, [recipient]) 

我猜你有合適的對象,A,B,C發送一個郵件實際上是用戶對象。你可以使用一些模板,併爲每個模板渲染字符串。它比視圖中的字符串操作好得多。假設你有遵循

email_subject.txt

{{ recipient_name }}, this is the subject 

email_body.txt(和HTML,如果你會做HTML郵件)

Hey {{ recipient_name }}, 
This is the email specially for you 

From Support 

您查看可能

sender = '[email protected]' 
recipients = get_recipients_but_exclude(dropdown) 
for recipient in recipients: 
    subject = render_to_string('email_subject.txt', {'recipient_name': recipient.get_full_name()}) 
    body = render_to_string('email_body.txt', {'recipient_name': recipient.get_full_name()}) 
    sendmail(subject, body, sender, [recipient])