python使用gmail发送邮件

国内的网络访问谷歌smtp服务器不太稳定,可以尝试部署在境外的vps上,或者如下添加socks代理

# -*- coding:utf-8 -*-
import socks
import smtplib
from email.utils import COMMASPACE
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.application import MIMEApplication


SMTP_SERVER = 'smtp.gmail.com'
SMTP_PORT = 587
SENDER = 'xxxxxxxx@gmail.com'
ACCOUNT_INFO = {'username':'xxxxxxxx@gmail.com', 'password':'xxxxxxxxx'}


def send_mail(receivers, subject, text, smtp_server=SMTP_SERVER, smtp_port=SMTP_PORT, sender=SENDER, account_info=ACCOUNT_INFO):
    """
    :param receivers:接收邮箱列表
    :param subject:发送邮件主题
    :param text:发送邮件正文
    :param filename:发送邮件附件
    :param smtp_server:smtp服务器地址
    :param smtp_port:smtp TLS/STARTTLS 端口
    :param sender:发送者
    :param account_info:发送者邮箱账号密码
    :return:
    """

    # 正文
    msg_root = MIMEMultipart()    # 创建一个带附件的实例
    msg_root['SUBJECT'] = subject
    msg_root['To'] = COMMASPACE.join(receivers)
    msg_text = MIMEText(text, 'html', 'utf-8')
    msg_root.attach(msg_text)

    # 附件
    # att = MIMEApplication(open(filename,'rb').read())
    # att.add_header('Content-Disposition', 'attachment', filename=filename)
    # msg_root.attach(att)
    # 增加socks5代理
    # socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, 'x.x.x.x', 29900, True)
    # socks.wrapmodule(smtplib)

    smtp = smtplib.SMTP(f'{smtp_server}:{smtp_port}')
    smtp.ehlo()
    smtp.starttls()
    smtp.login(account_info['username'], account_info['password'])
    smtp.sendmail(sender, receivers, msg_root.as_string())
    smtp.close()

if __name__=="__main__":
    send_mail(['xxxxxx@qq.com'], "test email", "love you")

如遇534错误可参考
https://stackoverflow.com/questions/26852128/smtpauthenticationerror-when-sending-mail-using-gmail-and-python

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值