iT邦幫忙

0

Scrapy MailSender TLS安全連線問題

在學習Scrapy發送Email時遇到以下錯誤:

[scrapy.mail] ERROR: Unable to send mail: To=['mymail@gmail.com'] Cc=[] Subject="news" Attachs=1- 502 Server does not support secure communication via TLS / SSL

我也剛學Scrapy沒多久,程式碼部分是參考教學的,功能是Email攜帶附件CSV檔案傳送。

 def close_spider(self, spider):
        self.exporter.finish_exporting()
        self.file.close()

        mail = MailSender(
            smtphost=settings.MAIL_HOST,
            smtpport=settings.MAIL_PORT,
            smtpuser=settings.MAIL_FROM,
            smtppass=settings.MAIL_PASS,
            smtptls=settings.MAIL_TLS,
        )
        attach_name = "posts.csv"
        mime_type = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
        file_object = open("posts.csv", "rb")

        return mail.send(
            to=["mymail"],
            subject="news",
            body="",
            attachs=[(attach_name, mime_type, file_object)]
        )

setting部分如下

MAIL_HOST = "smtp.gmail.com"
MAIL_PORT = 587
MAIL_FROM = "mymail"
MAIL_PASS = "**********"
MAIL_TLS = True

看錯誤訊息應該和TLS連線有關,上網爬文後還是找不到解答,請問有人可以告訴我哪裡出錯嗎?
或有任何的指教都很歡迎~

/images/emoticon/emoticon41.gif

我的環境是Python 3.8.8 / Scrapy 2.5.0

2 個回答

1
黃彥儒
iT邦高手 1 級 ‧ 2021-08-12 02:31:30

他都說他不支援了,為何你還要叫他用TLS連線???
MAIL_TLS = True
改False不好嗎?

看更多先前的回應...收起先前的回應...

但是寄送mail不是要藉著TLS協定嗎? 還是我搞錯了?
改False會出現另外一個錯誤:

[scrapy.mail] ERROR: Unable to send mail: To=['myemail'] Cc=[] Subject="news" Attachs=0- 530 5.7.0 Must issue a STARTTLS command first. a185sm967771pfa.205 - gsmtp
黃彥儒 iT邦高手 1 級 ‧ 2021-08-12 11:51:55 檢舉

給你官方文件,好好研究,不要去找那種路上不知到哪裡檢來的教學。
Gmail:https://support.google.com/mail/answer/7126229?hl=en

Scrapy:https://docs.scrapy.org/en/latest/topics/email.html#mailsender-class-reference

好的我研究一下,謝謝你哦~

https://ithelp.ithome.com.tw/upload/images/20210812/20135033k15Qq6UeIP.png

看起來Email主要是用SSL協定傳送
所以我將MAIL_PORT改成465,Email成功發送了!

黃彥儒 iT邦高手 1 級 ‧ 2021-08-13 12:49:57 檢舉

雖然你的結論是錯的,不過恭喜你進入不知道為什麼他能動的Level

1
japhenchen
iT邦大師 1 級 ‧ 2021-08-12 11:49:54

請用網頁到Gmail的右上角齒輪圖案 → 查看所有設定 → 轉寄和 POP/IMAP → 啟用imap

謝謝回答! 但試過後仍然沒有解決QQ

那你只能放棄透過Gmail來Relay了,我是自己公司有架SMTP,所以沒有這個問題

https://ithelp.ithome.com.tw/upload/images/20210812/20135033k15Qq6UeIP.png

看起來Email主要是用SSL協定傳送
所以我將MAIL_PORT改成465,Email成功發送了!

我要發表回答

立即登入回答