如何通過GMail傳送郵件:smtplib的使用
SMTP(Simple Mail Transfer Protocol)即簡單郵件傳輸協議,它是一組用於由源地址到目的地址傳送郵件的規則,由它來控制信件的中轉方式。SMTP協議屬於TCP/IP協議族,它幫助每臺計算機在傳送或中轉信件時找到下一個目的地。通過SMTP協議所指定的伺服器,就可以把E-mail寄到收信人的伺服器上了,整個過程只要幾分鐘。SMTP伺服器則是遵循SMTP協議的傳送郵件伺服器,用來發送或中轉發出的電子郵件。
SMTP類似於HTTP,在應用層是文字形式的。在UNIX程式設計藝術裡講過,要提倡明文的協議,這樣從肉眼就很容易分析,這樣就不需要編寫對應的可視編輯器即可實現除錯。
但可惜,當使用GMail的時候,通過WireShark分析,除了最初的握手協議外,具體傳輸
1.建立TCP三路握手
2.SMTP自己的握手
3.客戶端啟動SSL握手 - 伺服器等待握手 - 開始SSL握手了
4.從這裡開始,所有內容是加密的了。
所以這裡只好開啟smtp的debug模式:smtp.set_debuglevel(1)。
這樣能夠在控制檯詳細地打印出互動過程:
所有互動都是客戶端‘SEND:****’開始,伺服器返回'reply:***'結束,是不是很像HTTP.
1.通過連線SMTP.gmail.com:25,然後伺服器返回伺服器相關資訊,並要求開啟SSL:‘STARTTLS’
2.開啟TLS,Gmail要求授權才能繼續操作:AUTH LOGIN PLAIN XOAUTO,當然TLS開啟後的所有內容無法通過WireShark等抓包工具捕獲的,所以不用擔心第三方會擷取這部分內容,這就是為什麼網頁也要提倡HTTPS的理由,無法被第三方擷取。
3.授權請求 - 返回授權成功哦。
4.授權成功後就可以開始傳送內容了:
5.最後記得要退出哦。。
每當我看多周邊人重新寫SMTP處理邏輯的時候,都想告訴他一聲:Python已經有相關庫了,為什麼不用它,而重新造輪子呢?是要學習這個協議的精髓麼?如果這樣,我還是建議你去讀HTTP吧,現在很多網路應用都依賴於HTTP,深入研究SMTP或者重新造輪子都是不可取的。
如果不會Python怎麼辦?
能讀懂下面的程式碼就會了。
import smtplib
import sys
import email.mime.text
# my test mail
mail_username=' [email protected]'
mail_password='harktest'
from_addr = mail_username
to_addrs=('[email protected]')
# HOST & PORT
HOST = 'smtp.gmail.com'
PORT = 25
# Create SMTP Object
smtp = smtplib.SMTP()
print 'connecting ...'
# show the debug log
smtp.set_debuglevel(1)
# connet
try:
print smtp.connect(HOST,PORT)
except:
print 'CONNECT ERROR ****'
# gmail uses ssl
smtp.starttls()
# login with username & password
try:
print 'loginning ...'
smtp.login(mail_username,mail_password)
except:
print 'LOGIN ERROR ****'
# fill content with MIMEText's object
msg = email.mime.text.MIMEText('Hi ,I am leehark')
msg['From'] = from_addr
msg['To'] = ';'.join(to_addrs)
msg['Subject']='hello , today is a special day'
print msg.as_string()
smtp.sendmail(from_addr,to_addrs,msg.as_string())
smtp.quit()
相關推薦
如何通過GMail傳送郵件:smtplib的使用
SMTP(Simple Mail Transfer Protocol)即簡單郵件傳輸協議,它是一組用於由源地址到目的地址傳送郵件的規則,由它來控制信件的中轉方式。SMTP協議屬於TCP/IP協議族,它幫助每臺計算機在傳送或中轉信件時找到下一個目的地。通過SMTP協議所指定的伺服器,就可以把E-mail寄到
越過GFW,使用JavaMail通過Gmail傳送郵件
程式碼參考了:https://blog.csdn.net/licl19870605/article/details/8164401 Gmail要做兩處的設定: 1)啟用IMAP(如果只使用smtp協議傳送郵件,強烈懷疑此步可選) 根據 https://support.google.co
Python發送郵件:smtplib、sendmail
postfix prot 找到 serve qmail 問題 配置文件 什麽 分享圖片 本地Ubuntu 18.04,本地Python 3.6.5, 阿裏雲Ubuntu 16.04,阿裏雲Python 3.5.2, smtplib,sendmail 8.15.2, 今天
telnet通過smtp傳送郵件
////////////////////////////////////CMD指令////////////////////////////////////////////// cmd telnet smtp.163.com 25 or &nb
通過javamailsenderimpl傳送郵件
參考文章:http://blog.csdn.net/qq_33556185/article/details/51028952 import javax.mail.internet.MimeMessage; import org.springframework.beans.factory.anno
Spring(非boot)通過ssl傳送郵件
參考:https://blog.csdn.net/liguo9860/article/details/6874040 我這裡就說一下使用Spring的JavaMailSender如何實現 1. 配置JavaMailSender @Bean public JavaM
js通過外掛傳送郵件
這個外掛為SmtpJS 官網地址為 https://www.smtpjs.com/ 方法很簡單 <script src="https://smtpjs.com/v2/smtp.js"> </script> Email.send( "[email
Zabbix 配置通過sendEmail傳送郵件報警
## 1、安裝sendEmail### 1.1、下載安裝sendEmail1. 通過Linux下載命令`wget http://caspian.dotconf.net/menu/Software/SendEmail/sendEmail-v1.56.tar.gz`(wget安裝命令:`rpm install w
用Spring的郵件封裝類JavaMailSenderImpl傳送郵件:注意埠號不需要設定(設定了反而linux上釋出後傳送失敗)
===》###注意埠號不需要設定:》加不加埠:window都行,linux加了埠反而發不出去! 是的。配置了埠,Windows沒問題。linux就有問題了。仔細檢視錯誤資訊: 發現是 JavaMail API 程式碼問題。排除了是我的程式碼邏輯問題。 而且是埠超時問題。 看到這
利用JavaMail傳送郵件:smtp.163.com
一、利用JavaMail傳送郵件案例: 1、maven專案結構: 2、先在pom.xml裡邊加入Javamail依賴,系統會根據座標自動下載mail包(前提是配置好了maven): 3、配置email.properties屬性檔案,主要是為了不更改程式碼的前提下,該改變傳送郵件的一些基本資訊:
Java(SpringCloud) 使用Thymeleaf渲染模板,通過Mailgun傳送郵件
好久沒發部落格了,忙東忙西的,堅持! 本文介紹Java使用Mailgun搭建傳送郵件的服務。 我把這個郵件服務放在了我的springCloudApplication(微服務Demo)專案的utilservice服務模組中。 原始碼地址:springCloudA
Python 使用Gmail傳送郵件
前言:2014-05-22記錄在hi baidu上,現在移過來 使用python向gmail發郵件 """ 傳送郵件 1: 需要提供傳送者的郵件、密碼;接收者地址; 2:步驟:
debian通過mailx傳送郵件
搭建的nagios,郵件報警可以通過以下幾種方式: 第一:使用簡訊通道 第二:使用伺服器本身的郵箱進行發郵件(例如centos使用sendmail,debian使用exim4) 第三:使用外部郵箱通過smtp傳送。 第一種當然最好,可是需要收費的。 第二種也可以發,可
通過javaMail傳送郵件,可選新增多個收件人,密送,抄送,多個附件,超實用
自己通過學習多人的程式碼,並整理了一個簡單,呼叫方便的通過javaMail傳送郵件。只需填寫發件郵箱地址,密碼;收件人地址,附件,選擇是否儲存,設定自己傳送郵件時的暱稱就ok了。程式碼自動匹配設定smtp服務地址和埠。 傳送郵件需要郵箱地址和密碼,開啟P
python3 通過excel傳送郵件報錯解決辦法
前段時間使用python批量發郵件,通過excel獲取收件人資訊,結果發完後報錯如下:Traceback (most recent call last): File "D:\python practice\傳送郵件 帶附件.py", line 46, in <mod
python應用系列教程——python使用smtp協議傳送郵件:html文字郵件、圖片郵件、檔案附件郵件
全棧工程師開發手冊 (作者:欒鵬) python使用smtp協議傳送電子郵件。包含傳送html文字郵件、包含圖片附件的郵件,包含其他檔案附件的郵件。可設定郵件的收發人,主題,內容。並以163郵件為例,分別在python2.7和python3.6下進行試驗。
openssl使用SMTP向gmail傳送郵件
命令方式: 由於gmail使用ssl、tls等,所以連線時要使用tls或者ssl。這裡使用openssl而沒有用telnet。 直接連線smtp的預設埠587 連線後使用SMTP命令進行操作郵箱 這裡用到的有: EHLO AUTH LOGIN MAIL FROM:<
java傳送郵件(javaMail通過SMTP傳送郵件)
java傳送郵件一般使用在註冊賬號時、或其他通知資訊時,網站會使用郵件定時傳送、或觸發傳送郵件通知使用者; 1、我是用的是maven開發,所以需要在pom檔案中定義jar包: <dependency> <groupId>javax.
windows平臺下通過blat傳送郵件用法小結
在linux平臺的命令列下可以使用mail命令來發送郵件,windows平臺沒有內建的命令,但可以使用開源的 blat,其官方主頁為 http://www.blat.net/ blat的使用非常簡單,僅需兩步 1.使用 "blat -install <server
pyhotn專案:通過SMTP實現郵件的傳送
#本例項是演示如何通過SMTP實現郵件的傳送 實現流程:建立SMTP伺服器——>登入郵箱——>傳送郵件——>關閉郵箱 #傳送郵件需要匯入的庫 import smtplib from email.mime.text import MIMEText #SMTP伺服器