php如何发送电子邮件?使用PHPMailer实现
来源:转载
发布时间:2018-11-03 15:04:08
阅读量:906
php如何发送电子邮件?本篇文章给大家介绍使用PHPMailer+SMTP实现发送电子邮件的方法,让大家了解如何配置和使用PHPMailer 。有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助。
PHPMailer是一个流行的PHP邮件发送库。它支持通过mail()函数或SMTP发送邮件。简而言之,PHPMailer是一种在基于PHP的环境中发送电子邮件的有效方法。
下面我们来看看
第1步 - 收集PHPMailer的详细信息
要将PHPMailer与Hostinger SMTP一起使用,首先需要创建一个电子邮件帐户。您可以在Web主机面板的“ 电子邮件帐户” 部分执行此操作 。
完成后,抓住位于同一部分的SMTP详细信息:
你现在应该有四种部分,它们是:
1、电邮帐户用户名
2、电邮帐户密码
3、SMTP主机
4、SMTP端口
第2步 - 安装PHPMailer
由于我们拥有所有必需的详细信息,因此我们可以开始PHPMailer设置。一种简单的方法是使用Composer。它已预先安装在我们的共享主机方案中,因此您只需通过SSH连接并执行以下命令:
然后运行:
1 | composer require phpmailer/phpmailer
|
稍等片刻,安装完成,PHPMailer将出现在新创建的目录中。
第3步 - 了解PHPMailer
要了解PHPMailer及其工作原理,让我们研究一下使用SMTP进行传递的示例。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | <?php
use PHPMailer\PHPMailer\PHPMailer;
require '../vendor/autoload.php' ;
$mail = new PHPMailer;
$mail ->isSMTP();
$mail ->SMTPDebug = 2;
$mail ->Host = 'mx1.hostinger.com' ;
$mail ->Port = 587;
$mail ->SMTPAuth = true;
$mail ->Username = 'test@hostinger-tutorials.com' ;
$mail ->Password = 'EMAIL_ACCOUNT_PASSWORD' ;
$mail ->setFrom( 'test@hostinger-tutorials.com' , 'Your Name' );
$mail ->addReplyTo( 'reply-box@hostinger-tutorials.com' , 'Your Name' );
$mail ->addAddress( 'example@gmail.com' , 'Receiver Name' );
$mail ->Subject = 'PHPMailer SMTP message' ;
$mail ->msgHTML( file_get_contents ( 'message.html' ), __DIR__);
$mail ->AltBody = 'This is a plain text message body' ;
$mail ->addAttachment( 'test.txt' );
if (! $mail ->send()) {
echo 'Mailer 错误: ' . $mail ->ErrorInfo;
} else {
echo '发送消息!' ;
}
?>
|
让我们看看每个组件的作用:
专业提示:
SMTPDebug = 2; 在测试脚本并查看脚本的工作原理时非常有用。
将其设置为SMTPDebug = 0; 在最终版本中,以避免最终用户看到SMTP传递报告。
如果您检查了整个代码,您会注意到我们正在做的事情与第一个示例中的有些不同。我们正在发送HTML消息。它的内容将取自位于同一目录中的message.html 文件。与纯文本消息相比,这使您可以格式化文本并提供更多功能。
第4步 - 运行PHPMailer脚本
让我们创建一个testphpmailer.php文件,并使用我们之前检索到的SMTP详细信息填写所有字段。通过 在浏览器中输入YourDomain.com/testphpmailer.php来执行脚本 ,您将看到类似的消息:
第5步 - PHPMailer联系表单示例
您可以使用PHPMailer,而不仅仅是发送简单的消息。您可以利用它的一种方法是创建一个联系表单,您的访问者或用户可以与您联系。以下是此类脚本的基本示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | <? php
use PHPMailer\PHPMailer\PHPMailer;
require '../vendor/autoload.php';
$ mail = new PHPMailer;
$mail->isSMTP();
$mail->Host = 'mx1.hostinger.com';
$mail->Port = 587;
$mail->SMTPAuth = true;
$mail->Username = 'test@hostinger-tutorials.com';
$mail->Password = 'EMAIL_ACCOUNT_PASSWORD';
$mail->setFrom('test@hostinger-tutorials.com', 'Mr. Drago');
$mail->addAddress('example@gmail.com', 'Receiver Name');
if ($mail->addReplyTo($_POST['email'], $_POST['name'])) {
$mail->Subject = 'PHPMailer contact form';
$mail->isHTML(false);
$mail->Body = <<< EOT
Email: {$_POST['email']}
Name: {$_POST['name']}
Message: {$_POST['message']}
EOT;
if (!$mail->send()) {
$msg = '对不起,出了点问题。请稍后再试。';
} else {
$msg = '发送消息成功!谢谢您联络我们。';
}
} else {
$msg = '电子邮件地址无效,邮件被忽略。';
}
?>
<!DOCTYPE html>
< html lang = "en" >
< head >
< meta charset = "UTF-8" >
< title >邮件表单</ title >
</ head >
< body >
< h1 >Let's get in touch!</ h1 >
<? php if (!empty($msg)) {
echo "<h2>$msg</ h2 >";
} ?>
< form method = "POST" >
< label for = "name" >名称: < input type = "text" name = "name" id = "name" ></ label >< br >< br >
< label for = "email" >电子邮件: < input type = "email" name = "email" id = "email" ></ label >< br >< br >
< label for = "message" >消息:< textarea name = "message" id = "message" rows = "8" cols = "20" ></ textarea ></ label >< br >< br >
< input type = "submit" value = "发送" >
</ form >
</ body >
</ html >
|
最终结果是:
一旦用户提交了他的消息,他将得到确认,内容将到达addAddress 字段中输入的电子邮箱 。
专业提示:如果PHPMailer联系表单不起作用,请添加以下行以查看导致该问题的原因: $ mail-> SMTPDebug = 2;
一旦完成,不要忘记将其删除或设置为零!