1.mailx的安装和使用
一般在contos5.几的版本装的一般是mailx-8的版本,但是这个版本太低,好像是不支持smtp,所以卸载了他,再装上新版本mailx-12
有时为了达到某种需求统一使用某一SMTP服务器作为发送邮件报告。
通常的做法都是,关闭本机的sendmail服务,修改/etc/mail.rc,增加一下类似两行,指定外部的smtp服务器地址、帐号密码等。
# vi /etc/mail.rc
set from=demo@qq.com smtp=smtp.qq.com
set smtp-auth-user=demo smtp-auth-password=ithf smtp-auth=login
然后通过命令来发送邮件
echo hello word | mail -s "demo title" demo@qq.com
可是发现在RHEL6运行是没有问题,在RHEL5下,mail命令始终是调用本地的sendmail服务来发送邮件的。到底RHEL6和RHEL5下的mail和mailx又有着什么关系呢?
RHEL6下
mail 链接到 mailx 命令,mailx版本为12.4
也就是说,在RHEL6\5下,运行mail 和mailx,实际上都是一个命令,而mail版本不同,导致了RHEL5下mail命令无法调用外部SMTP服务器。
安装mailx新版本可解决此问题。
下载最新版本mailx-12.4.tar.bz2 (271.5 kB) http://sourceforge.net/projects/heirloom/files/latest/download?source=files
解压、安装。下载的压缩包里有安装说明(见INSTALL 文件)。默认安装是make ; make install
同时安装说明也说了,如果make install 出错,则换为 make install UCBINSTALL=/usr/bin/install命令试试。
命令:
# tar jxvf mailx-12.4.tar.bz2
# cd mailx-12.4
# make
# make install UCBINSTALL=/usr/bin/install
然后在 /etc/nail.rc的最后加上以一几句set from=xuexishiyan@163.com
set smtp=smtp.163.com
set smtp-auth-user=xuexishiyan@163.com
set smtp-auth-password=1233234
set smtp-auth=login
然后用测试下
mailx -v -s "tes88t" lhyraoqin@163.com < a.txt
2.php中利用mailx,利用外部邮箱发送邮件
在php的配置文件php.ini中的一行原始为
;sendmail_path =
我们改一下,去掉前面的分号,来调用刚刚安装好的mailx(关于mailx的路径可以用命令获得:which mailx )
sendmail_path = /usr/local/bin/mailx -t -i
(一般以前人们都用sendmail来做的,但是在linux下sendmail太麻烦,sendmail_path =/usr/sbin/sendmail -t -i)
然后在php编写一个脚本测试一下发送邮件的
<?php
header("content-type:text/html;charset=utf-8");
//-----
//$conn = new mysqli('localhost', 'banzhang', '13233697713', 'myclass');
//$result = $conn->query("set names 'utf8'");
$to = "lhyraoqin@163.com";
$title = "the title mesg";
$mseg = "the mesg is : haha";
$fujia = "fu jia de";
if( mail($to, $title, $mseg, $fujia) )
{
echo "send ok <br />";
}
else
{
echo "send error <br />";
}
?>