2013-10-25 14 views
5

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.

+0

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

+1

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. –

+0

@ 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) –

Trả lời

0

Có thể đơn giản hơn khi sử dụng dịch vụ bên ngoài.

Dịch vụ (ví dụ: Mailchimp) rất dễ tích hợp. Bạn có thể thiết kế mẫu trong lớp của chúng và kích hoạt email bằng cách gửi dữ liệu hợp nhất từ ​​ứng dụng của bạn tới API dịch vụ. Về mặt chức năng, nó giống như hiển thị mẫu cục bộ và gửi thư qua SMTP nhưng chúng có các công cụ tinh vi để điều chỉnh định dạng thư cho thiết bị, theo dõi số trang không truy cập, cải thiện khả năng phân phối, báo cáo, v.v.

Dịch vụ như vậy thường có cấp miễn phí tối đa 1000 email mỗi tháng.

Các vấn đề liên quan