SMTP
#-*- encoding: utf-8 -*-
import os, sys
import smtplib
from smtplib import SMTP_SSL
from email.header import Header
from email.mime.text import MIMEText
mailInfo = {
"from": "15735184252@163.com",
"to": "qmeng1128@163.com",
"hostname": "smtp.163.com",
"username": "15735184252@163.com",
"password": "xxxxxx",
"mailsubject": "this is test",
"mailtext": "hello, this is send mail test.",
"mailencoding": "utf-8"
}
if __name__ == '__main__':
smtp = SMTP_SSL(mailInfo["hostname"])
smtp.set_debuglevel(1)
smtp.ehlo(mailInfo["hostname"])
smtp.login(mailInfo["username"],mailInfo["password"])
msg = MIMEText(mailInfo["mailtext"],"text",mailInfo["mailencoding"])
msg["Subject"] = Header(mailInfo["mailsubject"],mailInfo["mailencoding"])
msg["from"] = mailInfo["from"]
msg["to"] = mailInfo["to"]
smtp.sendmail(mailInfo["from"], mailInfo["to"], msg.as_string())
smtp.quit()
======================== RESTART: D:/python/smtp2.py ========================
send: 'ehlo smtp.163.com\r\n'
reply: b'250-mail\r\n'
reply: b'250-PIPELINING\r\n'
reply: b'250-AUTH LOGIN PLAIN\r\n'
reply: b'250-AUTH=LOGIN PLAIN\r\n'
reply: b'250-coremail 1Uxr2xKj7kG0xkI17xGrU7I0s8FY2U3Uj8Cz28x1UUUUU7Ic2I0Y2UrKn9FbUCa0xDrUUUUj\r\n'
reply: b'250-STARTTLS\r\n'
reply: b'250 8BITMIME\r\n'
reply: retcode (250); Msg: b'mail\nPIPELINING\nAUTH LOGIN PLAIN\nAUTH=LOGIN PLAIN\ncoremail 1Uxr2xKj7kG0xkI17xGrU7I0s8FY2U3Uj8Cz28x1UUUUU7Ic2I0Y2UrKn9FbUCa0xDrUUUUj\nSTARTTLS\n8BITMIME'
send: 'AUTH PLAIN ADE1NzM1MTg0MjUyQDE2My5jb20ANzA0NzE2Mm0=\r\n'
reply: b'235 Authentication successful\r\n'
reply: retcode (235); Msg: b'Authentication successful'
send: 'mail FROM:<15735184252@163.com>\r\n'
reply: b'250 Mail OK\r\n'
reply: retcode (250); Msg: b'Mail OK'
send: 'rcpt TO:<qmeng1128@163.com>\r\n'
reply: b'250 Mail OK\r\n'
reply: retcode (250); Msg: b'Mail OK'
send: 'data\r\n'
reply: b'354 End data with <CR><LF>.<CR><LF>\r\n'
reply: retcode (354); Msg: b'End data with <CR><LF>.<CR><LF>'
data: (354, b'End data with <CR><LF>.<CR><LF>')
send: b'Content-Type: text/text; charset="utf-8"\r\nMIME-Version: 1.0\r\nContent-Transfer-Encoding: base64\r\nSubject: =?utf-8?q?this_is_test?=\r\nfrom: 15735184252@163.com\r\nto: qmeng1128@163.com\r\n\r\naGVsbG8sIHRoaXMgaXMgc2VuZCBtYWlsIHRlc3Qu\r\n.\r\n'
reply: b'250 Mail OK queued as smtp3,DdGowAA3hZpnrYNarHNBAQ--.48S2 1518579056\r\n'
reply: retcode (250); Msg: b'Mail OK queued as smtp3,DdGowAA3hZpnrYNarHNBAQ--.48S2 1518579056'
data: (250, b'Mail OK queued as smtp3,DdGowAA3hZpnrYNarHNBAQ--.48S2 1518579056')
send: 'quit\r\n'
reply: b'221 Bye\r\n'
reply: retcode (221); Msg: b'Bye'
parseaddr()是干什么的
>>> import email.utils
>>> email.utils.parseaddr('tim_spac@126.com')
('', 'tim_spac@126.com')
>>> email.utils.parseaddr('"Lao Wang" <tim_spac@126.com>')
('Lao Wang', 'tim_spac@126.com')
化简版,引用——www.liaoxuefeng.com
from email.mime.text import MIMEText
msg = MIMEText('hello, send by Python...', 'plain', 'utf-8')
# 输入Email地址和口令:
from_addr = input('From: ')
password = input('Password: ')
# 输入收件人地址:
to_addr = input('To: ')
# 输入SMTP服务器地址:
smtp_server = input('SMTP server: ')
import smtplib
server = smtplib.SMTP(smtp_server, 25) # SMTP协议默认端口是25
server.set_debuglevel(1)
server.login(from_addr, password)
server.sendmail(from_addr, [to_addr], msg.as_string())
server.quit()
添加主题等信息
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 = input('From: ')
password = input('Password: ')
to_addr = input('To: ')
smtp_server = input('SMTP server: ')
msg = MIMEText('hello, send by Python...', 'plain', 'utf-8')
msg['From'] = _format_addr('Python爱好者 <%s>' % from_addr)
msg['To'] = _format_addr('管理员 <%s>' % to_addr)
msg['Subject'] = Header('来自SMTP的问候……', 'utf-8').encode()
server = smtplib.SMTP(smtp_server, 25)
server.set_debuglevel(1)
server.login(from_addr, password)
server.sendmail(from_addr, [to_addr], msg.as_string())
server.quit()
OR
如果没有中文的话,可以
mailInfo = {
"from": "15735184252@163.com",
"to": "qmeng1128@163.com",
"hostname": "smtp.163.com",
"username": "15735184252@163.com",
"password": "......",
"mailsubject": "this is test",
"mailtext": "hello, this is send mail test.",
"mailencoding": "utf-8"
}
msg = MIMEText(mailInfo["mailtext"],"text",mailInfo["mailencoding"])
msg["Subject"] = Header(mailInfo["mailsubject"],mailInfo["mailencoding"])
msg["from"] = mailInfo["from"]
msg["to"] = mailInfo["to"]
smtp.sendmail(mailInfo["from"], mailInfo["to"], msg.as_string())