aaron-1015 3 years ago
parent
commit
70afca4aa7
1 changed files with 71 additions and 0 deletions
  1. 71 0
      OpenshotService/mail.py

+ 71 - 0
OpenshotService/mail.py

@@ -0,0 +1,71 @@
+"""
+    程式用途
+        AI主播寄送郵件。
+    參考
+        Gmail SMTP: https://kb.synology.com/zh-tw/SRM/tutorial/How_to_use_Gmail_SMTP_server_to_send_emails_for_SRM
+"""
+import dataset
+import smtplib
+from email.mime.multipart import MIMEMultipart      # email內容載體
+from email.mime.text import MIMEText                # 用於製作文字內文
+from email.mime.base import MIMEBase                # 用於承載附檔
+from email import encoders                          # 用於附檔編碼
+import datetime
+import ssl
+
+
+def get_db(db_name, table_name):
+    db = dataset.connect(f'mysql://choozmo:pAssw0rd@db.ptt.cx:3306/{db_name}?charset=utf8mb4')
+    user_table = db[table_name]
+    return user_table
+
+
+def mail_to_users(user_id: int, subject: str, contents: str):
+    """
+        1. 透過id查詢DB, 找出使用者email、username
+        2. 訊息制定(如: Aaron, 您的影片於2021/7/12 14:00 "ChoozMo測試影片" 完成了,請前往官網: "url")下載。
+        3. 傳送。
+            - 根據server不同,可以區分。
+            - 先用Gmail。(可以動就好)
+    """
+    # 連線DB得到使用者郵件、姓名
+    db = dataset.connect('mysql://choozmo:pAssw0rd@db.ptt.cx:3306/AI_anchor?charset=utf8mb4')
+    rows = db.query(f'SELECT * FROM users WHERE id={user_id}')
+    for row in rows:
+        email = row['email']
+        name = row['username']
+        print(name, email)
+
+    # 寄件者使用的Gmail帳戶資訊
+    time_now = datetime.datetime.utcnow() + datetime.timedelta(hours=8)
+    with open('password.txt') as f:
+        gmail_user, gmail_password = f.readlines()
+    # gmail_user = 'aaron@choozmo.com'
+    # gmail_password = 'Choozmo1015'
+    from_address = gmail_user
+    # 設定信件內容與收件人資訊
+    to_address = email  if type(email) == type([]) else [email]
+
+    # 開始組合信件內容
+    mail = MIMEMultipart()
+    mail['From'] = from_address
+    mail['To'] = ', '.join(to_address)
+    mail['Subject'] = subject
+    # 將信件內文加到email中
+    mail.attach(MIMEText(contents))
+    print(to_address)  
+
+    # 設定smtp伺服器並寄發信件    
+    smtpserver = smtplib.SMTP_SSL("smtp.gmail.com", 465)
+    smtpserver.ehlo()
+    smtpserver.login(gmail_user, gmail_password)
+    smtpserver.sendmail(from_address, to_address, mail.as_string())
+    smtpserver.quit()
+
+
+if __name__ == '__main__':
+    mail_to_users(4, 'subject', 'contents')
+
+
+    
+