1

私はforms.pyにこの関数を持っています。現在、私の settings.py には電子メールの仕様がありません。

def send_email(FROM_NAME,FROM,TO,SUB,MSG,EXISTING_EMAIL,EXISTING_PASSWORD):

    FROMADDR = "%s <%s>" % (FROM_NAME, FROM)
    LOGIN    = EXISTING_EMAIL
    PASSWORD = EXISTING_PASSWORD
    TOADDRS  = [TO]
    SUBJECT  = SUB

    msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n"  % (FROMADDR, ", ".join(TOADDRS), SUBJECT) )
    msg +=  MSG+"\r\n"

    server = smtplib.SMTP('smtp.gmail.com', 587)
    server.set_debuglevel(1)
    server.ehlo()
    server.starttls()
    server.login(LOGIN, PASSWORD)
    server.sendmail(FROMADDR, TOADDRS, msg)
    server.quit()

views.py私はそれを私のように呼んでいます

send_email('my_name','from_me@gmail.com','to_som1@gmail.com','my      subject','mymessage','my_existing_email@gmail.com','password_to_existing_email')

これはローカルで機能します。yahoomail と gmail でテストしました。しかし、heroku にアップロードすると、"(535, '5.7.1 Web ブラウザーでログインしてから、もう一度やり直してください。詳しくは、\n5.7.1 support.google.com/mail/bin/answer.py をご覧ください。 ?answer=78754 et6sm2577249qab.8')"

誰でも助けることができますか?

4

4 に答える 4

1

これを使用したい:

FROMADDR = "%s <%s>" % (your_name, your_email)
于 2012-08-11T18:33:53.603 に答える
0

エラーメッセージにリンクされているページを読みましたか?

ユーザー名とパスワードの入力を繰り返し求められる場合、または「無効な資格情報」または「Web ログインが必要です」というエラーが表示される場合は、パスワードが正しいことを確認してください。パスワードは大文字と小文字が区別されることに注意してください。

パスワードが正しいことが確実な場合は、代わりにhttp://mail.google.comで Gmail のウェブ バージョンからアカウントにログインします。

ほとんどの場合、Web からサインインすると問題が解決します

于 2012-08-17T23:12:02.763 に答える
0

これが私のために働いたものです。Web アプリケーションからメールを送信しようとしたときにエラーが発生した後Please log in with your web browser and then try again. Learn more etc.、ローカル コンピューターからブラウザー経由でメールにログインしました。

ログインすると、上部に黄色の通知バーが表示され、外部アプリケーションがメールにアクセスできるようにするかどうかを尋ねてきました。これを確認したところ、Google から10 分以内にアプリケーションからアカウントにログインするよう求められました。これにより、アプリケーションがホワイトリストに登録されます。

于 2013-02-12T21:26:39.977 に答える
0

文字列補間を使用してメールを作成するべきではありません。これは、ヘッダー インジェクションを介してスパムを送信するためにサイトを慣れさせる良い方法です。メールを安全に作成する方法の詳細については、こちらの回答を参照してください。

一般的に言えば、アドレスからフォーマットする場合は、フォーマットを使用する必要がありますDisplay Name <email@example.com>。詳細については、 RFC 5322を参照してください。

于 2012-08-11T18:35:19.037 に答える