由官網提供的方法能夠發現有兩種形式能夠發送郵件,html
其一:配置settings,使用python
[python] view plain copy 服務器
mailer = MailSender.from_settings(settings) dom
的方法讀取settings的配置,不過本人這樣寫好之後一直出現這種錯誤scrapy
[python] view plain copy ide
TypeError: 'module' object has no attribute '__getitem__' url
沒有找到解決方法,因此嘗試了另外一種spa
其二:官網連接.net
直接在MailSender中配置須要的字段。code
本人使用的是163郵箱發送郵件,請注意:受權碼的獲取以及郵箱的相應配置以下:
受權碼獲取成功之後必定要妥善保存,緣由你懂得!!
下面代碼爲爬蟲關閉的時候,執行發送郵件的功能!(代碼親測已過)
[python] view plain copy
# -*- coding: utf-8 -*-
import scrapy
import logging
class MaiziSpiderSpider(scrapy.Spider):
name = "maizi_spider"
allowed_domains = ["maiziedu.com"]
start_urls = (
'http://www.maiziedu.com/wiki/crawler/logging/',
)
logger = logging.getLogger(__name__)
def parse(self, response):
self.logger.info('Parse function called on %s', response.url)
print response.url
def closed(self, reason):# 爬取結束的時候發送郵件
from scrapy.mail import MailSender
# mailer = MailSender.from_settings(settings)# 出錯了,沒找到緣由
mailer = MailSender(
smtphost = "smtp.163.com", # 發送郵件的服務器
mailfrom = "***********@163.com", # 郵件發送者
smtpuser = "***********@163.com", # 用戶名
smtppass = "***********", # 發送郵箱的密碼不是你註冊時的密碼,而是受權碼!!!切記!
smtpport = 25 # 端口號
)
body = u"""
發送的郵件內容
"""
subject = u'發送的郵件標題'
# 若是說發送的內容太過簡單的話,極可能會被當作垃圾郵件給禁止發送。
mailer.send(to=["****@qq.com", "****@qq.com"], subject = subject.encode("utf-8"), body = body.encode("utf-8"))
發送的過程當中可能會被識別爲垃圾郵件,爲了防止這種狀況的發生,修改發送郵件的主題和發送郵件的內容便可。