圆月山庄资源网 Design By www.vgjia.com
本地测试发邮件功能很流畅,部署到阿里云上以后发现总是NOT FIND,这就很奇怪。开始以为是url写错了导致的,检查N多遍发现完全一毛一样的。后来各种百度,发现是因为阿里云禁用了25端口导致的。查看各种资料,解决的办法五花八门。试了几种解决方案,都解决了问题。现在整理如下:(不用去尝试申请解禁25端口的,可以很认真负责的告诉你,完全没有卵用)
首先,是阿里大大给的官方的解决方案,用SMTP发送邮件:代码如下
# -*- coding:utf-8 -*- import urllib, urllib2 import smtplib from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText from email.mime.application import MIMEApplication # 发件人地址,通过控制台创建的发件人地址 username = 'xxx@xxx.com' # 发件人密码,通过控制台创建的发件人密码 password = 'XXXXXXXX' # 收件人地址列表,支持多个收件人,最多30个 rcptlist = ['to1@to.com', 'to2@to.com'] receivers = ','.join(rcptlist) # 构建 multipart 的邮件消息 msg = MIMEMultipart('mixed') msg['Subject'] = 'Test Email' msg['From'] = username msg['To'] = receivers # 构建 multipart/alternative 的 text/plain 部分 alternative = MIMEMultipart('alternative') textplain = MIMEText('纯文本部分', _subtype='plain', _charset='UTF-8') alternative.attach(textplain) # 构建 multipart/alternative 的 text/html 部分 texthtml = MIMEText('超文本部分', _subtype='html', _charset='UTF-8') alternative.attach(texthtml) # 将 alternative 加入 mixed 的内部 msg.attach(alternative) # 附件类型 # xlsx 类型的附件 xlsxpart = MIMEApplication(open('测试文件1.xlsx', 'rb').read()) xlsxpart.add_header('Content-Disposition', 'attachment', filename=Header("测试文件1.xlsx","utf-8").encode()) msg.attach(xlsxpart) # jpg 类型的附件 jpgpart = MIMEApplication(open('2.jpg', 'rb').read()) jpgpart.add_header('Content-Disposition', 'attachment', filename=Header("2.jpg","utf-8").encode()) msg.attach(jpgpart) # mp3 类型的附件 mp3part = MIMEApplication(open('3.mp3', 'rb').read()) mp3part.add_header('Content-Disposition', 'attachment', filename=Header("3.mp3","utf-8").encode()) msg.attach(mp3part) # 发送邮件 try: client = smtplib.SMTP() #python 2.7以上版本,若需要使用SSL,可以这样创建client #client = smtplib.SMTP_SSL() client.connect('smtpdm.aliyun.com') client.login(username, password) #发件人和认证地址必须一致 client.sendmail(username, rcptlist, msg.as_string()) client.quit() print '邮件发送成功!' except smtplib.SMTPRecipientsRefused: print '邮件发送失败,收件人被拒绝' except smtplib.SMTPAuthenticationError: print '邮件发送失败,认证错误' except smtplib.SMTPSenderRefused: print '邮件发送失败,发件人被拒绝' except smtplib.SMTPException,e: print '邮件发送失败, ', e.message
官方的当然好用喽,就是写的太详细和复杂了,实在懒得折腾,为了尽可能少的改代码,就放弃了。
下面是两种网友提供的简单的解决方案
这个是简化版的SMTP方式
import smtplib from email.mime.text import MIMEText msg_from = '306334678@qq.com' # 发送方邮箱 passwd = '****' # 填入发送方邮箱的授权码(填入自己的授权码,相当于邮箱密码) msg_to = ['****@qq.com','**@163.com','*****@163.com'] # 收件人邮箱 subject = "邮件标题" # 主题 content = "邮件内容,我是邮件内容,哈哈哈" # 生成一个MIMEText对象(还有一些其它参数) # _text_:邮件内容 msg = MIMEText(content) # 放入邮件主题 msg['Subject'] = subject # 也可以这样传参 # msg['Subject'] = Header(subject, 'utf-8') # 放入发件人 msg['From'] = msg_from # 放入收件人 msg['To'] = '616564099@qq.com' # msg['To'] = '发给你的邮件啊' try: # 通过ssl方式发送,服务器地址,端口 s = smtplib.SMTP_SSL("smtp.qq.com", 465) # 登录到邮箱 s.login(msg_from, passwd) # 发送邮件:发送方,收件方,要发送的消息 s.sendmail(msg_from, msg_to, msg.as_string()) print('成功') except s.SMTPException as e: print(e) finally: s.quit()
方法二:为使用send_mail模块发送(和我原来的代码相似,改动较少,墙裂推荐)
setting.py配置如下
# EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' EMAIL_HOST = 'smtp.qq.com' # 如果是 163 改成 smtp.163.com EMAIL_PORT = 465 # 端口号 EMAIL_HOST_USER = '306334678@qq.com' # 发送者的邮箱帐号 EMAIL_HOST_PASSWORD = '***' # 发送者的邮箱授权 DEFAULT_FROM_EMAIL = EMAIL_HOST_USER #这样收到的邮件,收件人处就会这样显示 #DEFAULT_FROM_EMAIL = 'lqz<'306334678@qq.com>' EMAIL_USE_SSL = True #使用ssl #EMAIL_USE_TLS = False # 使用tls #EMAIL_USE_SSL 和 EMAIL_USE_TLS 是互斥的,即只能有一个为 True
views.py
from django.core.mail import send_mail # 导入邮箱模块 from threading import Thread # 导入线程模块 from threading import Thread t1 = Thread(target=send_mail,args=( '您的%s文章被%s评论了'%(article_name,user_name), '这个人评论了:%s'%(content), settings.EMAIL_HOST_USER, ['1670874977@qq.com'] )) t1.start()
圆月山庄资源网 Design By www.vgjia.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
圆月山庄资源网 Design By www.vgjia.com
暂无评论...
RTX 5090要首发 性能要翻倍!三星展示GDDR7显存
三星在GTC上展示了专为下一代游戏GPU设计的GDDR7内存。
首次推出的GDDR7内存模块密度为16GB,每个模块容量为2GB。其速度预设为32 Gbps(PAM3),但也可以降至28 Gbps,以提高产量和初始阶段的整体性能和成本效益。
据三星表示,GDDR7内存的能效将提高20%,同时工作电压仅为1.1V,低于标准的1.2V。通过采用更新的封装材料和优化的电路设计,使得在高速运行时的发热量降低,GDDR7的热阻比GDDR6降低了70%。
更新日志
2024年11月02日
2024年11月02日
- 《暗喻幻想》顺风耳作用介绍
- 崔健1985-梦中的倾诉[再版][WAV+CUE]
- 黄子馨《追星Xin的恋人们2》HQ头版限量编号[WAV+CUE]
- 孟庭苇《情人的眼泪》开盘母带[低速原抓WAV+CUE]
- 孙露《谁为我停留HQCD》[低速原抓WAV+CUE][1.1G]
- 孙悦《时光音乐会》纯银CD[低速原抓WAV+CUE][1.1G]
- 任然《渐晚》[FLAC/分轨][72.32MB]
- 英雄联盟新英雄安蓓萨上线了吗 新英雄安蓓萨技能介绍
- 魔兽世界奥杜尔竞速赛什么时候开启 奥杜尔竞速赛开启时间介绍
- 无畏契约CGRS准星代码多少 CGRS准星代码分享一览
- 张靓颖.2012-倾听【少城时代】【WAV+CUE】
- 游鸿明.1999-五月的雪【大宇国际】【WAV+CUE】
- 曹方.2005-遇见我【钛友文化】【WAV+CUE】
- Unity6引擎上线:稳定性提升、CPU性能最高提升4倍
- 人皇Sky今日举行婚礼!电竞传奇步入新篇章