使用scrapy的mail模塊發送郵件

由官網提供的方法可以發現有兩種形式可以發送郵件,

其一:配置settings,使用

[python] view plain copy 在CODE上查看代碼片派生到我的代碼片

  1. mailer = MailSender.from_settings(settings)  

的方法讀取settings的配置,不過本人這樣寫好以後一直出現這種錯誤


[python] view plain copy 在CODE上查看代碼片派生到我的代碼片

  1. TypeError: 'module' object has no attribute '__getitem__'  


沒有找到解決方法,所以嘗試了另一種


其二:官網鏈接

直接在MailSender中配置需要的字段。

本人使用的是163郵箱發送郵件,請注意:授權碼的獲取以及郵箱的相應配置如下:

授權碼獲取成功以後一定要妥善保存,原因你懂得!!



下面代碼爲爬蟲關閉的時候,執行發送郵件的功能!(代碼親測已過)

[python] view plain copy 在CODE上查看代碼片派生到我的代碼片

  1. # -*- coding: utf-8 -*-  

  2. import scrapy  

  3. import logging  

  4.   

  5. class MaiziSpiderSpider(scrapy.Spider):  

  6.     name = "maizi_spider"  

  7.     allowed_domains = ["maiziedu.com"]  

  8.     start_urls = (  

  9.         'http://www.maiziedu.com/wiki/crawler/logging/',  

  10.     )  

  11.     logger = logging.getLogger(__name__)  

  12.   

  13.     def parse(self, response):  

  14.         self.logger.info('Parse function called on %s', response.url)  

  15.         print response.url  

  16.   

  17.     def closed(self, reason):# 爬取結束的時候發送郵件  

  18.         from scrapy.mail import MailSender  

  19.   

  20.         # mailer = MailSender.from_settings(settings)# 出錯了,沒找到原因  

  21.         mailer = MailSender(  

  22.             smtphost = "smtp.163.com",  # 發送郵件的服務器  

  23.             mailfrom = "***********@163.com",   # 郵件發送者  

  24.             smtpuser = "***********@163.com",   # 用戶名  

  25.             smtppass = "***********",  # 發送郵箱的密碼不是你註冊時的密碼,而是授權碼!!!切記!  

  26.             smtpport = 25   # 端口號  

  27.         )  

  28.         body = u""" 

  29.         發送的郵件內容 

  30.         """  

  31.         subject = u'發送的郵件標題'  

  32.         # 如果說發送的內容太過簡單的話,很可能會被當做垃圾郵件給禁止發送。  

  33.         mailer.send(to=["****@qq.com""****@qq.com"], subject = subject.encode("utf-8"), body = body.encode("utf-8"))  



發送的過程中可能會被識別爲垃圾郵件,爲了防止這種情況的發生,修改發送郵件的主題和發送郵件的內容即可。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章