python,使用smtp发送邮件,求实例
发布网友
发布时间:2022-04-07 07:00
我来回答
共2个回答
热心网友
时间:2022-04-07 08:29
import smtplib
from email.mime.text import MIMEText
import email.mime.multipart
from email.MIMEMultipart import MIMEMultipart
from email.MIMEBase import MIMEBase
from email import Encoders
def send_mail():
mailto_list = ['xxx@xxx.com']
mail_host = "smtp.xxxxx.com" # 设置服务器
mail_user = "xxxx" # 用户名
mail_pass = "xxxxxx" # 口令
mail_postfix = "xxxx.com" # 发件箱的后缀
me = "hello" + "<" + mail_user + "@" + mail_postfix + ">" # 这里的hello可以任意设置,收到信后,将按照设置显示
content = 'This is test mail!'#邮件正文
msg = MIMEMultipart()
body = MIMEText(content, _subtype='html', _charset='gb2312') # 创建一个实例,这里设置为html格式邮件
msg.attach(body)
msg['Subject'] = "Subject Test" # 设置主题
msg['From'] = me
msg['To'] = ";".join(mailto_list)
#附件内容,若有多个附件,就添加多个part, 如part1,part2,part3
part = MIMEBase('application', 'octet-stream')
# 读入文件内容并格式化,此处文件为当前目录下,也可指定目录 例如:open(r'/tmp/123.txt','rb')
part.set_payload(open('test.txt','rb').read())
Encoders.encode_base64(part)
## 设置附件头
part.add_header('Content-Disposition', 'attachment; filename="test.txt"')
msg.attach(part)
try:
s = smtplib.SMTP()
s.connect(mail_host) # 连接smtp服务器
s.login(mail_user, mail_pass) # 登陆服务器
s.sendmail(me, mailto_list, msg.as_string()) # 发送邮件
s.close()
print 'send mail sucess'
return True
except Exception, e:
print str(e)
return False
热心网友
时间:2022-04-07 09:47
from smtplib import SMTP
from RuckusAutoTest.models import TestCase
from email.MIMEMultipart import MIMEMultipart
from email.mime.application import MIMEApplication
def sendFildByMail(config):
print 'Preparing...',
message = MIMEMultipart( )
message['from'] = config['from']
message['to'] = config['to']
message['Reply-To'] = config['from']
message['Subject'] = config['subject']
message['Date'] = time.ctime(time.time())
message['X-Priority'] = '3'
message['X-MSMail-Priority'] = 'Normal'
message['X-Mailer'] = 'Microsoft Outlook Express 6.00.2900.2180'
message['X-MimeOLE'] = 'Proced By Microsoft MimeOLE V6.00.2900.2180'
f=open(config['file'], 'rb')
file = MIMEApplication(f.read())
f.close()
file.add_header('Content-Disposition', 'attachment', filename= os.path.basename(config['file']))
message.attach(file)
print 'OK'
print 'Logging...',
smtp = SMTP(config['server'])#, config['port'])
smtp.ehlo()
smtp.starttls()
smtp.ehlo()
smtp.login(config['username'], config['password'])
print 'OK'
print 'Sending...',
smtp.sendmail (config['from'], [config['from'], config['to']], message.as_string())
print 'OK'
smtp.close()
time.sleep(1)
sendFildByMail({
'from': 'xxxx@163.com',
'to': 'xxxx@yyyy.com',
'subject': ''This is an email test!',
'server': '123.125.50.132',
'username': 'username',
'password': 'password'})
可以注册一个163邮箱试一下,是可以发邮件的。
在sendFildByMail这个函数里填上正确的参数,from是从哪个邮箱发送,也就是刚注册的163邮箱,to是发送到哪个邮箱,可以填另一个邮箱来检查是否能接收邮件,server不要改,这是163的地址;username和password那里填写163邮箱的用户名和密码。
希望能帮到你,有疑问请追问!