參考https://github.com/jackfrued/Python-100-Days/blob/master/Day01-15/14.%E7%BD%91%E7%BB%9C%E7%BC%96%E7%A8%8B%E5%85%A5%E9%97%A8%E5%92%8C%E7%BD%91%E7%BB%9C%E5%BA%94%E7%94%A8%E5%BC%80%E5%8F%91.md的代碼刽肠,寫出如下發(fā)送郵件代碼:
from smtplib import SMTP
from email.header import Header
from email.mime.text import MIMEText
sender = 'sass1s@126.com'
receivers = ['2063198253@qq.com']
message = MIMEText('用Python發(fā)送郵件的示例代碼.', 'plain', 'utf-8')
message['From'] = Header('Daqing', 'utf-8')
message['To'] = Header('Erqing', 'utf-8')
message['Subject'] = Header('示例代碼實驗郵件', 'utf-8')
smtper = SMTP('smtp.126.com')
# smtper.connect('smtp.126.com')
smtper.login(sender, '替換為你的126郵箱的授權(quán)碼')
smtper.sendmail(sender, receivers, message.as_string())
print('郵件發(fā)送完成吆豹!')
上述代碼有兩個地方錯誤:
message['From'] = Header('Daqing', 'utf-8')
message['From']
必須保留蒲拉,但是不能放在Header
中项秉,直接使用字符串就行。并且message['From']
必須是發(fā)件人的郵箱引矩,如sass1s@126.com
message['To'] = Header('Erqing', 'utf-8')
message['To']
的值直接是字符串就行严里,可以是任意字符串择浊。或者該行代碼去掉也行捣域。
修改后的代碼如下:
from smtplib import SMTP
from email.header import Header
from email.mime.text import MIMEText
sender = 'sass1s@126.com'
receivers = ['sass1s@126.com', '2063198253@qq.com']
message = MIMEText('示例代碼.', 'plain', 'utf-8')
message['From'] = 'sass1s@126.com' # 不能用Header('sass1s@126.com', 'utf-8'), 否者報錯554 SPM
# message['To'] = 'Erqing'
message['Subject'] = Header('示例代碼實驗郵件', 'utf-8')
smtper = SMTP('smtp.126.com')
smtper.login(sender, '替換為你的126郵箱授權(quán)碼')
smtper.sendmail(sender, receivers, message.as_string())
print('郵件發(fā)送完成啼染!')
運行后即可成功發(fā)送郵件。
發(fā)送帶附件的郵件
以下代碼可以實現(xiàn)帶附件的郵件發(fā)送
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.header import Header
from smtplib import SMTP
message = MIMEMultipart()
text_content = MIMEText('附件中有本月數(shù)據(jù)竟宋,請查收', 'plain', 'utf-8')
message['Subject'] = Header('本月數(shù)據(jù)', 'utf-8')
message['From'] = 'sass1s@126.com'
message.attach(text_content)
with open('hello.txt', 'rb') as f:
txt = MIMEText(f.read(), 'base64', 'utf-8')
txt['Content-Type'] = 'text/plain'
txt['Content-Disposition'] = 'attachment; filename=hello.txt'
message.attach(txt)
with open('匯總數(shù)據(jù).xlsx', 'rb') as f:
xls = MIMEText(f.read(), 'base64', 'utf-8')
xls['Content-Type'] = 'application/vnd.ms-excel'
xls['Content-Disposition'] = 'attachment; filename=month-data.xlsx'
message.attach(xls)
smtper = SMTP('smtp.126.com')
sender = 'sass1s@126.com'
receivers = ['sass1s@126.com', '2063198253@qq.com']
smtper.login(sender, '替換為你的授權(quán)碼')
smtper.sendmail(sender, receivers, message.as_string())
smtper.quit()
print('發(fā)送完成')