3

私はいつも、Djangoの電子メールが電子メールクライアントのように動作しているという印象を持っていました。そのため、EMAIL_HOST、EMAIL_HOST_PASSWORD、およびEMAIL_HOST_USERを指定する必要があります。Djangoアプリは、OutlookやAppleのメールと同じように通常のメールクライアントのように動作します。

たまにメールを送信しなければならないアプリケーションをテストしています。しかし、私のアプリでは、次のステートメントを実行します。

subject, from_email, to = 'hello', 'noreply@dummy.com', 'dummy@gmail.com'
text_content = 'This is an important message.'
html_content = '<p>This is an <strong>important</strong> message.</p>'
msg = EmailMultiAlternatives(subject, text_content, from_email, [to])
msg.send()

私は得ています...

Traceback (most recent call last):
File "<console>", line 1, in <module>
.
.
SMTPRecipientsRefused: {'dummy@gmail.com': (504, '5.5.2 <wmsdesktop>: Helo command rejected: need fully-qualified hostname')}

ここで、wmsdesktopは私の開発システムの名前です。このエラーから、DjangoアプリがSMTPサーバーのように動作しているという印象を受けます。

または私はここで何かが欠けていますか?これに光を当ててください...

4

2 に答える 2

2

このコードをsettings.pyファイルに書き込みます

 EMAIL_USE_TLS = True
 EMAIL_HOST = 'smtp.gmail.com'
 EMAIL_PORT = 587
 EMAIL_HOST_USER = 'email@gmail.com'
 EMAIL_HOST_PASSWORD = 'email password'

その後、このコードをview.pyファイルで使用します

def sendEmail(request):
    subject, from_email, to = 'Hello', 'noreply@dummy.com', 'dummy@gmail.com'
    text_content = 'Dear Sir,'
    html_content = '<html><body><p>Hello World</p></body></html>'
    msg = EmailMultiAlternatives(subject, text_content, from_email, [to])
    msg.attach_alternative(html_content, "text/html")
    msg.send()
于 2013-03-15T05:39:35.070 に答える
2

すべての電子メール「クライアント」は、電子メールを送信するときに SMTP を使用します。

SMTP は、電子メールの送信方法です。

そうです、Django は電子メール (POP または IMAP) クライアントとしてではなく、電子メールを送信するときに SMTP クライアントとして機能します。

お使いの STMP サーバーは、逆引き DNS ルックアップで確認できる完全修飾ドメイン名 (example.com) を持つ他の SMTP サーバーのみにアクセスを制限しているようです。

これは、スパムの送信によく使用される匿名の SMTP サーバーを排除するのに役立つため、SMTP サーバーでは非常に一般的な方法です。

一般的に言えば、SMTP サーバーに依存しますが、この制限は認証済みユーザーには適用されません。

于 2013-03-15T00:57:15.483 に答える