美文网首页
SMTP发送邮件

SMTP发送邮件

作者: 空口言_1d2e | 来源:发表于2020-05-12 14:17 被阅读0次

发送纯文本格式的邮件

import smtplib
from email.mime.text import MIMEText
from email.header import Header

# 第三方 SMTP 服务
mail_host = "smtp.exmail.qq.com"  # 设置服务器
mail_user = "tangsq@venpoo.com"  # 用户名
mail_pass = "xxxxxx"  # 授权码

sender = "tangsq@venpoo.com"
receivers = ['865466036@qq.com']  # 接收邮件,可设置为你的QQ邮箱或者其他邮箱

message = MIMEText('汤汤,时间很快,2020了', 'plain', 'utf-8')
message['From'] = Header("26的自己", 'utf-8')
message['To'] = Header("Thomas_tang", 'utf-8')

subject = '迷茫,焦虑'
message['Subject'] = Header(subject, 'utf-8')

try:
    server = smtplib.SMTP_SSL(mail_host, 465)
    server.login(mail_user, mail_pass)
    server.sendmail(sender, receivers, message.as_string())
    server.quit()  # 关闭连接
    print("邮件发送成功")

except smtplib.SMTPException:
    print("Error: 无法发送邮件")

image.png

发送HTML格式的邮件

import smtplib
from email.mime.text import MIMEText
from email.header import Header

# 第三方 SMTP 服务
mail_host = "smtp.exmail.qq.com"  # 设置服务器
mail_user = "tangsq@venpoo.com"  # 用户名
mail_pass = "XXXXXX"  #授权码
sender = "tangsq@venpoo.com"
receivers = ['865466036@qq.com']  # 接收邮件,可设置为你的QQ邮箱或者其他邮箱

mail_msg = """
<p>Python 邮件发送测试...</p>
<p><a href="http://www.runoob.com">这是一个链接</a></p>
"""
message = MIMEText(mail_msg, 'html', 'utf-8')
message['From'] = Header("26的自己", 'utf-8')
message['To'] = Header("Thomas_tang", 'utf-8')

subject = '迷茫,焦虑'
message['Subject'] = Header(subject, 'utf-8')

try:
    server = smtplib.SMTP_SSL(mail_host, 465)
    server.login(mail_user, mail_pass)
    server.sendmail(sender, receivers, message.as_string())
    server.quit()  # 关闭连接
    print("邮件发送成功")

except smtplib.SMTPException:
    print("Error: 无法发送邮件")

添加附件

import smtplib
from email.header import Header
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.application import MIMEApplication


class SMTPServe:
    dict = {"qq": "smtp.exmail.qq.com"}


class Email:
    def __init__(self, usr_name, usr_pwd, usr_server):
        self.usr_name = usr_name
        self.usr_pwd = usr_pwd
        self.usr_server = usr_server
        self.msg = MIMEMultipart()  # 多元,可用attach
        # 登录
        try:
            self.smtpObj = smtplib.SMTP_SSL(usr_server, 465)
            self.smtpObj.login(usr_name, usr_pwd)
            self.__login_fail = True
        except smtplib.SMTPException as e:
            self.__login_fail = False
            print("login fail:" + str(e))

    def loginStatus(self):
        return self.__login_fail

    def setSender(self, sdr_address):
        self.msg["From"] = "{}".format(sdr_address)

    def setReciever(self, rcr_address):
        self.msg["To"] = ",".join(rcr_address)
        self.reciever_list = rcr_address

    def setSubject(self, title):
        self.msg["Subject"] = title

    def addPlainContent(self, p_ct):
        self.msg.attach(MIMEText(p_ct, "plain", "utf-8"))

    def addHtmlContent(self, html):
        self.msg.attach(MIMEText(html, "html", "utf-8"))

    def addAttachFile(self, file_address):
        try:
            file_stream = open(file_address, "rb").read()
        except:
            print("load file fail.")
        ath = MIMEApplication(file_stream)
        file_name = file_address.split("\\")
        ath.add_header('Content-Disposition', 'attachment', filename=file_name[-1])
        self.msg.attach(ath)

    def sendEmail(self):
        try:
            self.smtpObj.sendmail(self.usr_name, self.reciever_list, self.msg.as_string())
            print("send successfully.")
            return True
        except smtplib.SMTPException as e:
            print("send fail:" + str(e))
            return False


if __name__ == "__main__":
    sender = 'tangsq@venpoo.com'
    receivers = ['865466036@qq.com']
    email = Email('tangsq@venpoo.com', '授权码', SMTPServe.dict['qq'])
    email.setSender(sender)
    email.setReciever(receivers)
    email.setSubject("测试")
    email.addPlainContent("this is a 附件")
    email.addAttachFile(r"C:\Every_day\untitled\257.jpg")
    email.sendEmail()

相关文章

网友评论

      本文标题:SMTP发送邮件

      本文链接:https://www.haomeiwen.com/subject/skgunhtx.html