安装
sudo apt install msmtp msmtp-mda
设置
vim .msmtprc
account default
host smtp.qq.com
from x1@qq.com
auth on
tls on
tls_certcheck off
user x1@qq.com
password xxxx
logfile ~/.msmtp.log
mail命令调用smtp.qq.发送邮件:
echo "Testing msmtp " | mail -s "hi root" -r x1@qq.com -- aa@yahoo.com
成功了!但是发现无法发送本地邮件了
echo "cron task work done " | mail -s "hi root" root
user用户发送邮件给root.
报错:
mail: cannot send message: Process exited with a non-zero status
查看日志:
Aug 24 20:47:31 host=smtp.qq.com tls=on auth=on user=x1@qq.com from=debian@debian.debian recipients=root@debian.debian smtpstatus=501 smtpmsg='501 Mail from address must be same as authorization user.' errormsg='envelope from address debian@debian.debian not accepted by the server' exitcode=EX_DATAERR
这样也不行
echo "cron task work done " | mail -s "hi root" -r debian@debian.debian root
日志
Aug 29 06:56:39 host=smtp.qq.com tls=on auth=on user=x1@qq.com from=debian@debian.debian recipients=root@debian.debian smtpstatus=501 smtpmsg='501 Mail from address must be same as authorization user.' errormsg='envelope from address debian@debian.debian not accepted by the server' exitcode=EX_DATAERR
如何解决?
根据你提供的信息,msmtp
的配置中遇到了一个常见的问题,即邮件发送时出现 "Mail from address must be same as authorization user" 的错误。这是因为 SMTP 服务器要求发送邮件的 "From" 地址必须与授权用户相同,以防止滥用。
要解决这个问题,请按照以下步骤进行操作:
编辑 .msmtprc
配置文件:
vim ~/.msmtprc
确保以下几点:
from
选项的值必须与 user
选项的值相同。from
选项的值必须使用授权用户的完整邮箱地址,例如 x1@qq.com
。你的 .msmtprc
文件应该像这样:
account defaulthost smtp.qq.comfrom x1@qq.comauth ontls ontls_certcheck offuser x1@qq.compassword xxxxlogfile ~/.msmtp.log
更新 mail
命令中的 -r
选项:
echo "cron task work done " | mail -s "hi root" -a "From: x1@qq.com" root
通过添加 -a "From: x1@qq.com"
,将发送邮件的 "From" 地址设置为授权用户的邮箱地址。
这样应该就可以成功发送邮件了。如果问题仍然存在,请确保你使用的是有效的授权用户、正确的邮箱地址和密码,并且与你的 SMTP 服务器设置兼容。
SMTP是发送邮件的协议,Python内置对SMTP的支持,可以发送纯文本邮件、HTML邮件以及带附件的邮件。 Python对SMTP支持有smtplib和email两个模块,email负责构造邮件,smtplib负责发送邮件。 首先,我们来构造一个最简单的纯文本邮件: from email.mime.text import MIMEText msg = MIMEText('hello, send
SMTP是发送邮件的协议,Python内置对SMTP的支持,可以发送纯文本邮件、HTML邮件以及带附件的邮件。 Python对SMTP支持有smtplib和email两个模块,email负责构造邮件,smtplib负责发送邮件。 首先,我们来构造一个最简单的纯文本邮件: from email.mime.text import MIMEText msg = MIMEText('hello, send
主要内容:实例,使用 Ruby 发送 HTML 邮件,实例,发送带附件的邮件,实例SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。 Ruby提供了 Net::SMTP 来发送邮件,并提供了两个方法 new 和 start: new 方法有两个参数: server name 默认为 localhost port number 默认为 25 start 方法有以下参数:
SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。 python的smtplib提供了一种很方便的途径发送电子邮件。它对smtp协议进行了简单的封装。 Python创建 SMTP 对象语法如下: import smtplib smtpObj = smtplib.SMTP( [host
我在我的camunda环境中有这个类(我在camunda modeller中使用这个类作为服务任务):
问题内容: 我正在使用以下方法使用SMTP从Python发送邮件。是使用的正确方法还是我缺少的陷阱? 问题答案: 我使用的脚本非常相似。我将其发布在此处,作为如何使用email。*模块生成MIME消息的示例。因此可以轻松修改此脚本以附加图片等。 我依靠ISP添加日期时间标头。 我的ISP要求我使用安全的smtp连接发送邮件,我依靠smtplib模块(可从http://www1.cs.columbi