Django电子邮件 - 定义用户名和密码

时间:2017-08-15 14:30:24

标签: python django email attachment

documentation,我看到主机,端口,用户名和密码可以在后端文件中定义,但我想在我的代码本身中定义所有这些。 可以这样做吗?如果是这样,怎么样?

from django.core.mail import EmailMessage

email = EmailMessage(
    'Hello',
    'Body goes here',
    'from@example.com',
    ['to1@example.com', 'to2@example.com'],
    ['bcc@example.com'],
    reply_to=['another@example.com'],
    headers={'Message-ID': 'foo'},
)

message.attach_file('/images/weather_map.pdf')

提前致谢!

更新

我想避免在任何文件中存储凭据。最终,我希望代码提示用户名和密码作为输入变量。 的更新

我试过了:

import pandas as pd
from django.core.mail import EmailMessage
from django.core.mail.backends.smtp import EmailBackend
attachment_path=r'C:\path'+'\\'

connection = EmailBackend(
    host='host',
    port=587,
    username='login',
    password='password'
)

email = EmailMessage(
    'Hello',
    'Body goes here',
    'example@example.com',
    ['example@example.com'],
    ['example@example.com'],
    reply_to=['example@example.com'],
    headers={'Message-ID': 'foo'},
    connection=connection
)
email.attach_file(attachment_path+'attachment.pdf')
email.send()

2 个答案:

答案 0 :(得分:4)

您可以使用get_connection来实例化电子邮件后端:

from django.core.mail import get_connection

connection = get_connection(
    host='...',
    port='...',
    username='...',
    ...
)

然后在实例化EmailMessage时传递您的连接。

email = EmailMessage(
    'Hello',
    'Body goes here',
    'from@example.com',
    ['to1@example.com', 'to2@example.com'],
    ['bcc@example.com'],
    reply_to=['another@example.com'],
    headers={'Message-ID': 'foo'},
    connection=connection,
)

答案 1 :(得分:0)

Django只是一个Python包。你可以用百万种不同的方式做到这一点。

您可以在任何地方导入该类(例如views.py等):

C:\Users\rizagha>python --version
Python 2.7.10

C:\Users\rizagha>python
Python 2.7.10 (default, May 23 2015, 09:44:00) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> from decorator import decorator
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named decorator

然后在文档中调用它..

如果您不知道views.py是什么,那么我强烈推荐following the tutorial