如何用Python发邮件

今天来教大家如何使用代码来发邮件,可以直接封装成方法,方便快捷,就以163邮箱和qq邮箱为实例

 

 

一、申请邮箱POP3/SMTP协议的授权码

这里说一下为什么要申请这个东西?

授权码多用于第三方登录,我们使用代码发邮件时,设置的密码不是登录密码,而是这个授权码

一定要记好这个授权码,尽量保存到自己的邮箱或记事本中

(1)qq邮箱

进入邮箱 >>> 设置 >>> 账户 >>> 找到POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务

(2)163邮箱,步骤如下

然后根据提示开启

 

二、导入模块

import smtplib
import email
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart

smtplib:全称为  simple mail transfer protocol libraty ,意思为简单邮件传输协议图书馆

MIME:用于邮件扩充协议

 

三、具体代码实现

因为我们要封装起来,所以先建一个类,定义两个类属性

email:使用内嵌形式

email_client:获取SMTP的证书

class Send_email(object):
    email = MIMEMultipart('related')
    email_client = smtplib.SMTP_SSL()

 

(1)登录邮箱

参数一:你的邮箱名

参数二:你的授权码

@classmethod
def email_type(cls,email_from,password):
    host = 'smtp.' + email_from.split('@')[1]
    cls.email['From'] = email_from
    cls.email_client.connect(host,'465')
    cls.email_client.login(email_from,password)

 

(2)写入内容,纯文本形式

参数:邮件内容

@classmethod
def write_email_text(cls,text):
    email = MIMEText(text,'plain','utf-8')
    cls.email.attach(email)

 

(3)写入附件

参数一:要发送的附件名(带后缀)

参数二:重新命名的附件名(带后缀)

@classmethod
def write_eamil_accessory(cls,file_name,new_name):
    email_accessory = MIMEText(open(file_name,'rb').read(),'base64','utf-8')
    email_accessory.add_header("Content-Disposition","attachment",filename=("utf-8","",new_name))
    cls.email.attach(email_accessory)

 

(4)发送邮件(可群发) 

参数一:邮件标题

参数二:接收者(群发用逗号隔开)

@classmethod
def send_email(cls,subject,receiver):
    cls.email['Subject'] = subject
    if ',' in receiver:                  
        cls.email_client.sendmail(from_addr=cls.email['From'],to_addrs=receiver.split(','),msg=cls.email.as_string())
    else:    
        cls.email_client.sendmail(from_addr=cls.email['From'],to_addrs=receiver,msg=cls.email.as_string())
    cls.email_client.close()

 

之后只需要按顺序调用方法就行了,是不是很简单,快去试试吧

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值