码迷,mamicode.com
首页 > 编程语言 > 详细

48. Python 发邮件(1)

时间:2018-01-10 00:03:49      阅读:204      评论:0      收藏:0      [点我收藏+]

标签:sage   1.5   测试   alt   关闭   51cto   send   too   [1]   

python发送邮件

1.通过python发邮件步骤:

前提:开通了第三方授权,可以使用smtp服务

1.创建smtp对象

2.连接smtp服务器,默认端口号都是25

3.登陆自己的邮箱账号

4.调用发送消息函数,参数:发件人、收件人、消息内容

5.关闭连接


2.邮件消息注册:

首先创建一个消息对象:

msg = email.mime.multipart.MIMEMultipart()                     #通过这个类创建消息

msg['from'] = '18969@163.com'

msg['to'] = '97481@qq.com;14973@qq.com;lig@d.com'

msg['subject'] = 'aji111‘

分别指明邮件的发件人,收件, 只代表显示的问题,如下图:

技术分享图片


3.消息内容:

首先,先定义一个字符串,来表示你得消息内容:

context= ‘’’hello world’’’ ## 正文

txt = email.mime.text.MIMEText(_text=content, _subtype="html") ## 定义文本以后,标明将context指定成什么格式,html,txt

msg.attach(txt) ## 再注册到消息中

_subtype 这个参数就决定了,你是以html解析的形式去发送,还是以text的形式去发送。



准备文件:

(1)测试配置文件:

文件1:message.conf (配置文件)

From = 28699@qq.com
To = 58380@qq.com,25166@qq.com,w7@189.cn,8717@qq.com,12261@qq.com
Subject = '测试邮件'
message = '''大家好:
测试邮件
测试邮件
以上
谢谢
'''


(2)读取文件conf文件工具,并测试

文件2:util.py (工具文件)

import codecs
import re

fileName = "message.conf"

def getProperty(property):
    with codecs.open(fileName, encoding="utf-8") as f:
        if property != "message":
            for line in f.readlines():
                if line.startswith("{0} = ".format(property)):
                    value = line.split("{0} = ".format(property))[1]
                    print value.strip('\n')
                    return value.strip('\n')

        else:
            reg = re.compile(r"message = '''((.*\n)*)'''")
            result = reg.findall(f.read())
            print result[0][0]
            return  result[0][0]

getProperty("From")
getProperty("To")
getProperty("Subject")
getProperty("message")

文件2 调用 文件1 的参数,获得到对应的值,测试结果如图:

技术分享图片

测试完成后,注销输出信息和调用函数

技术分享图片


(3)发送邮件脚本

3.文件:sendtext.py (邮件脚本文件)

import email.mime.multipart
import email.mime.text
import email.header
from util import getProperty
import smtplib

#消息内容
msg = email.mime.multipart.MIMEMultipart()
sendFrom = getProperty("From")
sendTo = getProperty("To")
sendSubject = getProperty("Subject")
sendMessage = getProperty("message")

msg["From"] = sendFrom
msg["To"] = sendTo
msg['Subject'] = email.header.Header(sendSubject)

text = email.mime.text.MIMEText(sendMessage, 'plain', 'utf-8')
msg.attach(text)

#发送
smtp = smtplib.SMTP_SSL("smtp.qq.com", 465)
smtp.login('28699@qq.com', 'xrusbcaae')
smtp.sendmail(sendFrom, sendTo.split(","), msg.as_string())
smtp.quit()

执行发送邮件:

技术分享图片

48. Python 发邮件(1)

标签:sage   1.5   测试   alt   关闭   51cto   send   too   [1]   

原文地址:http://blog.51cto.com/286577399/2059237

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!