此篇文章做个记录。
使用脚本来发送email在python有两个模块来支持:smtplib和email
此处是讲述如何用scrapy来发送,那么不管是何种语言或框架,它的过程都是类似于连接数据库,需要一个先构建一个发送器,通过对应的端口号,用户名,密码,以及发送的文本或命令。当然发送email此处变成了邮箱和密码,增加了从哪来(from)到哪去(to)的过程.并以两种方式来实现
*上菜:
两种方式不论是从爬虫中去部署配置还是setting读取都必须基于scrapy.mail模块的MailSender类实现
from scrapy.mail import MailSender
1,setting读取,首先setting文件设置
MAIL_FROM##'scrapy@localhost'用于发送email的地址(address)(填入 From:) 。
MAIL_HOST##默认值: 'localhost'发送email的SMTP主机(host)。
MAIL_PORT##默认值: 25发用邮件的SMTP端口
MAIL_USER##默认值: None SMTP用户。如果未给定,则将不会进行SMTP认证(authentication)。
MAIL_PASS##默认值: None 用于SMTP认证,与 MAIL_USER 配套的密码。
MAIL_TLS##默认值: False 强制使用STARTTLS。STARTTLS能使得在已经存在的不安全连接上,通过使用SSL/TLS来实现安全连接。
MAIL_SSL##默认值: False强制使用SSL加密连接
请记住MAIL_USER和MAIL_PASS是从对应邮箱当中进行SMTP认证得来的,不是邮箱账户密码
此处是163邮箱认证样例这里写图片描述
使用mailer = MailSender.from_settings(settings)##从setting读取配置,构建发送器
2实际上第二种是将配置写到MailSender()类当中去了
mailer = MailSender(
smtphost (str) – 发送email的SMTP主机(host)。如果忽略,则使用 MAIL_HOST 。
mailfrom (str) – 用于发送email的地址(address)(填入 From:) 。 如果忽略,则使用 MAIL_FROM 。
smtpuser – SMTP用户。如果忽略,则使用 MAIL_USER 。 如果未给定,则将不会进行SMTP认证(authentication)。
smtppass (str) – SMTP认证的密码
smtpport (int) – SMTP连接的短裤默认25
smtptls – 强制使用STARTTLS
smtpssl (boolean) – 强制使用SSL连接
)
同时两种方法都会做在同一种配置中去send()文本
mailer.send(to, subject, body, cc=None, attachs=(), mimetype=’text/plain’)
to (list) – email接收者
subject (str) – email内容
cc (list) – 抄送的人
body (str) – email的内容
attachs (iterable) – 可迭代的元组 (attach_name, mimetype, file_object)。 attach_name 是一个在email的附件中显示的名字的字符串, mimetype 是附件的mime类型, file_object 是包含附件内容的可读的文件对象。
mimetype (str) – email的mime类型
attachs是一个关于附件传输的参数,根据需求来决定是否需要他。
注意:在send过程当中 subject, body会根据你的实际需求来填写,那么他有可能是带中文,也有可能刚请求到的betys流数据等等,那么在发送是请使用对应的方法将其转化成utf-8的编码