php发送Email邮件的函数示例

发布时间:2020-01-16编辑:脚本学堂
本文介绍下,php实现的发送Email邮件的二个例子,借助mail函数来发送邮件,有需要的朋友参考下吧。

在php中,使用自带的mail()函数来发送邮件,会存在很多不安全因素。
我们实现了如下的ae_send_mail函数,适用于PHP4.0.2或更高版本。
ae_send_mail调用时只用四个参数:发件人,收件人,主题,邮件内容。

此函数通过加过一些过滤机制,可以去除一切不必要的特殊字符对邮件的影响。

代码:

<?php
/**
* Email邮件发送
* by www.jb200.com
*/
function ae_send_mail($from, $to, $subject, $text, $headers="")
{
    if (strtolower(substr(PHP_OS, 0, 3)) === 'win')
        $mail_sep = "rn";
    else
        $mail_sep = "n";

    function _rsc($s)
    {
        $s = str_replace("n", '', $s);
        $s = str_replace("r", '', $s);
        return $s;
    }

    $h = '';
    if (is_array($headers))
    {
        foreach($headers as $k=>$v)
            $h = _rsc($k).': '._rsc($v).$mail_sep;
        if ($h != '') {
            $h = substr($h, 0, strlen($h) - strlen($mail_sep));
            $h = $mail_sep.$h;
        }
    }

    $from = _rsc($from);
    $to = _rsc($to);
    $subject = _rsc($subject);
    mail($to, $subject, $text, 'From: '.$from.$h);
}
?>

以上函数有必选参数:$from, $to, $subject, $text,另外有一个可选参数$headers,用于传输一些邮件头信息,它可以接受数组的形式,例如:(“头信息1”=>“值”,“头信息2”=>“值”)。

以下是在具体页面中的例子,大家可以参考下。

代码:

<?php 
/**
* as_send_mail函数示例
* 接收联系人信息
* by www.jb200.com
*/

$site_admin = 'your@email.adress';

// function ae_send_mail (see code above) is pasted here

if (($_SERVER['REQUEST_METHOD'] == 'POST') &&
    isset($_POST['subject']) && isset($_POST['text']) &&
    isset($_POST['from1']) && isset($_POST['from2']))
    {
        $from = $_POST['from1'].' <'.$_POST['from2'].'>';
        // nice RFC 2822 From field

        ae_send_mail($from, $site_admin, $_POST['subject'], $_POST['text'],
        array('X-Mailer'=>'PHP script at '.$_SERVER['HTTP_HOST']));
        $mail_send = true;
    }
?>
<html><head>
<title>发送邮件的例子</title>
</head>
<body>
<?php
if (isset($mail_send)) {
    echo '<h1>邮件已发送!谢谢!</h1>';
}
else {
?>
<form action="<?php echo $_SERVER['REQUEST_URI']; ?>" method="post">
姓名: <input type="text" name="from1" size="30" /><br />
邮箱: <input type="text" name="from2" size="30" /><br />
主题: <input type="text" name="subject" size="30" /><br />
内容: <br />
<textarea rows="5" cols="40" name="text"></textarea>
<input type="submit" value="send" />
</form>
<?php } ?>
</body>
</html>

注意,由于ae_send_mail函数使用php内置的mail()函数来发送邮件,与此函数相关的问题,ae_send_mail也会存在。
大家在使用时,遇到问题时,请参考mail函数的用法及相关解释。