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

PHP邮件发送函数:10个轻松实现邮件发送的函数

发布时间:2023-06-14 12:27:07

PHP作为一种伟大的编程语言,它提供了很多方便开发人员的功能和工具。在本文中,我们将分享10个非常有用的PHP邮件发送函数。这些函数都非常易于实现,并且可以轻松地将邮件发送到指定的收件人邮箱。

1. mail函数

PHP中最基本的邮件发送函数是mail函数。该函数非常简单,并且可以轻松地将邮件发送到指定的收件人邮箱。使用此函数发送邮件只需指定邮件标题、收件人邮箱地址和邮件正文即可。

$mail_to = 'recipient@example.com';

$mail_subject = 'Test Email';

$mail_message = 'This is a test email message.';

mail($mail_to, $mail_subject, $mail_message);

2. PHPMailer类

如果您需要更高级的邮件发送功能,则应使用PHPMailer类。该类提供了更多的设置,例如添加附件、发送HTML邮件和通过SMTP认证进行电子邮件身份验证等。

以下是一个使用PHPMailer类发送邮件的示例代码:

require_once './phpmailer/PHPMailerAutoload.php';

$mail = new PHPMailer;

$mail->isSMTP();

$mail->Host = 'smtp.gmail.com';

$mail->SMTPAuth = true;

$mail->Username = 'youraccount@gmail.com';

$mail->Password = 'yourpassword';

$mail->SMTPSecure = 'tls';

$mail->Port = 587;

$mail->From = 'youraccount@gmail.com';

$mail->FromName = 'Your Name';

$mail->addAddress('recipient@example.com', 'Recipient Name');

$mail->isHTML(true);

$mail->Subject = 'Test Email';

$mail->Body = 'This is a test email message.';

if(!$mail->send()) {

    echo 'Message could not be sent.';

    echo 'Mailer Error: ' . $mail->ErrorInfo;

} else {

    echo 'Message has been sent.';

}

3. SwiftMailer库

SwiftMailer是一款流行的PHP邮件发送库,它提供了一系列功能和设置选项,可以让您更轻松地发送复杂的邮件。SwiftMailer使用PHP邮件传输代理(MTA)来发送电子邮件。

以下是一个使用SwiftMailer库发送邮件的示例代码:

require_once './swiftmailer/vendor/autoload.php';

$transport = new Swift_SmtpTransport('smtp.gmail.com', 587, 'tls');

$transport->setUsername('youraccount@gmail.com');

$transport->setPassword('yourpassword');

$mailer = new Swift_Mailer($transport);

$message = new Swift_Message('Test Email');

$message->setFrom('youraccount@gmail.com', 'Your Name');

$message->setTo('recipient@example.com', 'Recipient Name');

$message->setBody('This is a test email message.');

$result = $mailer->send($message);

if($result){

    echo 'Message has been sent.';

} else {

    echo 'Message could not be sent.';

}

4. sendmail发送邮件

sendmail是一种标准的UNIX/Linux邮件传输代理(MTA),它可以轻松地将PHP邮件发送到指定的收件人邮箱。如果您的Web服务器使用Linux操作系统,则可以使用此方法发送电子邮件。

以下是一个使用sendmail发送邮件的示例代码:

$mail_to = 'recipient@example.com';

$mail_subject = 'Test Email';

$mail_message = 'This is a test email message.';

$mail_headers  = 'MIME-Version: 1.0' . "\r

";

$mail_headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r

";

$mail_headers .= 'From: youraccount@gmail.com' . "\r

";

$mail_headers .= 'X-Mailer: PHP/' . phpversion();

$mail_additional_parameters = '-f youraccount@gmail.com';

mail($mail_to, $mail_subject, $mail_message, $mail_headers, $mail_additional_parameters);

5. Gmail SMTP发送邮件

如果您使用Gmail作为您的电子邮件服务提供商,则可以使用Gmail SMTP来发送您的PHP邮件。通过Gmail SMTP发送邮件需要进行身份验证,可以确保您的邮件安全到达收件人邮箱。

以下是一个使用Gmail SMTP发送邮件的示例代码:

$smtp_host = 'smtp.gmail.com';

$smtp_port = 587;

$smtp_email = 'youraccount@gmail.com';

$smtp_password = 'yourpassword';

$mail_to = 'recipient@example.com';

$mail_subject = 'Test Email';

$mail_message = 'This is a test email message.';

$smtp = new SMTPMailer();

$smtp->IsSMTP();

$smtp->SMTPAuth = true;

$smtp->SMTPSecure = 'tls';

$smtp->Host = $smtp_host;

$smtp->Port = $smtp_port;

$smtp->Username = $smtp_email;

$smtp->Password = $smtp_password;

$smtp->SetFrom($smtp_email);

$smtp->AddReplyTo($smtp_email);

$smtp->AddAddress($mail_to);

$smtp->Subject = $mail_subject;

$smtp->Body = $mail_message;

if(!$smtp->Send()){

    echo 'Message could not be sent.';

    echo 'Mailer Error: ' . $smtp->ErrorInfo;

} else {

    echo 'Message has been sent.';

}

6. SMTP邮件发送函数

如果您不想使用已有的SMTP库,请参照以下代码自行实现SMTP邮件发送:

$smtp_host = 'smtp.gmail.com';

$smtp_port = 587;

$smtp_email = 'youraccount@gmail.com';

$smtp_password = 'yourpassword';

$mail_to = 'recipient@example.com';

$mail_subject = 'Test Email';

$mail_message = 'This is a test email message.';

$CRLF = "\r

";

$smtp_socket = fsockopen($smtp_host, $smtp_port, $errno, $errstr, 30);

if(!$smtp_socket) {

    echo 'SMTP Socket Error: ' . $errstr . '(' . $errno . ')';

}

$smtp_reply = fgets($smtp_socket, 4096);

// SMTP hello

fputs($smtp_socket, "EHLO $smtp_host" . $CRLF);

$smtp_reply = fgets($smtp_socket, 4096);

if(strstr($smtp_reply, "250 ")) {

    // Start TLS if server supports it

    fputs($smtp_socket, "STARTTLS" . $CRLF);

    $smtp_reply = fgets($smtp_socket, 4096);

    if(strstr($smtp_reply, "220 ")) {

        stream_socket_enable_crypto($smtp_socket, true, STREAM_CRYPTO_METHOD_TLS_CLIENT);

        // SMTP login

        fputs($smtp_socket, "AUTH LOGIN" . $CRLF);

        $smtp_reply = fgets($smtp_socket, 4096);

        if(strstr($smtp_reply, "334 ")) {

            fputs($smtp_socket, base64_encode($smtp_email) . $CRLF);

            $smtp_reply = fgets($smtp_socket, 4096);

            if(strstr($smtp_reply, "334 ")) {

                fputs($smtp_socket, base64_encode($smtp_password) . $CRLF);

                $smtp_reply = fgets($smtp_socket, 4096);

                if(strstr($smtp_reply, "235 ")) {

                    // Message sending

                    fputs($smtp_socket, "MAIL FROM:<$smtp_email>" . $CRLF);

                    $smtp_reply = fgets($smtp_socket, 4096);

                    if(strstr($smtp_reply, "250 ")) {

                        fputs($smtp_socket, "RCPT TO:<$mail_to>" . $CRLF);

                        $smtp_reply = fgets($smtp_socket, 4096);

                        if(strstr($smtp_reply, "250 ")) {

                            fputs($smtp_socket, "DATA" . $CRLF);

                            $smtp_reply = fgets($smtp_socket, 4096);

                            if(strstr($smtp_reply, "354 ")) {

                                fputs($smtp_socket, "Subject: $mail_subject" . $CRLF);

                                fputs($smtp_socket, "From: $smtp_email" . $CRLF);

                                fputs($smtp_socket, "To: $mail_to" . $CRLF);

                                fputs($smtp_socket, $CRLF . $mail_message . $CRLF . '.' . $CRLF);

                                $smtp_reply = fgets($smtp_socket, 4096);

                                if(strstr($smtp_reply, "250 ")) {

                                    fputs($smtp_socket, "QUIT" . $CRLF);

                                    fclose($smtp_socket);

                                    echo 'Message has been sent.';

                                } else {

                                    echo 'SMTP Error: Could not send message.';

                                    fclose($smtp_socket);

                                }

                            } else {

                                echo 'SMTP Error: Could not send message.';

                                fclose($smtp_socket);

                            }

                        } else {

                            echo 'SMTP Error: Could not send message.';

                            fclose($smtp_socket);

                        }

                    } else {

                        echo 'SMTP Error: Could not send message.';

                        fclose($smtp_socket);

                    }

                } else {

                    echo 'SMTP Error: Could not authenticate.';

                    fclose($smtp_socket);

                }

            } else {

                echo 'SMTP Error: Could