(Python)利用SMTP发送邮件基础篇,发送文本邮件

代码:

import smtplib
from email.mime.text import MIMEText

host = 'smtp.163.com'
user = '[email protected]' #发件人
password = '123456789'

def send_mail(to_list,subject,content):
    msg=MIMEText(content,'plain','utf-8')
    msg['from'] = user
    msg['to'] = ','.join(to_list) #注意,不是分号
    msg['subject'] = subject
    server = smtplib.SMTP()
    server.set_debuglevel(1)
    try:
        server.connect(host,25)
    except:
        print('connect fail')
        
    try:
        server.ehlo(user)
        server.login(user,password)
        print('login ok')
    except:
        print('login fail')

    try:
        server.sendmail(user, to_list, str(msg))
        server.close()
        return True
    except OSError:
        print('OSError')
        return False
    except:
        print('unexpect error')
        return False

def test():
    if(send_mail(['[email protected]'],'test','just test')):
        print('send ok')
    else:
        print('send fail')

if __name__ == '__main__':
    test()

解释:

1,smtplib是SMTP服务的模块,发送者邮箱要开启SMTP服务

2,host是发送者服务器地址,163邮箱的服务器地址是'smtp.163.com',其他邮箱的服务器地址可以在网上查,不过需要注意,QQ邮箱的服务器地址有2种,取决于发送者邮箱开启SMTP服务的时间

3,user是发送者的邮箱

4,password是user的授权码,不是邮箱密码,授权码是用来三方登录邮箱的(不要尝试以代码中的授权码登录我的邮箱。。。否则。。。你会发现授权码是错的,这里是这个代码唯一需要修改的地方,修改之后就能发邮件)

5,to_list是收件人列表,是列表类型,其中每个元素(至少1个元素)都是字符串,对应一个邮箱地址

6,subject是邮件标题,是字符串类型

7,content是邮件正文,是字符串类型

8, 'plain'是邮件类型,表示文本类型

9,','.join(to_list)是把列表转化成字符串,包含多个收件人,注意,连接符是逗号

10,server.set_debuglevel(1)是显示调试信息

11,SMTP的默认端口是25,某些邮箱(比如QQ邮箱)的端口不是25

12,ehlo和helo是SMTP的用户认证,ehlo的e是拓展的意思,就是对helo的拓展


你可能感兴趣的:((Python)利用SMTP发送邮件基础篇,发送文本邮件)