相关疑难解决方法(0)

Python电子邮件模块:表单标题"From",带有一些unicode名称+电子邮件

我在Python电子邮件模块的帮助下生成电子邮件.
以下是几行代码,它们演示了我的问题:

msg = email.MIMEMultipart.MIMEMultipart('alternative')

msg['From'] = "somemail@somedomain.com"

msg.as_string()

Out[7]: 'Content-Type: multipart/alternative;\n boundary="===============9006870443159801881=="\nMIME-Version: 1.0\nFrom: somemail@somedomain.com\n\n--===============9006870443159801881==\n\n--===============9006870443159801881==--' 
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,这里的一切都很好,从字段中包含电子邮件蚂蚁很酷.但是,如果我想在电子邮件之前添加一些名称呢?特别是unicode one:

In [8]: u.get_full_name()
Out[8]: u'\u0414\u0438\u043c\u0430 \u0426\u0443\u043a\u0430\u043d\u043e\u0432'

In [9]: msg = email.MIMEMultipart.MIMEMultipart('alternative')

In [10]: msg['From'] = "%s <%s>" % (u.get_full_name(), "email@at.com")

In [11]: msg.as_string()
Out[11]: 'Content-Type: multipart/alternative;\n boundary="===============5792069034892928634=="\nMIME-Version: 1.0\nFrom: =?utf-8?b?0JTQuNC80LAg0KbRg9C60LDQvdC+0LIgPGVtYWlsQGF0LmNvbT4=?=\n\n--===============5792069034892928634==\n\n--===============5792069034892928634==--'
Run Code Online (Sandbox Code Playgroud)

在这里你可以看到,所有的字符串(名称,电子邮件)都是用base64编码的(甚至是非常合乎逻辑的,MIMEMultipart将如何知道该字符串包含unicode和非unicode部分).
所以,我的问题是:我怎么告诉电子邮件模块让我很漂亮"从"标题如下:
From: =?UTF-8?B?0JLQmtC+0L3RgtCw0LrRgtC1?= <admin@notify.vk.com> ?

另外,我学到了一点RFC2822(http://www.faqs.org/rfcs/rfc2822.html,p.3.6.2).它说:

始发者字段指示消息源的邮箱."发件人:"字段指定消息的作者,即负责编写消息的人员或系统的邮箱."发件人:"字段指定负责实际传输消息的代理的邮箱.例如,如果秘书要为另一个人发送消息,则秘书的邮箱将出现在"发件人:"字段中,而实际作者的邮箱将出现在"发件人:"字段中.如果消息的发起者可以由单个邮箱指示并且作者和发送器相同,则不应使用"发件人:"字段.否则,两个字段都应该出现.

这是否意味着我应该将这两个标题结合起来?(来自和发件人).我有点困惑,因为我注意到我的Gmail中有很多电子邮件(通过"显示原始文件"查看),其中显示了来自字段名称和电子邮件.

感谢帮助.

python email

13
推荐指数
1
解决办法
8078
查看次数

在python中的电子邮件的from字段中添加发件人姓名

我正在尝试使用以下代码发送电子邮件.

import smtplib
from email.mime.text import MIMEText

sender = 'sender@sender.com'

def mail_me(cont, receiver):
    msg = MIMEText(cont, 'html')
    recipients = ",".join(receiver)
    msg['Subject'] = 'Test-email'
    msg['From'] = "XYZ ABC"
    msg['To'] = recipients
    # Send the message via our own SMTP server.
    try:
        s = smtplib.SMTP('localhost')
        s.sendmail(sender, receiver, msg.as_string())
        print "Successfully sent email"
    except SMTPException:
        print "Error: unable to send email"
    finally:
        s.quit()


cont = """\
   <html>
     <head></head>
     <body>
       <p>Hi!<br>
          How are you?<br>
          Here is the <a href="http://www.google.com">link</a> you wanted.
       </p>
     </body>
   </html> …
Run Code Online (Sandbox Code Playgroud)

python email smtplib

7
推荐指数
2
解决办法
1万
查看次数

标签 统计

email ×2

python ×2

smtplib ×1