欢迎访问宙启技术站
智能推送

PHP邮件函数——如何通过代码发送电子邮件

发布时间:2023-06-23 18:43:30

PHP是一种流行的Web编程语言,可以用来开发各种应用程序,包括电子邮件功能。通过PHP邮件函数,你可以轻松地在你的网站上实现电子邮件功能。

1. PHP邮件函数概述

PHP邮件函数指的是PHP内置的一组函数,用于发送电子邮件。这些函数包括mail()、imap_mail()、smtp_mail()等。

其中,mail()是最常用的函数,因为它已经内置在PHP中,不需要安装额外的扩展。但是,mail()的发送效率较低,而且容易被误判为垃圾邮件。

imap_mail()和smtp_mail()需要安装额外的扩展,但它们的发送效率较高,而且支持更多的功能,比如邮件附件、HTML邮件等。

2. 使用mail()发送电子邮件

mail()函数的语法如下:

bool mail ( string $to , string $subject , string $message [, string $additional_headers [, string $additional_parameters ]] )

其中,to表示收件人邮箱地址,subject表示邮件主题,message表示邮件正文,additional_headers和additional_parameters是可选参数。

下面是一个使用mail()函数发送电子邮件的示例代码:

$to = "receiver@example.com";
$subject = "测试邮件";
$message = "这是一封测试邮件。";

$headers = "From: sender@example.com\r
";
$headers .= "Reply-To: sender@example.com\r
";
$headers .= "Content-type: text/plain\r
";

mail($to, $subject, $message, $headers);

这段代码会向"receiver@example.com"发送一封主题为"测试邮件"、正文为"这是一封测试邮件。"的电子邮件。发件人地址为"sender@example.com",并且指定了邮件的头部信息。

需要注意的是,mail()函数发送的邮件可能会被误判为垃圾邮件。如果你需要发送重要的邮件,建议使用更高效的SMTP服务器。

3. 使用SMTP服务器发送电子邮件

SMTP(Simple Mail Transfer Protocol)是发送电子邮件的标准协议。使用SMTP服务器发送邮件可以提升邮件的发送效率和可靠性。

PHP提供了SMTP扩展,可以方便地通过代码访问SMTP服务器。下面是一个使用SMTP服务器发送电子邮件的示例代码:

$to = "receiver@example.com";
$subject = "测试邮件";
$message = "这是一封测试邮件。";

$headers = "From: sender@example.com\r
";
$headers .= "Reply-To: sender@example.com\r
";
$headers .= "Content-type: text/plain\r
";

$smtp_server = "smtp.example.com";
$smtp_username = "username";
$smtp_password = "password";

$smtp_conn = fsockopen($smtp_server, 25, $errno, $errstr, 30);
if (!$smtp_conn) {
    die("$errstr ($errno)
");
}

fputs($smtp_conn, "EHLO {$smtp_server}\r
");
while ($line = fgets($smtp_conn, 4096)) {
    if (substr($line, 3, 1) == " ") {
        break;
    }
}

fputs($smtp_conn, "AUTH LOGIN\r
");
while ($line = fgets($smtp_conn, 4096)) {
    if (substr($line, 3, 1) == " ") {
        break;
    }
}

fputs($smtp_conn, base64_encode($smtp_username) . "\r
");
while ($line = fgets($smtp_conn, 4096)) {
    if (substr($line, 3, 1) == " ") {
        break;
    }
}

fputs($smtp_conn, base64_encode($smtp_password) . "\r
");
while ($line = fgets($smtp_conn, 4096)) {
    if (substr($line, 3, 1) == " ") {
        break;
    }
}

fputs($smtp_conn, "MAIL FROM:<sender@example.com>\r
");
while ($line = fgets($smtp_conn, 4096)) {
    if (substr($line, 3, 1) == " ") {
        break;
    }
}

fputs($smtp_conn, "RCPT TO:<{$to}>\r
");
while ($line = fgets($smtp_conn, 4096)) {
    if (substr($line, 3, 1) == " ") {
        break;
    }
}

fputs($smtp_conn, "DATA\r
");
while ($line = fgets($smtp_conn, 4096)) {
    if (substr($line, 3, 1) == " ") {
        break;
    }
}

fputs($smtp_conn, "From: sender@example.com\r
");
fputs($smtp_conn, "To: {$to}\r
");
fputs($smtp_conn, "Subject: {$subject}\r
");
fputs($smtp_conn, "{$headers}\r
\r
");
fputs($smtp_conn, "{$message}\r
");
fputs($smtp_conn, ".\r
");
while ($line = fgets($smtp_conn, 4096)) {
    if (substr($line, 3, 1) == " ") {
        break;
    }
}

fclose($smtp_conn);

这段代码通过fsockopen()函数连接SMTP服务器,并通过SMTP协议发送电子邮件。

4. 总结

PHP邮件函数提供了多种方法来发送电子邮件。通过mail()函数可以方便地发送简单的纯文本邮件,而使用SMTP服务器则可以提升邮件的发送效率和可靠性。需要注意的是,电子邮件的正常发送还涉及到多种因素,比如DNS解析、反垃圾邮件策略等,需要综合考虑。