Heim  >  Artikel  >  Backend-Entwicklung  >  php发送Email邮件的函数示例

php发送Email邮件的函数示例

WBOY
WBOYOriginal
2016-07-25 08:56:391173Durchsuche
本文介绍下,php实现的发送Email邮件的二个例子,借助mail函数来发送邮件,有需要的朋友参考下吧。

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

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

代码:

<?php
/**
* Email邮件发送
* by bbs.it-home.org
*/
function ae_send_mail($from, $to, $subject, $text, $headers="")
{
    if (strtolower(substr(PHP_OS, 0, 3)) === 'win')
        $mail_sep = "\r\n";
    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 bbs.it-home.org
*/

$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函数的用法及相关解释。



Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn