在字符串中使用冒号

时间:2014-10-31 02:03:30

标签: python django python-2.7 django-email

我为自己的网站构建了自定义邀请应用。要激活邀请,您必须遵循发送到您的电子邮件的链接。

然后问题变成了,我的电子邮件发送功能在发送字符串时遇到问题,如下所示:

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!

虽然已发送电子邮件,但邮件并非render

1 个答案:

答案 0 :(得分:2)

生成的电子邮件违反了电子邮件的格式:

标题的键后面必须有一个空格,并且必须有两个换行符才能将消息分开:

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

在构建它时,该链接被解释为电子邮件标题。

此外,您应该考虑使用Django的内置电子邮件功能。您的代码易受tp标头注入攻击。请阅读:https://docs.djangoproject.com/en/dev/topics/email/