Python发送邮件

Python3.9发邮件,587端口

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

# context = ssl.create_default_context()
context = ssl._create_unverified_context() #不检查证书
context.set_ciphers("HIGH:!DH:!aNULL") #提示报错“
ssl.SSLError: [SSL: DH_KEY_TOO_SMALL] dh key too small (_ssl.c:1129)”,加上该句代码即可解决。

smtp_srv = '10.10.7.3'
from_addr = 'zhangsan@yx.com'
user_loginname = from_addr.split('@')[0]
#to_addr = ('l1@xx.com','ld@xx.com')
to_addr = ('liusan@yx.com')
#cc_addr = 'l1@xx.com'
password = 'password'
subject = 'pp test'
msg_content = '你好\n错误记录\nasdfl\nasdf'

msg = MIMEText(msg_content,'plain','utf-8')
msg['Subject'] = Header(subject, 'utf-8')
msg['from_addr'] = from_addr
#msg['Cc'] = cc_addr
msg['To'] = ''.join(to_addr)

smtp = smtplib.SMTP(smtp_srv,587) #可以换成465
# smtp.set_debuglevel(1) #显示邮件发送的详细信息
smtp.starttls(context=context)
smtp.login(user_loginname,password)
smtp.sendmail(from_addr,to_addr,msg.as_string())
smtp.quit()

 

 

Python2发送文本格式邮件,默认使用25端口

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

smtp_srv = 'mail.xx.com'
from_addr = 'ld@xx.com'
#to_addr = ('l1@xx.com','ld@xx.com')
to_addr = ('l1@xx.com')
cc_addr = 'l1@xx.com'
password = 'mypass'
subject = 'pp test'
msg_content = '你好\n错误记录\nasdfl\nasdf'

msg = MIMEText(msg_content,'plain','utf-8')
msg['Subject'] = Header(subject, 'utf-8')
msg['from_addr'] = from_addr
msg['Cc'] = cc_addr
msg['To'] = ''.join(to_addr)

smtp = smtplib.SMTP()
smtp.connect(smtp_srv)
smtp.login(from_addr,password)
#smtp.set_debuglevel(1) #显示邮件发送的详细信息
smtp.sendmail(from_addr,to_addr,msg.as_string())
smtp.quit()

 

587端口发送邮件:

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

smtp_srv = '10.160.31.32'
from_addr = 'user@xx.com'
login_addr = 'user' 
to_addr = ('lll@xx.com')
password = 'pass'
subject = 'pytesteaea'
msg_content = 'tt'

msg = MIMEText(msg_content,'plain','utf-8')
msg['Subject'] = Header(subject, 'utf-8')
msg['from_addr'] = from_addr
msg['To'] = ''.join(to_addr)

smtp = smtplib.SMTP()
smtp.connect(smtp_srv,587) #
smtp.starttls() #
smtp.login(login_addr,password) #如果SMTP登录验证失败,则其名称去掉@xin.com域名部分
smtp.set_debuglevel(1)
smtp.sendmail(from_addr,to_addr,msg.as_string())
smtp.quit()

 

Python3.7使用587认证发邮件:

# -*- coding: UTF-8 -*-
import time,os,datetime,sys,smtplib,csv

from email import encoders
from email.mime.text import MIMEText
from email.header import Header
from email.mime.multipart import MIMEMultipart
from email.mime.image import MIMEImage 

auser = 'liu10'
smtp_srv = 'mail.51.com'
from_addr = 'Zr@51.com'
to_addr = ('%s@51.com' %(auser))
password = 'lD'
subject = 'testttt'
#msg_content = 'Pytho to Mail'

msg = MIMEMultipart('related')
msg['Subject'] = Header(subject, 'utf-8')

msg_content = '您好 '
msgText = MIMEText(msg_content,'html','utf-8')
msg.attach(msgText) 
 
msg['Subject'] = Header(subject, 'utf-8')
msg['from_addr'] = from_addr
msg['To'] = ''.join(to_addr)


smtp = smtplib.SMTP(host=smtp_srv)
smtp.connect(host=smtp_srv, port=587)
smtp.starttls()

login_addr = from_addr.split('@')[0]
smtp.login(login_addr,password)

smtp.set_debuglevel(1)
smtp.sendmail(from_addr,to_addr,msg.as_string())
smtp.quit()

 

 

 

发送正文带有图片的邮件:

import os,sys,datetime,time
import smtplib
from email.mime.text import MIMEText
from email.header import Header
from email.mime.multipart import MIMEMultipart
from email.mime.image import MIMEImage 

smtp_srv = 'mail.x.com'
from_addr = 'ITS@x.com'
to_addr = ['ly@x.com']
cc_addr = 'IT@x.com'
to_addr2 = ['IT@x.com'] #由于抄送不起作用,所以将邮件重新发送一次
password = r'password'
subject = 'Hello' 

msg = MIMEMultipart('related')
msg['Subject'] = 'test message' 

msgText = MIMEText('<b>Some <i>HTML</i> text</b> and an image.<img alt="" src="cid:image1" />good!','html','utf-8')
msg.attach(msgText) 

fp = open('D:\\pyweb\\uxin.jpg', 'rb')
msgImage = MIMEImage(fp.read())
fp.close() 

#在正文里添加图片
msgImage.add_header('Content-ID', 'image1')
msg.attach(msgImage) 

msg['from_addr'] = from_addr
msg['To'] = ''.join(to_addr)
# print msg_content
smtp = smtplib.SMTP()
smtp.connect(smtp_srv,587)
smtp.starttls()
smtp.login(from_addr,password)
#smtp.set_debuglevel(1) #显示邮件发送的详细信息
smtp.sendmail(from_addr,to_addr2,msg.as_string())
smtp.quit()

 发邮件时显示发件人的中文名称:

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

smtp_srv = 'smtp.gmail.com'
from_addr = 'u@gmail.com'
to_addr = ('l@x.com')
password = 'Y'
subject = '您的帐号'
msg_content = '您好,\n您的密码'

msg = MIMEText(msg_content,'plain','utf-8')
msg['Subject'] = Header(subject, 'utf-8')
#msg['from_addr'] = from_addr
msg['From'] = formataddr(["管理员", from_addr]) #显示发件人的中文名称
msg['To'] = ''.join(to_addr)

smtp = smtplib.SMTP()
smtp.connect(smtp_srv,587) #
smtp.ehlo()
smtp.starttls() #

login_addr = from_addr #.split('@')[0]

try:
    smtp.login(login_addr,password)
    smtp.set_debuglevel(1)
    smtp.sendmail(from_addr,to_addr,msg.as_string())
    smtp.quit()
except Exception,e:
    print e

 

发送多个图片:

# -*- coding: UTF-8 -*-
import time,os,datetime,sys,smtplib,csv,glob

from email import encoders
from email.mime.text import MIMEText
from email.header import Header
from email.mime.multipart import MIMEMultipart
from email.mime.image import MIMEImage 


def sendmail(auser,buser,cuser):
    smtp_srv = 'mail.x.com'
    from_addr = '11@x.com'
    to_addr = ('%s@x.com' %(auser))
    password = 'y'
    subject = '报告'
    smtp = smtplib.SMTP()
    smtp.connect(smtp_srv,587) 
    
    msg = MIMEMultipart('related')
    msg['Subject'] = Header(subject, 'utf-8')
    
    msg_content = '<p>您好,<br>员工%s(%s)访问了网站! </p>'%(buser,cuser)
    mail_jpg = ''
    fnumber = len(glob.glob(pathname='E:\\Python\\imgs\\i\*.*')) #计算图片目录下图片数量
    for i in  range(fnumber):
        mail_jpg += '<img alt="" src="cid:image%d" /><br>' %(i+1)
    msg.attach(MIMEText(msg_content + mail_jpg, 'html', 'utf-8'))

    i=0
    for fpathe,dirs,fs in os.walk('E:\\Python\\imgs\\i'):  #遍历图片所在目录
        for f in fs:
            i=i+1
            img_name = os.path.join(fpathe,f)
            with open(img_name, 'rb') as fp:
                print(img_name)
                img_data = fp.read()
                msg_image = MIMEImage(img_data)
                msg_image.add_header('Content-ID', '<image%d>' %(i))
                msg.attach(msg_image)


    msg['Subject'] = Header(subject, 'utf-8')
    msg['from_addr'] = from_addr
    msg['To'] = ''.join(to_addr)

    
    login_addr = from_addr.split('@')[0]
    smtp.login(login_addr,password)


    smtp.set_debuglevel(1)
    smtp.sendmail(from_addr,to_addr,msg.as_string())
    smtp.quit()

count=0
with open("E:\\Python\\imgs\\aa.csv") as flist:    
    flists = csv.reader(flist)
    for line in flists:
        user0 = line[0]
        user1 = line[1]
        user2 = line[2]
        count = count + 1
        #url = line[1]
        sendmail(user2,user0,user1)
        print(user0,user1,count)
      
        time.sleep(3)

 

posted on 2016-08-29 14:30  momingliu11  阅读(602)  评论(0)    收藏  举报