- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章Python 使用SMTP发送邮件的代码小结由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。 python的smtplib提供了一种很方便的途径发送电子邮件。它对smtp协议进行了简单的封装。 Python创建 SMTP 对象语法如下:
1
2
|
import
smtplib
smtpObj
=
smtplib.SMTP( [host [, port [, local_hostname]]] )
|
参数说明: host: SMTP 服务器主机。 你可以指定主机的ip地址或者域名如:w3cschool.cc,这个是可选参数。 port: 如果你提供了 host 参数, 你需要指定 SMTP 服务使用的端口号,一般情况下SMTP端口号为25。 local_hostname: 如果SMTP在你的本机上,你只需要指定服务器地址为 localhost 即可。 Python SMTP对象使用sendmail方法发送邮件,语法如下:
。
。
参数说明: from_addr: 邮件发送者地址。 to_addrs: 字符串列表,邮件发送地址。 msg: 发送消息 这里要注意一下第三个参数,msg是字符串,表示邮件。我们知道邮件一般由标题,发信人,收件人,邮件内容,附件等构成,发送邮件的时候,要注意msg的格式。这个格式就是smtp协议中定义的格式。 实例 以下是一个使用Python发送邮件简单的实例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
#!/usr/bin/python
import
smtplib
sender
=
'from@fromdomain.com'
receivers
=
[
'to@todomain.com'
]
message
=
"""From: From Person <from@fromdomain.com>
To: To Person <to@todomain.com>
Subject: SMTP e-mail test
This is a test e-mail message.
"""
try
:
smtpObj
=
smtplib.SMTP(
'localhost'
)
smtpObj.sendmail(sender, receivers, message)
print
"Successfully sent email"
except
SMTPException:
print
"Error: unable to send email"
|
使用Python发送HTML格式的邮件 Python发送HTML格式的邮件与发送纯文本消息的邮件不同之处就是将MIMEText中_subtype设置为html。具体代码如下:
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
|
import
smtplib
from
email.mime.text
import
MIMEText
mailto_list
=
[
"YYY@YYY.com"
]
mail_host
=
"smtp.XXX.com"
#设置服务器
mail_user
=
"XXX"
#用户名
mail_pass
=
"XXXX"
#口令
mail_postfix
=
"XXX.com"
#发件箱的后缀
def
send_mail(to_list,sub,content):
#to_list:收件人;sub:主题;content:邮件内容
me
=
"hello"
+
"<"
+
mail_user
+
"@"
+
mail_postfix
+
">"
#这里的hello可以任意设置,收到信后,将按照设置显示
msg
=
MIMEText(content,_subtype
=
'html'
,_charset
=
'gb2312'
)
#创建一个实例,这里设置为html格式邮件
msg[
'Subject'
]
=
sub
#设置主题
msg[
'From'
]
=
me
msg[
'To'
]
=
";"
.join(to_list)
try
:
s
=
smtplib.SMTP()
s.connect(mail_host)
#连接smtp服务器
s.login(mail_user,mail_pass)
#登陆服务器
s.sendmail(me, to_list, msg.as_string())
#发送邮件
s.close()
return
True
except
Exception, e:
print
str
(e)
return
False
if
__name__
=
=
'__main__'
:
if
send_mail(mailto_list,
"hello"
,
"<a href='http://www.cnblogs.com/xiaowuyi'>小五义</a>"
):
print
(
"发送成功"
)
else
:
print
(
"发送失败"
)
|
或者你也可以在消息体中指定Content-type为text/html,如下实例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
#!/usr/bin/python
import
smtplib
message
=
"""From: From Person <from@fromdomain.com>
To: To Person <to@todomain.com>
MIME-Version: 1.0
Content-type: text/html
Subject: SMTP HTML e-mail test
This is an e-mail message to be sent in HTML format
<b>This is HTML message.</b>
<h1>This is headline.</h1>
"""
try
:
smtpObj
=
smtplib.SMTP(
'localhost'
)
smtpObj.sendmail(sender, receivers, message)
print
(
"Successfully sent email"
)
except
SMTPException:
print
(
"Error: unable to send email"
)
|
Python发送带附件的邮件 发送带附件的邮件,首先要创建MIMEMultipart()实例,然后构造附件,如果有多个附件,可依次构造,最后利用smtplib.smtp发送.
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
|
from
email.mime.text
import
MIMEText
from
email.mime.multipart
import
MIMEMultipart
import
smtplib
#创建一个带附件的实例
msg
=
MIMEMultipart()
#构造附件1
att1
=
MIMEText(
open
(
'd:\\123.rar'
,
'rb'
).read(),
'base64'
,
'gb2312'
)
att1[
"Content-Type"
]
=
'application/octet-stream'
att1[
"Content-Disposition"
]
=
'attachment; filename="123.doc"'
#这里的filename可以任意写,写什么名字,邮件中显示什么名字
msg.attach(att1)
#构造附件2
att2
=
MIMEText(
open
(
'd:\\123.txt'
,
'rb'
).read(),
'base64'
,
'gb2312'
)
att2[
"Content-Type"
]
=
'application/octet-stream'
att2[
"Content-Disposition"
]
=
'attachment; filename="123.txt"'
msg.attach(att2)
#加邮件头
msg[
'to'
]
=
'YYY@YYY.com'
msg[
'from'
]
=
'XXX@XXX.com'
msg[
'subject'
]
=
'hello world'
#发送邮件
try
:
server
=
smtplib.SMTP()
server.connect(
'smtp.XXX.com'
)
server.login(
'XXX'
,
'XXXXX'
)
#XXX为用户名,XXXXX为密码
server.sendmail(msg[
'from'
], msg[
'to'
],msg.as_string())
server.quit()
print
'发送成功'
except
Exception, e:
print
(
str
(e))
|
以下实例指定了Content-type header 为 multipart/mixed,并发送/tmp/test.txt 文本文件:
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
|
#!/usr/bin/python
import
smtplib
import
base64
filename
=
"/tmp/test.txt"
# 读取文件内容并使用 base64 编码
fo
=
open
(filename,
"rb"
)
filecontent
=
fo.read()
encodedcontent
=
base64.b64encode(filecontent)
# base64
sender
=
'webmaster@tutorialpoint.com'
reciever
=
'amrood.admin@gmail.com'
marker
=
"AUNIQUEMARKER"
body
=
"""
This is a test email to send an attachement.
"""
# 定义头部信息
part1
=
"""From: From Person <me@fromdomain.net>
To: To Person <amrood.admin@gmail.com>
Subject: Sending Attachement
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary=%s
--%s
"""
%
(marker, marker)
# 定义消息动作
part2
=
"""Content-Type: text/plain
Content-Transfer-Encoding:8bit
%s
--%s
"""
%
(body,marker)
# 定义附近部分
part3
=
"""Content-Type: multipart/mixed; name=\"%s\"
Content-Transfer-Encoding:base64
Content-Disposition: attachment; filename=%s
%s
--%s--
"""
%
(filename, filename, encodedcontent, marker)
message
=
part1
+
part2
+
part3
try
:
smtpObj
=
smtplib.SMTP(
'localhost'
)
smtpObj.sendmail(sender, reciever, message)
print
(
"Successfully sent email"
)
except
Exception:
print
(
"Error: unable to send email"
)
|
如果感兴趣的朋友可以继续参考下面的文章.
最后此篇关于Python 使用SMTP发送邮件的代码小结的文章就讲到这里了,如果你想了解更多关于Python 使用SMTP发送邮件的代码小结的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
大家好,我是 php 和 html 新手,面临问题:SMTP 错误:无法连接到 SMTP 主机。邮件程序错误:SMTP 错误:无法连接到 SMTP 主机。但在本地 xampp 中工作正常,在服务器中出
我希望这个问题不是完全偏离主题。 我一直想知道 SMTP 电子邮件验证。有很多服务(例如 Kickbox.io、Email-Validator.net 等)似乎可以处理 SMTP 验证,而不会阻止其
我正在尝试使用 phpMailer 通过电子邮件向用户发送确认消息。我的代码是这样的: IsSMTP(); // set mailer to use SMTP $mail->Host = "ssl:/
我已经在我的本地机器(Windows 7)上安装了 bugzilla 并且它运行良好。但是当我尝试创建一个新帐户时,它说 There was an error sending mail from it
我有一个将发送大量输出的程序。我只是想知道最大电子邮件附件大小是多少?根据RFC 1870邮件服务器可以拒绝邮件,因为它们太大了,但是使用 SMTP/MIME 时有最大大小吗?我在这方面找不到任何东西
假设我有一个网站,其某些功能需要电子邮件验证(例如用户注册)。当然,我会使用正则表达式验证电子邮件,但曾几何时,我在其他人的代码中看到了 SMTP 验证。 SMTP 验证有哪些优点和缺点? 我可以假设
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 2年前关闭。 Improve thi
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a software
我正在尝试使用 Vala 和 GLib + GIO 实现一个简单的 SMTP 服务器。 到目前为止,纯文本通信没有问题,但当涉及使用 STARTTLS 的 TLS 时,事情会变得更加困难。 这是我到目
我使用 go 的 net/smtp 发送电子邮件,它对某些电子邮件工作正常但对其他电子邮件无效。我收到 554 5.5.1 Error: no valid recipients 但我很确定我提供了正确
我需要帮助 这是我的代码: require 'PHPMailerAutoload.php'; $mail = new PHPMailer; $mail->isSMTP(); $mail->Host =
我的 joomla 联系表 gmail SMTP 设置不起作用。请参阅下面提交联系表时显示的消息。应该是什么原因?extension=php_openssl.dll 也启用了.. 错误信息-: SMT
我正在尝试使用 Amazon 的 SES/SMTP 发送电子邮件,但出现以下错误: javax.mail.MessagingException:无法连接到 SMTP 主机:email-smtp.us-
在我的Mac终端上,我试图通过telnet将smtp.gmail.com转换为port 587。 在Google Apps(设置为管理Dreamhost域)上,我已配置了中继,如下所示: "Allow
理论上,Request For Comments (RFC) 集包含开发人员构建 SMTP 客户端需要知道的一切。然而,要知道哪些 RFC 需要考虑,哪些可以忽略并不总是那么容易。 有没有人有 RFC
MT 支持 SMTP SendMail,还是我坚持使用 MFMailComposeViewController?现在,我可以使用它(MFMailComposeViewController),但是当我添
很难说出这里问的是什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或言辞激烈,无法以目前的形式合理回答。如需帮助澄清此问题以便可以重新打开,visit the help center . 10年前关
我正在尝试通过 BizTalk SMTP 发送端口发送消息。具体来说,我正在通过编排的“稍后指定”端口发送消息。我的目标是使用我选择的附件文件名将消息正文附加到已发送的电子邮件。 但是,无论我尝试什么
我正在编写一个通过有效的 GMail 用户 ID 和密码发送邮件的应用程序。 我只是想在 Windows XP 命令行上模拟 SMTP 连接,当我在 465 端口 telnet smtp.gmail.
关于从应用程序通过 GMails SMTP 服务器发送的电子邮件被标记为垃圾邮件的问题已经有很多讨论。 阅读其他帖子我无法弄清楚我的问题。我的电子邮件最终仍然是 SPF 中性的。 在我的 *(捕获所有
我是一名优秀的程序员,十分优秀!