Xin chào Tôi đang cố gắng viết dịch vụ thư riêng biệt được tách riêng với ứng dụng bình của chúng tôi. Vì vậy, tôi đang tìm cách gửi email chào mừng khi người dùng đăng nhập lần đầu vào ứng dụng bình của chúng tôi. Tôi đang sử dụng Celery và rabbitmq để làm điều đó một cách không đồng bộ.Sử dụng mẫu html để gửi email trong python
Đây là chức năng email của tôi -
sen = '[email protected]'
pwd = 'my_password'
@celery.task
def send_email(nickname, email):
msg = MIMEMultipart('alternative')
msg['Subject'] = 'my_sub'
msg['From'] = sen
msg['To'] = email
html = <b>test_body</b>
part1 = MIMEText(html, 'html')
msg.attach(part1)
server = smtplib.SMTP("smtp.gmail.com", 587)
server.ehlo()
server.starttls()
server.login(sen, pwd)
server.sendmail(sen, [email], msg.as_string())
server.close()
Ban đầu tôi đã sử dụng render_template bình để có được phần nội dung html và chủ đề. Nhưng tôi không muốn sử dụng phần mở rộng bình (tôi có lý do của tôi). Vì vậy, câu hỏi của tôi là:
1) Làm thế nào tôi có thể sử dụng mẫu email để các trường chủ đề và nội dung có thể được cấu hình dễ dàng?
2) Làm cách nào để đặt người gửi email và mật khẩu mặc định trong mẫu tệp cấu hình/email (có thể liên quan đến q1)?
3) Dường như tôi có nhiều mã khủng khiếp để gửi một email đơn giản. Bạn có thể đề xuất một số kỹ thuật tối ưu hóa (bỏ qua các bước) không?
Xin cảm ơn trước sự giúp đỡ của bạn.
Một lý do khác để sử dụng mẫu email - thông số vượt qua. Để gửi email được cá nhân hóa. – user2216194
Nếu bạn không muốn sử dụng công cụ mẫu như 'jinja2', bạn sẽ xem xét về [chuỗi thư viện chuẩn python.}] Http://docs.python.org/2/library/string.html#template- chuỗi) cung cấp thay thế chuỗi đơn giản. –
@ user2216194, tôi cũng có các yêu cầu tương tự, bạn có đưa ra giải pháp không? và lý do của bạn cho việc không sử dụng jinja là gì? hoặc tại sao không render_template? (chỉnh sửa: nó sẽ giúp tôi trong việc đánh giá các giải pháp) –