0

サイト用のカスタム招待アプリを作成しました。招待を有効にするには、メールに送信されたリンクに従う必要があります。

問題は、私のメール送信機能で、次のようなメッセージとして文字列を送信する際に問題が発生することです。

custom_message = "http://www.something.com%s" % invite.get_absolute_url()

多数のテストの後、問題は に関係している:ようです。

全体を省略できるので、コロンは必要ありませんhttp://send_custom_email()しかし、この文字列を関数に渡すときに関数が機能しないのはなぜですか

参考までに、これは私のメール送信機能です。

def send_custom_email(recipient, custom_message):

    to = recipient
    gmail_user = 'someone@gmail.com'
    gmail_pwd = GMAIL_PWD
    smtpserver = smtplib.SMTP("smtp.gmail.com",587)
    smtpserver.ehlo()
    smtpserver.starttls()
    smtpserver.ehlo
    smtpserver.login(gmail_user, gmail_pwd)
    header = 'To:' + to + '\n' + 'From: ' + gmail_user + '\n' + 'Subject:Invite Link \n'
    print header

    unicoded_custom_message = unicode(custom_message)
    msg = header + unicoded_custom_message

    smtpserver.sendmail(gmail_user, to, msg)
    print 'done!'
    smtpserver.close()

テスト:

>>> custom_message ="http://www.somesite.com%s"
>>> send_custom_email(recipient='someotherperson@mailinator.com', custom_message=custom_message)
To:someone@mailinator.com
From: someotherperson@gmail.com
Subject:Invite Link

done!

メールは送信されますが、メッセージが表示されませ

4

1 に答える 1

2

生成された電子メールは、電子メールの形式に違反しています:

ヘッダーのキーの後にスペースが必要で、メッセージを区切るために 2 つの改行が必要です。

header = 'To: ' + to + '\n' + 'From: ' + gmail_user + '\n' + 'Subject: Invite Link \n\n'

作成中、リンクは電子メール ヘッダーとして解釈されます。

また、Django の組み込みメール機能の使用を検討する必要があります。あなたのコードは脆弱です tp ヘッダー インジェクション。読んでください: https://docs.djangoproject.com/en/dev/topics/email/ !

于 2014-10-31T04:50:53.687 に答える