Đặt tên cho tài khoản email khi gửi email bằng Django thông qua Google Apps


84

Tôi đang gửi email cho người dùng sử dụng Django thông qua Google Apps.

Khi người dùng nhận được email được gửi từ ứng dụng Django, họ đến từ:
do_not_reply@domain.com

khi xem tất cả các email trong hộp thư đến, mọi người sẽ thấy người gửi của email là:
do_not_replyhoặc do_not_reply@domain.comtùy thuộc vào ứng dụng email được sử dụng

Nếu tôi đăng nhập vào tài khoản "do_not_reply" đó bằng chính trình duyệt và Google Apps rồi gửi email cho chính tôi, thì các email đó là từ:
Dont Reply<do_not_reply@domain.com>

Do đó, tên được hiển thị cho người gửi email trong hộp thư đến là:
Dont Reply

Trong Django, có cách nào để gắn "tên" vào tài khoản email đang được sử dụng để gửi email không?

Tôi đã xem lại mail.py của Django, nhưng không may mắn tìm được giải pháp
http://code.djangoproject.com/browser/django/trunk/django/core/mail.py?rev=5548

Sử dụng:
Django 1.1
Python 2.6 Cài đặt
Ubuntu 9.1.EMAIL_HOST
= 'smtp.gmail.com'

Cảm ơn

Câu trả lời:


142

Bạn thực sự có thể sử dụng "Dont Reply <do_not_reply@domain.com>"làm địa chỉ email mà bạn gửi.

Hãy thử điều này trong shell của dự án django của bạn để kiểm tra xem nó có hoạt động với gapps không:

>>> from django.core.mail import send_mail
>>> send_mail('subject', 'message', 'Dont Reply <do_not_reply@domain.com>', ['youremail@example.com'])

1
Cảm ơn vì đăng! Ước gì tôi đã nhìn thấy điều này ngày hôm qua b / c nó sẽ giúp tôi tiết kiệm được chút thời gian. Tôi vừa đọc tài liệu tại < docs.djangoproject.com/en/dev/topics/email/… > và cuối cùng đọc kỹ hơn "from_email" và tìm thấy câu trả lời giống như bạn. Tôi chỉ đến đây để đăng câu trả lời khi tôi nhìn thấy câu trả lời của bạn. Dù sao, cảm ơn một lần nữa! Vui mừng khi cuối cùng đã làm việc này
rfadams

10
Bạn cũng có thể đặt DEFAULT_FROM_EMAIL trên settings.py như thế này: DEFAULT_FROM_EMAIL = 'Dont Reply <do_not_reply@domain.com>'
Marc Tudurí

Chỉ cần chắc chắn, bạn không thiết lập cùng một email với tên như auth_user, bởi vì nó sẽ thất bại khi xác thực
iamkhush

@iamkhush - Ý bạn là gì setting the same email with name as aut_user. Tôi đang gặp lỗi xác thực. Tôi không thể hiểu tại sao?
say mê Python

0

Ngoài phương thức send_mail để gửi email, EmailMultiAlternatives cũng có thể được sử dụng để gửi email có nội dung HTML với nội dung văn bản thay thế.

thử điều này trong dự án của bạn

from django.core.mail import EmailMultiAlternatives
text_content = "Hello World"
# set html_content  
email = EmailMultiAlternatives('subject', text_content, 'Dont Reply <do_not_replay@domain.com>', ['youremail@example.com'])

email.attach_alternative(html_content, 'text/html')
email.send()

Thao tác này sẽ gửi thư đến youremail@example.com với Không trả lời sẽ được xóa tên thay vì email 'do_not_replay@domain.com'.


-5

Tôi sử dụng mã này để gửi qua smtp gmail (sử dụng ứng dụng google). và tên người gửi là OK

def send_mail_gapps(message, user, pwd, to):
    import smtplib
    mailServer = smtplib.SMTP("smtp.gmail.com", 587)
    mailServer.ehlo()
    mailServer.starttls()
    mailServer.ehlo()
    mailServer.login(user, pwd)
    mailServer.sendmail(user, to, message.as_string())
    mailServer.close()

Đây thực sự là mã giống như các lớp EmailMessage của Django sử dụng trong nền. Bất chấp, tôi đã thử phương pháp của bạn và email vẫn có do_not_replytên người gửi. Cảm ơn bạn đã cố gắng mặc dù
rfadams

3
và những gì về cài đặt.DEFAULT_EMAIL_FROM?
Sáu
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.