为了更好的理解邮件发送功能的实现,要先了解邮件发送系统的大致流程。首先 电子邮件之间的相互发送接受就像 邮局邮件发送一样,从一个站点(邮件发送服务器)到目的地站点(邮件接收服务器),然后目的地站点处理收到的邮件,并发送给接受人。每个邮件服务器即担任发送也担任接受邮件,并且每个服务器地址,端口号,配置等也不同。
其实发送邮件的流程就 两部:
第一:写邮件
写好发送方,接受方
写好主题
写好正文(包括附件,图片等)
把信件整理在一起
第二:发送邮件
连接发送邮件服务器
登录邮箱
发送邮件
退出邮箱
代码部分:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
|
# -*- coding:utf-8 -*-
import smtplib
from email.header import Header
from email.mime.image import MIMEImage
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
#创建邮件对象,相当于信纸
msg = MIMEMultipart()
#邮件发送方
msg[ 'From' ] = 'XXXXXXXX.qq.com'
#邮件接收方
msg[ 'To' ] = '1212112@qq.com'
#邮件主题
msg[ 'Subject' ] = Header( '这是邮箱主题部分' , charset = 'UTF-8' ) #中文主题
#文本内容
txt = '亲爱的用户'
part1 = MIMEText(txt, 'plain' , 'utf-8' )
#添加到邮件中
msg.attach(part1)
#超文本内容,放有图片,注意src路径,此为放在同一目录中
html = '<div><img src="cid:image1">亲爱的</div>'
#一定要设置邮件格式,否则可能会乱码,当时接手别人手中没加邮件格式的项目,坑了我半天
part2 = MIMEText(html, 'html' , 'utf-8' )
#添加到邮件中
msg.attach(part2)
#图片放到邮件中
# 指定图片为当前目录
fp = open ( 'test.png' , 'rb' )
msgImage = MIMEImage(fp.read())
fp.close()
# 定义图片 ID,在 HTML 文本中引用
msgImage.add_header( 'Content-ID' , '<image1>' )
msg.attach(msgImage)
#加入附件
att2 = MIMEText( '这是附件里的文字' , 'base64' , 'utf-8' )
att2[ "Content-Type" ] = 'application/octet-stream'
#设置附件名为runoob.txt
att2[ "Content-Disposition" ] = 'attachment; filename="runoob.txt"'
#附件放在邮件中
msg.attach(att2)
#非ssl方式的smtp(简单邮件发送协议),下面注释为ssl方式的smtp
smtp = smtplib.SMTP()
# smtp = smtplib.SMTP_SSL()
try :
#连接主机地址
smtp.connect( 'mail.yto.net.cn:25' )
#登录邮箱,需要邮箱账号,密码
smtp.login( 'XXXXXXXX.qq.com' , '234123' )
#发送邮件,需要登录的邮箱号,发送方的邮箱号,发送内容
smtp.sendmail( 'XXXXXXXX.qq.com' , '1212112@qq.com' , msg.as_string())
#退出邮箱
smtp.quit()
print 'The mail is sended successly.'
except smtplib.SMTPException,e:
print "Error: 无法发送邮件" ,e
|
发送结果:
注意点:当自己邮箱作为邮件发送方时,注意邮件服务器的设置里把smtp服务打开
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。