用python发邮件实例

发QQ邮件

  首先确认发件方是否打开了SMTP服务,去QQ邮箱的设置中查看,如果没有请自行开启。

from email.header import Header
from email.mime.text import MIMEText
from email.utils import parseaddr,formataddr
import smtplib
from app01 import models

def _format_addr(s):
    name,addr = parseaddr(s)
    return formataddr((Header(name,'utf-8').encode(),addr))

def send_mail():
    four_hour_pro, eight_hour_pro = read()
    print(four_hour_pro)
    print(eight_hour_pro)
    print("Start sending")
    #发件人地址
    from_addr = '[email protected]'

    #密码邮箱的授权码
    password = 'zskhulrcyzarbada'#这个是我的授权码,你要用你的

    #收件人地址
    to_addr =  ['[email protected]','[email protected]']#多个收件人放在列表中

    #邮箱服务器地址
    smtp_server = 'smtp.qq.com'

    #设置邮件信息
    data = "Hello World"

    msg = MIMEText(data,'plain','utf-8')
    msg['From'] = _format_addr(from_addr)
    msg['To'] = _format_addr(to_addr)
    msg['Subject'] = Header(u'邮件标题','utf-8').encode()

    #发送邮件

    server = smtplib.SMTP_SSL(smtp_server,465)

    #打印出和SMTP服务器交互的所有信息

    server.set_debuglevel(1)

    #登录SMTP服务器

    server.login(from_addr,password)

    #sendmail():发送邮件,由于可以一次发给多个人,所以传入一个list邮件正文是一个str,as_string()把MIMEText对象变成str。

    server.sendmail(from_addr,to_addr,msg.as_string())
    server.quit()
    print('Mail sended succeed!')


if __name__ == '__main__':
    send_mail()

发Google邮件

import smtplib
import base64
from email.header import Header
from email.mime.text import MIMEText
from email.utils import parseaddr,formataddr
from email.mime.multipart import MIMEMultipart
from email.mime.image import MIMEImage
from email.utils import COMMASPACE
from app01 import models

SENDER = '[email protected]'#发件人
SMTP_SERVER = 'smtp.gmail.com'#谷歌的邮件服务器,不要改
USER_ACCOUNT = {'username':'[email protected]', 'password':'发件人密码'}#用于登陆的账户信息
SUBJECT = u"邮件标题"
RECEVIVERS = ['[email protected]']#收件人


def send_mail(receivers=RECEVIVERS, sender=SENDER, user_account=USER_ACCOUNT, subject=SUBJECT):
    print("Start sending...")

    #设置邮件正文
    data = "邮件正文内容"

    #下面都不用改
    msg_root = MIMEMultipart()  # 创建一个带附件的实例
    msg_root['Subject'] = subject  # 邮件主题
    msg_root['To'] = COMMASPACE.join(receivers)  # 接收者
    msg_text = MIMEText(data, 'html', 'utf-8')  # 邮件正文
    msg_root.attach(msg_text)  # attach邮件正文内容

    smtp = smtplib.SMTP('smtp.gmail.com:587', timeout=10)
    smtp.ehlo()
    smtp.starttls()
    smtp.login(user_account['username'], user_account['password'])
    smtp.sendmail(sender, receivers, msg_root.as_string())
    print("Email sended succeed!")

if __name__ == '__main__':
    send_mail()

发Google邮件遇到的问题:邮件报错smtplib.smtpauthentic

  出现这个错误的原因有两个:

  解决方法:

发新浪邮件

  记得先去你的设置中将SMTP权限开启  

import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email import encoders
from email.header import Header
from app01 import models
from email.utils import COMMASPACE

user = '[email protected]'#发件人
pwd = '49876545678'#发件人邮箱密码
to = ['[email protected]',"[email protected]"]#收件人

def send_mail():
    print("Start sending...")
    msg = MIMEMultipart()
    msg['Subject'] = Header('成交信息', 'utf-8')
    msg['From'] = Header(user)

    data = "邮件正文内容"
    content1 = MIMEText(data, 'plain', 'utf-8')
    msg.attach(content1)
    
    s = smtplib.SMTP('smtp.sina.com')
    s.set_debuglevel(1)  # 调试使用
    # s.starttls()  # 建议使用
    s.login(user, pwd)
    s.sendmail(user, to, msg.as_string())
    s.close()
    print("Sended succeed")

if __name__ == '__main__':

    send_mail()

猜你喜欢

转载自www.cnblogs.com/zhuminghui/p/9177587.html