一性雄、發(fā)送文本型內(nèi)容
代碼如下:
-*- coding: utf-8-*- #沒有這句話,發(fā)送不了中文
from email import encoders
from email.header import Header
from email.mime.text import MIMEText
from email.utils import parseaddr, formataddr
import smtplib
def _format_addr(s):
name, addr = parseaddr(s)
return formataddr((Header(name, 'utf-8').encode(), addr))
from_addr = '發(fā)件地址@qq.com'
password = '客戶端授權(quán)登陸密碼'
to_addr = '收件地址@qq.com'
smtp_server = 'smtp.qq.com'
msg = MIMEText('hello, send by ...', 'plain', 'utf-8')
msg['From'] = _format_addr('你猜我是誰 <%s>' % from_addr)
msg['To'] = _format_addr('笨蛋 <%s>' % to_addr)
msg['Subject'] = Header('來自溫暖被窩的問候……', 'utf-8').encode()
server = smtplib.SMTP_SSL(smtp_server, 465)
server.set_debuglevel(1)
server.login(from_addr, password)
server.sendmail(from_addr, [to_addr], msg.as_string())
server.quit()
二戳晌、發(fā)送HTML格式郵件
將
msg = MIMEText('hello, send by ...', 'plain', 'utf-8')
替換為:
mail_msg = """
<p>Python 郵件發(fā)送測(cè)試...</p>
<p><a >這是一個(gè)鏈接</a></p>
"""
msg = MIMEText(mail_msg, 'html', 'utf-8')
遇到的問題:
1、要確保自己的郵箱地址開啟了smtp服務(wù)痴柔,開啟服務(wù)的方法網(wǎng)上也有沦偎。
2、不同郵箱的smtp服務(wù)地址(smtp_server)不同咳蔚,可以上網(wǎng)搜索豪嚎。
3、如果不設(shè)置客戶端授權(quán)登陸密碼 :smtplib.SMTPAuthenticationError: (``530``,
'Error: A secure connection is requiered(such as ssl). More information at [http://service.mail.qq.com/cgi-bin/help?id=28](http://service.mail.qq.com/cgi-bin/help?id=28)'``)
程序報(bào)503錯(cuò)誤
原因:需要一個(gè)安全的連接谈火,例如SSL侈询,因此我們要使用SSL的方式去登錄
4、設(shè)置客戶端授權(quán)登陸密碼
打開qq郵箱糯耍,點(diǎn)擊設(shè)置->
賬戶扔字,找到POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服務(wù)囊嘉,開啟IMAP/SMTP服務(wù),然后根據(jù)要求使用手機(jī)發(fā)送到指定號(hào)碼革为,獲取授權(quán)碼扭粱,
這個(gè)授權(quán)碼就是你接下來登錄要使用的密碼,配置完成篷角,上代碼焊刹,另,QQ的授權(quán)碼有效期為30天恳蹲。
5虐块、改了上面的SSL之后,運(yùn)行報(bào)錯(cuò)
我原來的代碼是server = smtplib.SMTP(smtp_server, 465)
后來改為:server = smtplib.SMTP_SSL(smtp_server, 465)即可嘉蕾。
6贺奠、注意,代碼中的465代表端口號(hào)错忱,不同的服務(wù)端口號(hào)不同儡率。