Linux命令行下有很多发邮件的软件,不熟悉的话会搞得很乱,不知道在哪里配置,不知道log在哪里,不知道怎样调试。一般云服务器不允许25端口。因此,推荐使用phpmailer,使用第三方SMTP发送。
(下面的方法曾经成功过,但现在都失败了。)
Linux下发邮件也一直是我感到困惑的问题。我的理解是,只有在服务器本身配置了邮件服务(即这是一台邮件服务器),当前登录用户有对应的邮件账号,命令行下邮件相关的命令才有用。
很久以前我的一台Linux服务器好像不需要做复杂设置就能发邮件,以root@IP或服务器域名之类的方式发送,后来我忘记了怎样设置。加上各类邮箱对垃圾邮件的过滤条件变得越来越严格,那些没有通过认证的邮件服务器发出的邮件很可能是收不到的。
今天又尝试了一下,用mail命令一开始失败,但后来加了-r参数后就成功了。很可能是邮件接收方识别出发出该邮件的服务器域名和声称的邮件来源一致,所以成功了。所以,很可能只有有域名的Linux服务器才能发邮件。
echo 'hello body' | mail -s 'hello subject' -r root@host receiver@email.com
上面的方法在香港一台Ubuntu 14.04的服务器上成功,但在大陆的一台Ubuntu 12.04服务器上却是不成功的。后来安装又卸载sendmail之后运行sendmailconfig就可以发去163的邮箱,但腾讯的企业邮箱收不到。
最近试了一下,安装sendmail也可以使用PHPMailer。
sudo apt-get install sendmail
不需要配置php.ini,默认就可以了。
可能在/var/log/mail.err中见到以下错误:
unable to qualify my own domain name (iZ94nbe5qnyZ) -- using short name
这时,我们应该修改/etc/hosts文件,添加类似以下的域名解释:
10.169.122.216 iZ94nbe5qnyZ.localdomain iZ94nbe5qnyZ
Mail命令的用法
mail command is most popular command to send emails from Linux terminal. Use few of below examples to send email.
[root@tecadmin ~]# mail -s "Test Subject" user@example.com < /dev/null
-s is used for defining subject for email.
To send email with attachment.
# mail -a /opt/backup.sql -s "Backup File" user@example.com < /dev/null
-a is used for attachments
Also we can add comma separated emails to send email to multiple recipients together.
# mail -s "Test Email" user@example.com,user2@example.com < /dev/null
安装Mail命令
mail命令可以指向很多个不同的版本,上面命令可以运行的一个版本是mail.mailutils,需要确认/usr/bin/mail的符号链接是指向/usr/bin/mail.mailutils
下面命令可查看postfix待发出邮件的列表:
postqueue -p
下面命令可清空postfix列表:
postsuper -d ALL
评论9
评论之后,admin可以收到邮件了!
评论之后,admin可以收到邮件了!
好像不行
刚才没清缓存
刚才没清缓存
清了缓存之后就可以了,更新了下面的命令…
清了缓存之后就可以了,更新了下面的命令,看能不能显示HTML格式。
您好
我为什么在多台centos服务器上输入发邮件命令后 也不提示错误 但就是接收不到
发件人邮箱域名和服务器域名一致吗…
发件人邮箱域名和服务器域名一致吗?收不到可能是被接收方邮件服务商拒收了。
您好
您好,我跟您联系了,可以帮我一下吗?十分感谢
测试1
这种方式应该不太可行了…
这种方式应该不太可行了,还是通过邮件服务商的SMTP来发吧。