使用PYTHON-smtplib需要先安装sendmail,使用apt install sendmail命令安装vcb即可,安装完成后sendmail的配置文件在/etc/mail/中,日志文件位于/var/log/目录中,mail.log、mail.err,查看这两个文件信息来定位问题。可以通过命令mail、mailq查看接收到的邮件和待发送的邮件。本文地址:http://8408.cn/article/956.html,未经许可,不得转载.
$ whereis sendmail sendmail: /usr/sbin/sendmail /usr/lib/sendmail /usr/share/sendmail
本文地址:http://8408.cn/article/956.html,未经许可,不得转载.
进行邮件发送代码很少,引入模块定义几个参数执行就行了。代码示例如下:本文地址:http://8408.cn/article/956.html,未经许可,不得转载.
import smtplib from email.mime.text import MIMEText from email.header import Header import traceback sender = 'my@cc.com' receivers = ['user1@cc.com', 'user2@cc.com'] #四个参数 message = MIMEText('邮件信息主体', 'plain', 'utf-8') message['Subject'] = Header('Python smtplib邮件发送测试', 'utf-8') message['From'] = Header('测试邮件', 'utf-8') message['To'] = Header('自己', 'utf-8') try: smtpObj = smtplib.SMTP('localhost') smtpObj.sendmail(sender, receivers, message.as_string()) print('发送成功...') except: traceback.print_exc() print('Error: 发送失败')本文地址:http://8408.cn/article/956.html,未经许可,不得转载.
在执行过程中遇到报错:smtplib.SMTPRecipientsRefused: {'test@e.com': (550, b'5.7.1... Relaying denied. IP name possibly forged [172.17.0.3]')}。之前我已在服务器中进行了调试并且成功运行,但后面部署到docker容器中运行后就出现了上面的错误。从提示也很清楚看到IP地址不合法,此需要修改mail中的配置,进到mail服务器,在/etc/mail/access文件中添加如下一行:
Connect: IP地址 RELAY
然后使用如下命令使上述编辑过的配置生效即可成功.本文地址:http://8408.cn/article/956.html,未经许可,不得转载.
makemap hash /etc/mail/access.db < /etc/mail/access本文地址:http://8408.cn/article/956.html,未经许可,不得转载.
本文地址:http://8408.cn/article/956.html 未经许可,不得转载. 手机访问本页请扫描右下方二维码.
手机扫码直接打开本页面 |