在字符串中使用冒号

问题描述:

我为我的网站构建了自定义邀请应用程序。要激活邀请,您必须遵循发送到您的电子邮件的链接。在字符串中使用冒号

然后问题就变成了,我的电子邮件发送功能无法传送一个字符串,看起来像这样的消息:

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 = '[email protected]' 
    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='[email protected]', custom_message=custom_message) 
To:[email protected] 
From: [email protected] 
Subject:Invite Link 

done! 

尽管电子邮件已发送,但邮件不包含render

+0

这个例子是否完整?我期望看到一个格式化运算符('%')或对'.format()'的调用。 – 2014-10-31 02:17:41

+1

你说你有“麻烦”,并且问题“似乎”是冒号,但不要指定你得到的错误,所以不可能知道这里发生了什么。请尽可能提供更多信息。 – Totem 2014-10-31 02:17:43

+0

我在OP中更新了'custom_message'的内容以包含格式化程序。我离开它的原因是因为它似乎不相关。至于错误,我没有收到任何错误,这是问题所在。整个字符串不包含在消息体中。它完全缺失,但它似乎失败了。 – ApathyBear 2014-10-31 02:25:11

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

必须有一个头的钥匙后的空间,有必须是两个新行这样的消息中分离出来:

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

当你正在建设它,链接被解释为电子邮件标题。

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

+0

哇,谢谢! – ApathyBear 2014-10-31 05:31:23