首页 > 编程语言 >PHP 发送邮件

PHP 发送邮件

时间:2022-08-22 20:56:40浏览次数:79  
标签:php PHPMailer 发送 HTML mail PHP 邮件

在php网站开发中,发送电子邮件是一个非常普片的需求。比如网站注册功能,当用户注册完成后需要发送电子邮件给用户,提示用户注册成功或者发送验证链接,另外,用户修改账号密码也需要发送电子邮件。

本文章向大家介绍php发送邮件的两种方法:

  1. 使用php mail()发送邮件
  2. 使用第三方类库PHPMailer发送邮件

 

使用php mail()发送邮件

mail()是php的内置函数,它允许使用本地sendmail 程序发送电子邮件。无论何时调用mail()函数,它都会调用本地sendmail程序,该程序通常由系统管理员配置。如果你的虚拟主机位于Hostinger,你可以在电子邮件 - >邮件服务控制 部分启用/禁用此功能 。

默认情况下sendmail服务是自启(自行启动)。

语法:

mail(to,subject,message,headers,parameters)

参数:

参数名描述
to 必需。规定 email 接收者。
subject 必需。规定 email 的主题。注释:该参数不能包含任何新行字符。
message 必需。定义要发送的消息。应使用 LF (\n) 来分隔各行。
headers

可选。规定附加的标题,比如 From、Cc 以及 Bcc。

应当使用 CRLF (\r\n) 分隔附加的标题。

parameters 可选。对邮件发送程序规定额外的参数。

使用php mail()发送html邮件

<?php

$to = "[email protected], [email protected]";
$subject = "HTML email";

$message = "
<html>
<head>
<title>HTML email</title>
</head>
<body>
<p>This email contains HTML Tags!</p>
<table>
<tr>
<th>Firstname</th>
<th>Lastname</th>
</tr>
<tr>
<td>John</td>
<td>Doe</td>
</tr>
</table>
</body>
</html>
";

// 当发送 HTML 电子邮件时,请始终设置 content-type
$headers = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type:text/html;charset=iso-8859-1" . "\r\n";

// 更多报头
$headers .= 'From: <[email protected]>' . "\r\n";
$headers .= 'Cc: [email protected]' . "\r\n";

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

重要的是要记住,要发送HTML邮件,您需要设置Content-type标头:

$headers  = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";

使用php mail()发送纯文本邮件

<?php
$to = '[email protected]';
$subject = 'Marriage Proposal';
$message = 'Hi Jane, will you marry me?'; 
$from = '[email protected]';
 
// Sending email
if(mail($to, $subject, $message)){
    echo 'Your mail has been sent successfully.';
} else{
    echo 'Unable to send email. Please try again.';
}
?>

 

使用第三方类库PHPMailer发送邮件

PHPMailer是一个非常优秀的php第三方邮箱发送类函数, 专门用于php语言的邮件发送类,功能十分地强大,丰富了 PHP 本身单一的 mail() 函数。支持 SMTP 等、附件等。 PHPMailer 遵守 LGPL 授权,可以免费下载。

PHPMailer主要功能特点:

  1. 支持邮件 s/mime加密的数字签名
  2. 支持邮件多个 TOs, CCs, BCCs and REPLY-TOs
  3. 可以工作在任何服务器平台,所以不用担心WIN平台无法发送邮件的问题的
  4. 支持文本/HTML格式邮件
  5. 可以嵌入image图像
  6. 对于邮件客户端不支持HTML阅读的进行支持
  7. 功能强大的发送邮件调试功能debug
  8. 自定义邮件header
  9. 冗余SMTP服务器支持
  10. 支持8bit, base64, binary, and quoted-printable 编码
  11. 文字自动换行
  12. 支持多附件发送功能
  13. 支持SMTP服务器验证功能
  14. 在Sendmail, qmail, Postfix, Gmail, Imail, Exchange 等平台测试成功
  15. 提供的下载文件中,包括内容详细的说明文档及示例说明,所以不用担心难于上手的问题!
  16. PHPMailer 非常小巧、简单、方便、快捷

下载地址:https://github.com/PHPMailer/PHPMailer

下面我们一起来看个php中利用PHPMailer插件实现gmail发送邮件实例,希望此教程对大家有帮助。

下面代码是使用PHPMailer从本地Web服务器发送电子邮件的最简单示例:

<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

require_once "vendor/autoload.php";

//PHPMailer Object
$mail = new PHPMailer(true); //Argument true in constructor enables exceptions

//From email address and name
$mail->From = "[email protected]";
$mail->FromName = "Full Name";

//To address and name
$mail->addAddress("[email protected]", "Recepient Name");
$mail->addAddress("[email protected]"); //Recipient name is optional

//Address to which recipient will reply
$mail->addReplyTo("[email protected]", "Reply");

//CC and BCC
$mail->addCC("[email protected]");
$mail->addBCC("[email protected]");

//Send HTML or Plain Text email
$mail->isHTML(true);

$mail->Subject = "Subject Text";
$mail->Body = "<i>Mail body in HTML</i>";
$mail->AltBody = "This is the plain text version of the email content";

try {
    $mail->send();
    echo "Message has been sent successfully";
} catch (Exception $e) {
    echo "Mailer Error: " . $mail->ErrorInfo;
}

 

使用PHPMailer发送带有附件的电子邮件的示例:

<?php 
require_once 'class.phpmailer.php';
$mail = new PHPMailer();
// Now you only need to add the necessary stuff
 
// HTML body
 
$body = "</pre>
<div>";
$body .= " Hello Dimitrios
";
$body .= "<i>Your</i> personal photograph to this message.
";
$body .= "Sincerely,
";
$body .= "phpmailer test message ";
$body .= "</div>" ;
 
// And the absolute required configurations for sending HTML with attachement
 
$mail->AddAddress("[email protected]", "My-webpage Website");
$mail->Subject = "test for phpmailer-3";
$mail->MsgHTML($body);
$mail->AddAttachment("phpmailer.gif");
if(!$mail->Send()) {
echo "There was an error sending the message";
exit;
}
echo "Message was sent successfully";
 
?>

要将附件添加到电子邮件中,我们只需要使用addAttachment函数,该函数接受文件路径作为参数。要附加多个文件,你只需要多次调用它就可以了。

 
以上就是本文的全部内容,希望对大家的学习有所帮助。更多教程请访问码农之家

标签:php,PHPMailer,发送,HTML,mail,PHP,邮件
From: https://www.cnblogs.com/myhomepages/p/16614214.html

相关文章

  • php判断多维数组中是否含有某个值
    在php开发中,我们有时候需要检查PHP多维数组中是否存在某一值Value。在本教程中,我们将演示并描述了如何检查多维数组中是否存在某一值的几种方法。我们将使用以下2种方法来......
  • PHP 多文件上传功能实例讲解
    PHP文件上传功能是非常普片的需求,而在网站开发过程中,我们可以需要同时上传多个文件,这个时候就需要开发出php多文件上传的功能。在本教程中,我将向您展示如何使用PHP实现多个......
  • PHP数组输出为xml的两种常见方法
    很多时候,我们需要将数据以XML格式存储到数据库或文件中,以备后用。为了满足此需求,我们将需要将数据转换为XML并保存XML文件。在本教程中,我们将讨论如何使用PHP将数组转化为x......
  • PHP判断远程文件是否存在的四种方法
    PHPfile_exists()函数用于检查服务器上是否存在一个文件或目录。但是,如果要检查远程服务器上的文件是否存在,file_exists()函数将不可用。本文将介绍php中如何判断远程文......
  • Docke 搭建 apache2 + php8 + MySQL8 环境
    Docker安装执行Docker安装命令curl-fsSLhttps://get.docker.com/|sh启动Docker服务sudoservicedockerstart查看Docker是否正常工作sudo......
  • JS判断是手机访问还是电脑访问,并自动跳转 可在PHP中使用 (2014-12-02 14:41:26)
    方法一、在head内调用以下代码《uaredirect.js》该文件下载地址:http://siteapp.baidu.com/static/webappservice/uaredirect.js百度网盘下载地址:http://pan.baidu.com/......
  • Php语法知识点小结
    参考https://www.cnblogs.com/zyf-zhaoyafei/p/4828358.html#tree19isset()、empty()与is_null的区别1、当变量未定义时,is_null()和“参数本身”是不允许作为参数判......
  • PHP认证 MP4文件 播放
    1、问题直接放在WEB目录下,文件不安全,没有认证可以直接访问;PHP认证通过后返回WEB目录下的真实文件地址,不安全,访问一次后后续可以直接访问;用PHP读MP4文件然后再输出:加载......
  • Java中FeignClient发送请求时参数的传递
    首先说说FeignClient发送请求时如何传递header中的值创建配置类在使用RequestTemplate对象之前对header里面的内容进行赋值,也就是需要传递的请求头内容,具体如下:packa......
  • RabbitMQ 入门系列:3、基础编码:官方SDK的引用、链接创建、单例改造、发送消息、接收消
    系列目录RabbitMQ入门系列:1、MQ的应用场景的选择与RabbitMQ安装。RabbitMQ入门系列:2、基础含义:链接、通道、队列、交换机。RabbitMQ入门系列:3、基础含义:持久化、......