python发邮件_python发邮件教程 - CSDN
精华内容
参与话题
  • Python发送邮件(最全)

    万次阅读 2018-06-28 11:19:07
    简单邮件传输协议(SMTP)是一种协议,用于在邮件服务器之间发送电子邮件和路由电子邮件Python提供smtplib模块,该模块定义了一个SMTP客户端会话对象,可用于使用SMTP或ESMTP侦听器守护程序向任何互联网机器发送邮件...

    简单邮件传输协议(SMTP)是一种协议,用于在邮件服务器之间发送电子邮件和路由电子邮件。

    Python提供smtplib模块,该模块定义了一个SMTP客户端会话对象,可用于使用SMTP或ESMTP侦听器守护程序向任何互联网机器发送邮件。

    这是一个简单的语法,用来创建一个SMTP对象,稍后将演示如何用它来发送电子邮件 -

    import smtplib
    
    smtpObj = smtplib.SMTP( [host [, port [, local_hostname]]] )

    这里是上面语法的参数细节 -

    • host - 这是运行SMTP服务器的主机。可以指定主机的IP地址或类似yiibai.com的域名。这是一个可选参数。

    • port - 如果提供主机参数,则需要指定SMTP服务器正在侦听的端口。通常这个端口默认值是:25

    • local_hostname - 如果SMTP服务器在本地计算机上运行,那么可以只指定localhost选项。

    SMTP对象有一个sendmail的实例方法,该方法通常用于执行邮件发送的工作。它需要三个参数 -

    • sender - 具有发件人地址的字符串。

    • receivers - 字符串列表,每个收件人一个。

    • message - 作为格式如在各种RFC中指定的字符串。

    1.使用Python发送纯文本电子邮件

    示例

    以下是使用Python脚本发送一封电子邮件的简单方法 -

    #!/usr/bin/python3import smtplib
    
    sender = 'from@fromdomain.com'receivers = ['to@todomain.com']
    
    message = """From: From Person <from@fromdomain.com>
    To: To Person <to@todomain.com>
    Subject: SMTP e-mail test
    
    This is a test e-mail message.
    """try:
       smtpObj = smtplib.SMTP('localhost')
       smtpObj.sendmail(sender, receivers, message)         
       print "Successfully sent email"except SMTPException:   print "Error: unable to send email"

    在这里,已经发送了一封基本的电子邮件,使用三重引号,请注意正确格式化标题。一封电子邮件需要一个FromTo和一个Subject标题,与电子邮件的正文与空白行分开。

    要发送邮件,使用smtpObj连接到本地机器上的SMTP服务器。 然后使用sendmail方法以及消息,从地址和目标地址作为参数(即使来自和地址在电子邮件本身内,这些并不总是用于路由邮件)。

    如果没有在本地计算机上运行SMTP服务器,则可以使用smtplib客户端与远程SMTP服务器进行通信。除非您使用网络邮件服务(如gmail或Yahoo! Mail),否则您的电子邮件提供商必须向您提供可以提供的邮件服务器详细信息。以腾讯QQ邮箱为例,具体如下:

    mail = smtplib.SMTP('smtp.qq.com', 587) # 端口465或587

    2.使用Python发送HTML电子邮件

    当使用Python发送邮件信息时,所有内容都被视为简单文本。 即使在短信中包含HTML标签,它也将显示为简单的文本,HTML标签将不会根据HTML语法进行格式化。 但是,Python提供了将HTML消息作为HTML消息发送的选项。

    发送电子邮件时,可以指定一个Mime版本,内容类型和发送HTML电子邮件的字符集。
    以下是将HTML内容作为电子邮件发送的示例 -

    #!/usr/bin/python3import smtplib
    
    message = """From: From Person <from@fromdomain.com>
    To: To Person <to@todomain.com>
    MIME-Version: 1.0
    Content-type: text/html
    Subject: SMTP HTML e-mail test
    
    This is an e-mail message to be sent in HTML format
    
    <b>This is HTML message.</b>
    <h1>This is headline.</h1>
    """try:
       smtpObj = smtplib.SMTP('localhost')
       smtpObj.sendmail(sender, receivers, message)         
       print "Successfully sent email"except SMTPException:   print "Error: unable to send email"

    3.发送附件作为电子邮件

    要发送具有混合内容的电子邮件,需要将Content-type标题设置为multipart / mixed。 然后,可以在边界内指定文本和附件部分。

    一个边界以两个连字符开始,后跟一个唯一的编号,不能出现在电子邮件的消息部分。 表示电子邮件最终部分的最后一个边界也必须以两个连字符结尾。

    所附的文件应该用包(“m”)功能编码,以便在传输之前具有基本的64编码。

    4.发送示例

    首先我们要知道用python代理登录qq邮箱发邮件,是需要更改自己qq邮箱设置的。在这里大家需要做两件事情:邮箱开启SMTP功能 、获得授权码。之后我们来看看如何更改模板代码,实现使用Python登录QQ邮箱发送QQ邮件。

    注意:也可以使用其他服务商的 SMTP 访问(QQ、网易、Gmail等)。

    使用QQ邮件发送邮件之前如何设置授权码,参考:

    http://service.mail.qq.com/cgi-bin/help?subtype=1&&id=28&&no=1001256

    4.1.发送一纯文本邮件到指定邮件

    #! /usr/bin/env python#coding=utf-8from email.mime.text import MIMETextfrom email.header import Headerfrom smtplib import SMTP_SSL#qq邮箱smtp服务器host_server = 'smtp.qq.com'#sender_qq为发件人的qq号码sender_qq = '7697****@qq.com'#pwd为qq邮箱的授权码pwd = '****kenbb***' ## xh**********bdc#发件人的邮箱sender_qq_mail = '7697****@qq.com'#收件人邮箱receiver = 'yiibai.com@gmail.com'#邮件的正文内容mail_content = '你好,这是使用python登录qq邮箱发邮件的测试'#邮件标题mail_title = 'Maxsu的邮件'#ssl登录smtp = SMTP_SSL(host_server)#set_debuglevel()是用来调试的。参数值为1表示开启调试模式,参数值为0关闭调试模式smtp.set_debuglevel(1)
    smtp.ehlo(host_server)
    smtp.login(sender_qq, pwd)
    
    msg = MIMEText(mail_content, "plain", 'utf-8')
    msg["Subject"] = Header(mail_title, 'utf-8')
    msg["From"] = sender_qq_mail
    msg["To"] = receiver
    smtp.sendmail(sender_qq_mail, receiver, msg.as_string())
    smtp.quit()

    执行上面代码后,登录接收邮件的邮件帐号,这里接收邮件的账号为:yiibai.com@gmail.com,登录 http://gmail.com 应该会看到有接收到邮件如下 -

    注意:有时可能被认为是垃圾邮件,如果没有找到可从“垃圾邮件”查找一下。

    4.2.给多个人发送邮件

    #! /usr/bin/env python#coding=utf-8from email.mime.text import MIMETextfrom email.header import Headerfrom smtplib import SMTP_SSL#qq邮箱smtp服务器host_server = 'smtp.qq.com'#sender_qq为发件人的qq号码sender_qq = '7697****@qq.com'#pwd为qq邮箱的授权码pwd = 'h**********bdc' ## h**********bdc#发件人的邮箱sender_qq_mail = '7697****@qq.com'#收件人邮箱receivers = ['yiibai.com@gmail.com','****su@gmail.com']#邮件的正文内容mail_content = '你好,这是使用python登录qq邮箱发邮件的测试'#邮件标题mail_title = 'Maxsu的邮件'#ssl登录smtp = SMTP_SSL(host_server)#set_debuglevel()是用来调试的。参数值为1表示开启调试模式,参数值为0关闭调试模式smtp.set_debuglevel(1)
    smtp.ehlo(host_server)
    smtp.login(sender_qq, pwd)
    
    msg = MIMEText(mail_content, "plain", 'utf-8')
    msg["Subject"] = Header(mail_title, 'utf-8')
    msg["From"] = sender_qq_mail
    msg["To"] = Header("接收者测试", 'utf-8') ## 接收者的别名smtp.sendmail(sender_qq_mail, receivers, msg.as_string())
    smtp.quit()

    执行上面代码后,登录接收邮件的邮件帐号,这里接收邮件的账号为:yiibai.com@gmail.com,登录 http://gmail.com 应该会看到有接收到邮件如下 -

    4.3.使用Python发送HTML格式的邮件

    Python发送HTML格式的邮件与发送纯文本消息的邮件不同之处就是将MIMEText中_subtype设置为html。代码如下:

    #! /usr/bin/env python#coding=utf-8from email.mime.text import MIMETextfrom email.header import Headerfrom smtplib import SMTP_SSL#qq邮箱smtp服务器host_server = 'smtp.qq.com'#sender_qq为发件人的qq号码sender_qq = '7697****@qq.com'#pwd为qq邮箱的授权码pwd = '***bmke********' ###发件人的邮箱sender_qq_mail = '7697****@qq.com'#收件人邮箱receiver = 'yiibai.com@gmail.com'#邮件的正文内容mail_content = "你好,<p>这是使用python登录qq邮箱发送HTML格式邮件的测试:</p><p><a href='http://www.yiibai.com'>易百教程</a></p>"#邮件标题mail_title = 'Maxsu的邮件'#ssl登录smtp = SMTP_SSL(host_server)#set_debuglevel()是用来调试的。参数值为1表示开启调试模式,参数值为0关闭调试模式smtp.set_debuglevel(1)
    smtp.ehlo(host_server)
    smtp.login(sender_qq, pwd)
    
    msg = MIMEText(mail_content, "html", 'utf-8')
    msg["Subject"] = Header(mail_title, 'utf-8')
    msg["From"] = sender_qq_mail
    msg["To"] = Header("接收者测试", 'utf-8') ## 接收者的别名smtp.sendmail(sender_qq_mail, receiver, msg.as_string())
    smtp.quit()

    执行上面代码后,登录接收邮件的邮件帐号,这里接收邮件的账号为:yiibai.com@gmail.com,登录 http://gmail.com 应该会看到有接收到邮件如下 -

    4.4.Python发送带附件的邮件

    要发送带附件的邮件,首先要创建MIMEMultipart()实例,然后构造附件,如果有多个附件,可依次构造,最后使用smtplib.smtp发送。

    实现代码如下所示 -

    #! /usr/bin/env python#coding=utf-8import smtplibfrom email.mime.text import MIMETextfrom email.header import Headerfrom smtplib import SMTP_SSLfrom email.mime.text import MIMETextfrom email.mime.multipart import MIMEMultipartfrom email.header import Header#qq邮箱smtp服务器host_server = 'smtp.qq.com'#sender_qq为发件人的qq号码sender_qq = '7697****@qq.com'#pwd为qq邮箱的授权码pwd = '*****mkenb****' ###发件人的邮箱sender_qq_mail = '7697****@qq.com'#收件人邮箱receiver = 'yiibai.com@gmail.com'#邮件的正文内容mail_content = "你好,<p>这是使用python登录qq邮箱发送HTML格式邮件的测试:</p><p><a href='http://www.yiibai.com'>易百教程</a></p>"#邮件标题mail_title = 'Maxsu的邮件'#邮件正文内容msg = MIMEMultipart()#msg = MIMEText(mail_content, "plain", 'utf-8')msg["Subject"] = Header(mail_title, 'utf-8')
    msg["From"] = sender_qq_mail
    msg["To"] = Header("接收者测试", 'utf-8') ## 接收者的别名#邮件正文内容msg.attach(MIMEText(mail_content, 'html', 'utf-8')) 
    # 构造附件1,传送当前目录下的 test.txt 文件att1 = MIMEText(open('attach.txt', 'rb').read(), 'base64', 'utf-8')
    att1["Content-Type"] = 'application/octet-stream'# 这里的filename可以任意写,写什么名字,邮件中显示什么名字att1["Content-Disposition"] = 'attachment; filename="attach.txt"'msg.attach(att1) 
    # 构造附件2,传送当前目录下的 runoob.txt 文件att2 = MIMEText(open('yiibai.txt', 'rb').read(), 'base64', 'utf-8')
    att2["Content-Type"] = 'application/octet-stream'att2["Content-Disposition"] = 'attachment; filename="yiibai.txt"'msg.attach(att2)#ssl登录smtp = SMTP_SSL(host_server)#set_debuglevel()是用来调试的。参数值为1表示开启调试模式,参数值为0关闭调试模式smtp.set_debuglevel(1)
    smtp.ehlo(host_server)
    smtp.login(sender_qq, pwd)
    
    smtp.sendmail(sender_qq_mail, receiver, msg.as_string())
    smtp.quit()

    执行上面代码后,登录接收邮件的邮件帐号,这里接收邮件的账号为:yiibai.com@gmail.com,登录 http://gmail.com 应该会看到有接收到邮件如下 -

    4.5.在 HTML 文本中添加图片

    邮件的HTML文本中一般邮件服务商添加外链是无效的,所以要发送带图片的邮件内容,可以参考下面的实例代码实现:

    #! /usr/bin/env python#coding=utf-8import smtplibfrom email.mime.text import MIMETextfrom email.header import Headerfrom smtplib import SMTP_SSLfrom email.mime.image import MIMEImagefrom email.mime.multipart import MIMEMultipartfrom email.mime.text import MIMEText#qq邮箱smtp服务器host_server = 'smtp.qq.com'#sender_qq为发件人的qq号码sender_qq = '7697****3@qq.com'#pwd为qq邮箱的授权码pwd = 'h******mk*****' ##发件人的邮箱sender_qq_mail = '7697****3@qq.com'#收件人邮箱receiver = ['yiibai.com@gmail.com','h****u@qq.com']#邮件的正文内容mail_content = ""#邮件标题mail_title = 'Maxsu的邮件'#邮件正文内容#msg = MIMEMultipart()msg = MIMEMultipart('related')
    msg["Subject"] = Header(mail_title, 'utf-8')
    msg["From"] = sender_qq_mail
    msg["To"] = Header("接收者测试", 'utf-8') ## 接收者的别名msgAlternative = MIMEMultipart('alternative')
    msg.attach(msgAlternative)#邮件正文内容mail_body = """
     <p>你好,Python 邮件发送测试...</p>
     <p>这是使用python登录qq邮箱发送HTML格式和图片的测试邮件:</p>
     <p><a href='http://www.yiibai.com'>易百教程</a></p>
     <p>图片演示:</p>
     <p>![](cid:send_image)</p>
    """#msg.attach(MIMEText(mail_body, 'html', 'utf-8'))msgText = (MIMEText(mail_body, 'html', 'utf-8'))
    msgAlternative.attach(msgText) 
    # 指定图片为当前目录fp = open('my.png', 'rb')
    msgImage = MIMEImage(fp.read())
    fp.close() 
    # 定义图片 ID,在 HTML 文本中引用msgImage.add_header('Content-ID', '<send_image>')
    msg.attach(msgImage)#ssl登录smtp = SMTP_SSL(host_server)#set_debuglevel()是用来调试的。参数值为1表示开启调试模式,参数值为0关闭调试模式smtp.set_debuglevel(1)
    smtp.ehlo(host_server)
    smtp.login(sender_qq, pwd)
    
    smtp.sendmail(sender_qq_mail, receiver, msg.as_string())
    smtp.quit()

    执行上面代码后,登录接收邮件的邮件帐号,这里接收邮件的账号为:yiibai.com@gmail.com,登录 http://gmail.com 应该会看到有接收到邮件如下 -电动叉车

    参考:http://www.yiibai.com/python/python_sending_email.htm

    展开全文
  • PYTHON实现自动发送邮件

    千次阅读 2018-12-18 17:28:00
    纯个人记录使用,如有侵权请联系我删除 会用到smtplib 跟email,因为具体使用方法可以百度 源码 def send_eamil(receiver): global msg sender = '***@163.com' psd = '***' #是授权密码不是邮箱... subject=...

    纯个人记录使用,如有侵权请联系我删除

    会用到smtplib 跟email,因为具体使用方法可以百度

    源码

    def send_eamil(receiver):
        global msg
        sender = '***@163.com'
        psd = '***'    #是授权密码不是邮箱登录密码
        mail_host='smtp.163.com'
        subject='资源'
        to_addrs=receiver.split(',')
        #创建带附件的实例
        msg=MIMEMultipart()
        msg['Subject']=Header(subject,'utf-8')
        msg['from']=Header(sender,'utf-8')
        msg['To']=",".join(to_addrs)      #多个收件人
        #创建正文,把文本添加到msg类中
        msg.attach(MIMEText('资源,请查看附件','plain','utf-8'))
        #构造附件
        file_path='文件路径'
        att1=MIMEText(open(file_path,'rb').read(),
                      'base64','utf-8')
        #att1["Content-Type"]='application/octet-stream;name=%s'%Header(filename,'utf-8').encode('utf-8')         #与下边功能一致
        #att1["Content-Disposition"]='attachment;file_name=%s'%Header('%s'%filename,'utf-8').encode('utf-8')      #与下边功能一致
        att1.add_header('Content-Disposition', 'attachment', filename=名字随便起)#没有这三行会出现文件结尾变成bin现象
        att1.add_header('Content-ID', '<0>')
        att1.add_header('X-Attachment-Id', '0')
        msg.attach(att1)#将附件添加到类文件
        try:
            smtp=smtplib.SMTP()
            smtp.set_debuglevel(1)  #显示发送过程
            smtp.connect(mail_host)
            smtp.login(sender,psd)
            smtp.sendmail(sender,to_addrs,msg.as_string())
            smtp.quit()
            print('发送成功')
        except Exception as result:
            print('发送失败,异常为%s'%result)
    
    if __name__ == '__main__':
        make_excel()
        send_eamil('***@qq.com,*@126.com')

    遇到的问题

    1.出现554错误:由于网易机制问题,需要开启授权码,设置好就行了

    2.发出的附件出现后缀为bin的现象是因为没加header以下是例子,代码也有标注,两种方式都行,个人喜欢简短一些的

    name.add_header('Content-Disposition', 'attachment', file_name='C:/Users/yue.sun/Desktop/自己/py/工作/逸云节点.xls')

    name.add_header('Content-ID','<0>')

    name.add_header('X-Attachment-Id', '0')

     

    代码内容借鉴这位的

    https://blog.csdn.net/u012209894/article/details/78414638

     

     

     

    展开全文
  • Python 简单发送邮件 / 发送带各种附件邮件

    万次阅读 多人点赞 2020-05-05 19:03:46
    写个自动发送邮件python脚本。 用脚本发送邮件思路是:登陆邮箱-->写邮件-->发送邮件 发送邮箱设置: 得开通自己邮箱的 SMTP 功能,具体可百度。 以163网易邮箱为例: 设置 --> POP3/SMTP/IMAP --&...

    写个自动发送邮件的python脚本。

    用脚本发送邮件思路是:登陆邮箱-->写邮件-->发送邮件

    发送邮箱设置:

    得开通自己邮箱的 SMTP 功能,具体可百度。

    以163网易邮箱为例: 设置 -->  POP3/SMTP/IMAP  -->  设置POP3/SMTP/IMAP 勾选保存

    一、发送简单邮件:

    用STMP库

    import smtplib
    #发送字符串的邮件
    from email.mime.text import MIMEText
    #处理多种形态的邮件主体我们需要 MIMEMultipart 类
    from email.mime.multipart import MIMEMultipart
    #处理图片需要 MIMEImage 类
    from email.mime.image import MIMEImage
    
    #设置服务器所需信息
    fromaddr = '137xxx@163.com'#邮件发送方邮箱地址
    password = 'zzz'#密码(部分邮箱为授权码) 
    toaddrs = ['137xxx@163.com', '137xxxxx@qq.com']#邮件接受方邮箱地址,注意需要[]包裹,这意味着你可以写多个邮件地址群发
    
    
    #设置email信息
    #---------------------------发送字符串的邮件-----------------------------
    #邮件内容设置
    message = MIMEText('hello,ziqiiii','plain','utf-8')
    #邮件主题       
    message['Subject'] = 'ziqiiii test email' 
    #发送方信息
    message['From'] = sender 
    #接受方信息     
    message['To'] = receivers[0]  
    #---------------------------------------------------------------------
    
    
    #登录并发送邮件
    try:
        server = smtplib.SMTP('smtp.163.com')#163邮箱服务器地址,端口默认为25
        server.login(fromaddr,password)
        server.sendmail(fromaddr, toaddrs, message.as_string())
        print('success')
        server.quit()
    
    except smtplib.SMTPException as e:
        print('error',e) #打印错误

     

    二、发送各种带附件的邮件

    使用MIMEMultipart来标示这个邮件是多个部分组成的,然后attach各个部分。如果是附件,则add_header加入附件的声明。

    MIME有很多种类型,这个略麻烦,如果附件是图片格式,我要用MIMEImage,如果是音频,要用MIMEAudio,如果是word、excel,我都不知道该用哪种MIME类型了,得上google去查。

    最懒的方法就是,不管什么类型的附件,都用MIMEApplication,MIMEApplication默认子类型是application/octet-stream。

    import smtplib
    from email.mime.text import MIMEText
    from email.mime.image import MIMEImage
    from email.mime.multipart import MIMEMultipart
    from email.mime.application import MIMEApplication 
    
    if __name__ == '__main__':
            fromaddr = '137xxxx@163.com'
            password = 'password'
            toaddrs = ['137xxxx@163.com', '137xxxx@qq.com']
    
            content = 'hello, this is email content.'
            textApart = MIMEText(content)
    
            imageFile = '1.png'
            imageApart = MIMEImage(open(imageFile, 'rb').read(), imageFile.split('.')[-1])
            imageApart.add_header('Content-Disposition', 'attachment', filename=imageFile)
    
            pdfFile = '算法设计与分析基础第3版PDF.pdf'
            pdfApart = MIMEApplication(open(pdfFile, 'rb').read())
            pdfApart.add_header('Content-Disposition', 'attachment', filename=pdfFile)
        
    
            zipFile = '算法设计与分析基础第3版PDF.zip'
            zipApart = MIMEApplication(open(zipFile, 'rb').read())
            zipApart.add_header('Content-Disposition', 'attachment', filename=zipFile)
    
            m = MIMEMultipart()
            m.attach(textApart)
            m.attach(imageApart)
            m.attach(pdfApart)
            m.attach(zipApart)
            m['Subject'] = 'title'
    
            try:
                server = smtplib.SMTP('smtp.163.com')
                server.login(fromaddr,password)
                server.sendmail(fromaddr, toaddrs, m.as_string())
                print('success')
                server.quit()
            except smtplib.SMTPException as e:
                print('error:',e) #打印错误
    

     

     

     

     

     

    参考自:

    1.简单三步,用python发邮件

    2.飘逸的python - 发送带各种类型附件的邮件

    3.python收发邮件(demo)--smtplib--poplib

    展开全文
  • python实现发送邮件

    千次阅读 2019-02-02 13:16:38
    SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。SMTP协议属于TCP/IP协议簇,它帮助每台计算机在发送或中转信件时找到下一个...

    知识背景:

    1. SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。SMTP协议属于TCP/IP协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地。通过SMTP协议所指定的服务器,就可以把E-mail寄到收信人的服务器上了,整个过程只要几分钟。SMTP服务器则是遵循SMTP协议的发送邮件服务器,用来发送或中转发出的电子邮件。
    2. Internet Mail Access Protocol(缩写为IMAP,以前称作交互邮件访问协议(interactive mail access protocol))IMAP是斯坦福大学在1986年开发的一种邮件获取协议。它的主要作用是邮件客户端(例如MS Outlook Express)可以通过这种协议从邮件服务器上获取邮件的信息,下载邮件等。当前的权威定义是RFC3501。IMAP协议运行在TCP/IP协议之上,使用的端口是143。它与POP3协议的主要区别是用户可以不用把所有的邮件全部下载,可以通过客户端直接对服务器上的邮件进行操作。 

    首先,你要知道,你申请邮箱之后用邮箱来收发电子邮件,电子邮件并不是存在你本地的电脑上的,而是存在邮箱服务提供商的数据中心里,如下图所示

    你的邮箱账号和密码就是用来登陆 Gmail 或者 QQ 邮箱的邮箱服务器的

     

    而在这些服务器集群里,会跑着 IMAP 服务器和 SMTP 服务器

    当接收邮件时,情况如下图所示

    用户接收邮件时,可以通过 Web 界面来登录邮箱并阅读邮件,也可以通过第三方邮件客户端,包括但不限于 Outlook,Foxmail,Mutt等来收取,而第三方客户端与邮件服务器通信时遵守的协议就是 IMAP

     

    通过 IMAP 协议,第三方客户端可以下载邮件头或者邮件全文到本地,如上图中箭头所示

    以前也有用 POP3 协议的,至于 POP3 与 IMAP 的区别不是重点就暂时不写了

    当发送邮件时,情况如下图所示

    比如使用 Gmail 的用户 A 要给使用 QQ 邮箱的用户 B 发送一封电子邮件,那么流程如下:

     

    首先 A 与 Gmail 的 SMTP 服务器通信,将邮件标题、内容、收件人邮件地址等信息发送至 Gmail 的 SMTP 服务器

    然后,Gmail 的 SMTP 将该封邮件投递至 QQ 邮箱的 SMTP 服务器

    B 收到 QQ 邮箱的提醒,通过 IMAP 协议收取该封邮件

    所以,不管是用户向邮件服务器发送邮件信息,还是邮件服务器向另一台邮件服务器发送邮件信息,都需要走 SMTP 协议

    #coding: utf-8
    
    from email.mime.text import MIMEText
    import smtplib
    
    mail_content = "This is a content of the mail"
    try:
        content = MIMEText(mail_content, 'plain', 'utf-8') # 第一个参数:邮件的内容;第二个参数:邮件内容的格式,普通的文本,可以使用:plain,如果想使内容美观,可以使用:html;第三个参数:设置内容的编码,这里设置为:utf-8
        reveivers = "xxx1@qq.com,xxx2@qq.com"
        content['To'] = reveivers # 设置邮件的接收者,多个接收者之间用逗号隔开
        content['From'] = str("xxx0@qq.com") # 邮件的发送者,最好写成str("这里填发送者"),不然可能会出现乱码
        content['Subject'] = "这是一封测试邮件" # 邮件的主题
    
        ##############使用qq邮箱的时候,记得要去开启你的qq邮箱的smtp服务;##############
        # 方法:
        # 1)登录到你的qq邮箱;
        # 2)找到首页顶部的【设置】并点击;
        # 3)找到【账户】这个选项卡并点击,然后在页面中找到“SMTP”相关字样,找到【开启】的超链接,点击后会告诉你开启方法(需要发个短信),然后按照指示操作,最终会给你一个密码,这个密码可以用于在代码中当作邮箱密码
        # 注意!!!:163邮箱之类的不知道要不要这些操作,如果是163邮箱你可以忽略此步骤
        ###########################################################################
        smtp_server = smtplib.SMTP_SSL("smtp.qq.com", 465) # 第一个参数:smtp服务地址(你发送邮件所使用的邮箱的smtp地址,在网上可以查到,比如qq邮箱为smtp.qq.com) 第二个参数:对应smtp服务地址的端口号
        smtp_server.login("xxx0", "****************") # 第一个参数:发送者的邮箱账号 第二个参数:对应邮箱账号的密码
        #################################
    
        smtp_server.sendmail("xxx0@qq.com", ["xxx1@qq.com" ,"xxx2@qq.com"], content.as_string()) # 第一个参数:发送者的邮箱账号;第二个参数是个列表类型,每个元素为一个接收者;第三个参数:邮件内容
        smtp_server.quit() # 发送完成后加上这个函数调用,类似于open文件后要跟一个close文件一样
    except Exception as e:
        print str(e)

    资料参考:https://www.zhihu.com/question/27287653

    展开全文
  • Python实现自动发送邮件

    万次阅读 多人点赞 2019-04-07 20:22:52
    最近比较闲的慌,在自己学习Python爬虫,学到了用Python发送邮件,觉得这个可能以后比较实用。以下项目用QQ邮箱为例。 需要用到的模块: smtplib,email 提醒!QQ 邮箱一般默认关闭SMTP服务,我们得先去开启它...
  • Python 发邮件

    千次阅读 2018-01-15 15:32:22
    这里用到了Python的两个包来发送邮件: smtplib 和 email 。  Python 的 email 模块里包含了许多实用的邮件格式设置函数,可以用来创建邮件“包裹”。使用的 MIMEText 对象,为底层的 MIME(Multipurpose Internet...
  • python3 发送邮件

    千次阅读 2019-10-23 14:20:52
    python发邮件需要掌握两个模块的用法,smtplib和email,这俩模块是python自带的,只需import即可使用。smtplib模块主要负责发送邮件,email模块主要负责构造邮件。 smtplib模块主要负责发送邮件:是一个发送邮件的...
  • 点击上方蓝色小字,关注“涛哥聊Python”重磅干货,第一时间送达利用Python发送邮件相信我们每个人都用过邮箱,虽然其它社交聊天软件已经非常普及,并且这些社交软件大多都具有文件发送的...
  • python 发送邮件及附件

    千次阅读 2018-10-03 14:54:54
    用授权码登录发送邮件及附件 需要对邮件进行POP3/SMTP服务设置,例如qq邮箱: 特别提示- ---&gt; 千万不要泄漏自己的授权码  这里的邮箱的域名与端口根据自己的实际邮箱去填写(这是qq邮箱) ...
  • python发邮件

    2019-09-11 17:08:23
    建立与你所用邮箱的服务器连接(这个要去查一下,如果用SMTP,默认断口就是25),然后登录邮箱,发送邮件,退出服务器,其实就是多了连接服务器和断开服务器,其余和手动发送过程一致。 各函数的详细用法(要import ...
  • python之发送邮件

    千次阅读 2019-05-07 10:43:38
    import smtplib from email.mime.text import MIMEText mailserver = "smtp.126.com" #邮箱服务器地址 username_send = 'kindenough@126.com' #邮箱用户名 ...username_recv = '503690160@qq.co...
  • python发邮件详解,smtplib和email模块详解

    万次阅读 多人点赞 2018-09-06 18:20:56
    在介绍具体的实现python发邮件的具体操作之前,我觉得有必要介绍下SMTP,更有助于理解python发邮件的实现原理。SMTP协议属于TCP/IP协议簇,即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它...
  • 检查和答复电子邮件会占用大量的时间。当然,你不能只写一个程序来处理所有电子邮件,因为每个消息都需要有自己的回应。但是,一旦知道怎么编写收发电子邮件的程序,就可以自动化大量与电子邮件相关的任务。 例如,...
  • 前置条件本地安装了Python,导入了win32com、pythoncom等模块。2.代码import win32com.client as win32 import warnings import sys import pythoncom reload(sys) sys.setdefaultencoding('utf8') warnings....
  • 1、最近公司实现部分数据统计、分析的报表进行每天定时发送到相关人员的邮箱之中的配置代码被人为删除了,需要重新恢复该功能,由于原先是在linux上使用shell配置发送,实在是太繁琐,所以准备使用python来实现该...
  • python使用163邮箱发送邮件

    万次阅读 2019-01-26 22:20:09
    开启163的smtp服务器(绑定自己的手机) 163邮箱地址:https://mail.163.com/ 记住自己的SMTP服务器    Smtp服务器地址 和 端口 Ssl: smtp.163.com:465 非ssl : smtp.163....from email.mime.t...
  • python调用sendmail发送邮件

    万次阅读 2017-03-30 23:21:19
    这里介绍一下,调用本机linux自身sendmail服务发送邮件。不需要登录,没有限制。 1. 安装:  #yum install -y sendmail 2. 启动服务:   #service sendmail start   检查服务是否加入自启行列
  • python3使用腾讯企业邮箱发送邮件

    万次阅读 2018-09-20 21:27:14
    1.腾讯企业邮箱SMTP服务器... 2.确保腾讯企业邮箱中开启了SMTP服务: 3.示例代码: #!/usr/bin/env python3 # -*- coding: utf-8 -*- import smtplib from email.mime.text import MIMEText from email.utils...
  • python发送、抄送邮件

    千次阅读 2017-11-17 11:22:16
    python发送抄送邮件 sendemial.py #!/usr/bin/python # -*- coding: UTF-8 -*- import smtplib from email.mime.text import MIMEText from email.header import Header from email.mime.multipart import ...
  • python 使用exchange发送邮件

    万次阅读 2018-03-03 13:57:36
    安装库exchangelib pip install exchangelib 脚本内容 # coding=utf-8 # # Created on 2018/2/ from exchangelib import DELEGATE, Account, Credentials, Configuration, NTLM, Message, Mailbox,...from ex...
1 2 3 4 5 ... 20
收藏数 107,048
精华内容 42,819
关键字:

python发邮件