爬蟲:Scrapy13 - 發送 email

雖然 Python 經過 smtplib 庫使得發送 email 變得很是簡單,Scrapy 仍然提供了本身的實現。該功能十分易用,同時因爲採用了 Twisted 非阻塞式(non-blocking)IO,其避免了對爬蟲的非阻塞式 IO 的影響。另外,其也提供了簡單的 API 來發送附件。經過一些 settings 設置,能夠很簡單的進行配置。安全

簡單例子

有兩種方法能夠建立郵件發送器(mail sender)。能夠經過標準構造器(constructor)建立:框架

from scrapy.mail import MailSender

mailer = MailSender()

或者能夠傳遞一個 Scrapy 設置對象,其會參考 settings:scrapy

mailer = MailSender.from_settings(settings)

這是如何來發送郵件(不包括附件):加密

mailer.send(to=["someone@example.com"], subject="Some subject", body="Some body", cc=["another@example.com"])

MailSender 類參考手冊spa

在 Scrapy 中發送 email 推薦使用 MailSender。其同框架中的其它部分同樣,使用了 Twsited 非阻塞式(non-blocking)IO。code

class scrapy.mail.MailSender(smtphost=None, mailfrom=None, smtpuser=None, smtppass=None, smtpport=None)

參數:對象

  • 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 鏈接的短褲
  • smtptls – 強制使用 STARTTLS
  • smtpssl (boolean) – 強制使用 SSL 鏈接
classmethod from_settings(settings)

使用 Scrapy 設置對象來初始化對象。blog

參數:ip

settings (scrapy.settings.Settings object) – the e-mail recipientsssl

send(to, subject, body, cc=None, attachs=(), mimetype='text/plain')

發送 email 到給定的接收者。

參數:

  • 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 類型

Mail 設置

這些設置定義了 MailSender 構造器的默認值。使得你在不編寫任何一行代碼的狀況下,爲你的項目配置實現 email 通知的功能。

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 加密鏈接。

相關文章
相關標籤/搜索