`

PHP发送邮件

阅读更多

【前言】

    本文主要总结下PHP发送电子邮件相关知识点

 

【列表】

(1)mail()函数;

(2)简易E-Mail(文本email);

(3)邮件表格;

(4)发送邮件的两种方式

 

【主体】

(1)mail()函数

mail(to到,subject主题,message消息,headers抱头,parameters参数)

    to                 必需,规定接收者。

   subject         必需,规定主题。注释:该参数不能包含任何新行字符。

   message      必需,定义要发送的消息。应使用 LF (\n) 来分隔各行。

   headers        可选,规定附加的标题,比如 From、Cc 以及 Bcc,使用 CRLF (\r\n) 分隔附加的标题

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

 

(2)简易E-Mail(文本email)

   通过 PHP 发送电子邮件的最简单的方式是发送一封文本 email。

   下例,首先声明变量($to, $subject, $message, $from, $headers),然后在mail()函数中使用这些变量来发送e-mail:

<?php
$to = "someone@example.com";
$subject = "Test mail";
$message = "Hello! This is a simple email message.";
$from = "someonelse@example.com";
$headers = "From: $from";
mail($to,$subject,$message,$headers);
echo "Mail Sent.";
?>

 

(3)邮件表格

   通过 PHP,能够在自己的站点制作一个反馈表单。下例向指定的 e-mail 地址发送了一条文本消息:

<?php
if (isset($_REQUEST['email'])){
  //如果填写了“电子邮件”,请发送电子邮件
  $email = $_REQUEST['email'] ; 
  $subject = $_REQUEST['subject'] ;
  $message = $_REQUEST['message'] ;
  mail( "someone@example.com", "Subject: $subject",
  $message, "From: $email" );
  echo "Thank you for using our mail form";
  }else{
  //如果“电子邮件”没有填写,则显示表单
  echo "<form method='post' action='mailform.php'>
  Email: <input name='email' type='text' /><br />
  Subject: <input name='subject' type='text' /><br />
  Message:<br />
  <textarea name='message' rows='15' cols='40'>
  </textarea><br />
  <input type='submit' value="提交"/>
  </form>";
  }
?>

   案例解释:

   首先,检查是否填写了邮件输入框

   如果未填写(比如在页面被首次访问时),输出 HTML 表单;如果已填写(在表单被填写后),从表单发送邮件。当点击提交按钮后,重新载入页面,显示邮件发送成功的消息

 

 (4)发送邮件的两种方式

      (一)使用PHP内置的mail()函数

      (二)使用封装SMTP协议的邮件类

接下来分开介绍下

 (一)使用PHP内置的mail()函数

    ①初始代码

<?php
$to = "test@163.com"; //收件人
$subject = "Test"; //主题
$message = "This is a test mail!"; //正文
$from = "someonelse@example.com";//附加标题
$headers = "From: $from";//额外参数
mail($to,$subject,$message,$headers);
?>
   这时会直接报错
Warning: mail(): Failed to connect to mailserver at "localhost" port 25, verify your 
"SMTP" and "smtp_port" setting in php.ini or use ini_set() 
   翻译后了解到,本地还需要有SMTP,关于SMTP我在后面文章作介绍

    ②修改后代码

<?php
$to = "test@163.com"; //收件人
$subject = "Test"; //主题
$message = "This is a test mail!"; //正文
$from = "someonelse@example.com";//附加标题
$headers = "From: $from";//额外参数
ini_set('SMTP','smtp.163.com');//发件SMTP
ini_set('smtp_port',25);//发件SMTP端口 
ini_set('sendmail_from',"admin@163.com");//发件人邮箱
mail($to,$subject,$message,$headers);
?>

    运行后发现仍然报错

Warning: mail(): SMTP server response: 553 authentication is required,163 smtp12,
EMCowAAnjdrpf6daSTLfEA--.12614S2 1520926697 
   分析原因:需要验证信息,怎么写验证信息呢?在哪里配置呢?带着这些疑问参考一些文章后得出结论,使用mail()函数发送邮件就必须要有一台无需SMTP验证就可以发信的服务器。但现在的SMTP基本上都是需要验证的,所以要想使用它发邮件就只能自己在本地搭一个不需要验证的SMTP。   
   搭建方法:用windows自带的IIS就可以,或者从网上下载其他的SMTP软件。

   结论:使用mail()函数发送邮件,就必须要有一台不需要验证的SMTP。这样的话配置工作会多一点,但是使用的时候就比较省事了,几行代码就可以。   

 

 (二)使用封装SMTP协议的邮件

      这种方法就比较常见了,尤其对于广大自己没有服务器,从网上购买虚拟主机的同学,第一种方法不现实,所以还是自己使用SMTP协议来发送邮件吧。

      不过要完成这项工作的话,就需要你对SMTP协议有一定的了解,喜欢事必躬亲的同学可以自己动手写一个,喜欢拿来主义的同学就可以从网上下载了,有很多。

      不过我比较推荐使用PEAR扩展中的Mail类,功能强大:可以支持纯文本、HTML格式的邮件;各字段都可设置编码,正确配置不会出现中文乱码情况;可以支持附件等等。

      在服务器可以使用pear install Mail 命令快速安装,没有足够服务器权限的同学也可以直接下载类的PHP源码包含进来就可以了。

注意:Mail类依赖  Net/SMTP.php  和 Mail/mime.php ,要一块下载,使用时一块包含进来。

      下面我举例说明一下在Mail类发送邮件的方法吧,网上其他SMTP邮件类使用方法一块也类似:

<?php 
// Pear Mail 扩展 
require_once('Mail.php'); 
require_once('Mail/mime.php'); 
require_once('Net/SMTP.php'); 

$smtpinfo = array(); 
$smtpinfo["host"] = "smtp.163.com";//服务器名字 
$smtpinfo["port"] = "25"; //端口 
$smtpinfo["username"] = "username@163.com"; //发件人邮箱 
$smtpinfo["password"] = "password";//发件人邮箱密码 
$smtpinfo["timeout"] = 10;//网络超时时间,秒 
$smtpinfo["auth"] = true;//登录验证 
//$smtpinfo["debug"] = true;//调试模式 

// 收件人列表 
$mailAddr = array('receiver@163.com'); 
// 发件人显示信息 
$from = "Name <username@163.com>"; 
// 收件人显示信息 
$to = implode(',',$mailAddr); 
// 邮件标题 
$subject = "这是一封测试邮件"; 
// 邮件正文 
$content = "<h3>随便写点什么</h3>"; 
// 邮件正文类型,格式和编码 
$contentType = "text/html; charset=utf-8";
//换行符号 Linux: \n Windows: \r\n 
$crlf = "\n"; 
$mime = new Mail_mime($crlf); 
$mime->setHTMLBody($content); 

$param['text_charset'] = 'utf-8'; 
$param['html_charset'] = 'utf-8'; 
$param['head_charset'] = 'utf-8'; 

$body = $mime->get($param); 
$headers = array(); 
$headers["From"] = $from; 
$headers["To"] = $to; 
$headers["Subject"] = $subject; 
$headers["Content-Type"] = $contentType; 
$headers = $mime->headers($headers); 
  
$smtp =& Mail::factory("smtp", $smtpinfo); 
$mail = $smtp->send($mailAddr, $headers, $body); 
$smtp->disconnect(); 
if (PEAR::isError($mail)) { 
  //发送失败 
  echo 'Email sending failed: ' . $mail->getMessage()."\n"; 
} else{ 
  //发送成功 
  echo "success!\n"; 
}

   从网上找的SMTP类都是高度封装的,所以使用起来比上面会更简单,但使用方法都是比较相似的。

   结论:这种方式发送邮件无需装任何软件,只需要包含进来一个PHP类,然后多写几行配置代码,就可以了。并且网上有很多示例的代码,很多时候只要复制过来然后修改个别的几个参数就可以用了,所以会很方便,推荐使用此方法。

   

 

 

 

 

参考网址:https://www.2cto.com/kf/201601/484719.html

 

 

 

 

 

 

 

.

分享到:
评论

相关推荐

    php发送邮件,php发送邮件插件

    标题"php发送邮件,php发送邮件插件"指的是使用PHPMailer这个库来实现邮件的发送功能。PHPMailer是一个强大的邮件发送库,它支持SMTP验证,可以发送HTML邮件,甚至可以添加附件,极大地增强了PHP处理邮件的能力。 ...

    用PHP发送邮件相关文件

    总的来说,"用PHP发送邮件相关文件"提供的资源可以帮助开发者理解并实现通过PHP与第三方邮件服务器的SMTP接口进行安全通信,这对于需要发送确认邮件、通知、订阅等内容的Web应用是非常关键的。通过学习和实践这个...

    php发送邮件源代码

    PHP发送邮件是Web开发中常见的需求,特别是在用户注册、忘记密码等场景中。PHPMailer是一个广泛使用的PHP库,专门用于处理邮件发送。本教程将详细讲解如何使用PHPMailer_v5.1版本来发送邮件。 首先,你需要从官方...

    PHP发送邮件DEMO

    这个“PHP发送邮件DEMO”提供了一个基础的框架,帮助开发者快速理解并实现PHP邮件发送功能。下面将详细介绍PHP发送邮件的基本原理、常用方法以及如何使用这个DEMO。 首先,PHP发送邮件主要依赖于`mail()`函数。这个...

    php 发送邮件源码

    首先,PHP发送邮件主要依赖于`mail()`函数,这是一个内置函数,可以用来通过SMTP服务器发送电子邮件。但使用`mail()`函数直接发送邮件有时可能会遇到一些问题,如垃圾邮件过滤、邮件格式错误等。因此,通常我们会...

    PHP发送邮件失败解决方案,PHP发送邮件不成功解决办法

    本教程将针对"PHP发送邮件失败"这一主题,提供一系列可能的解决方案,并提供相关的源代码示例。 首先,我们需要了解PHP发送邮件的基本原理。PHP的`mail()`函数是内置的发送邮件功能,但其功能有限,通常不适用于...

    用php发送邮件,源代码

    本文将详细讲解如何使用PHP发送邮件以及相关的源代码实现。发送邮件是网站与用户交互的重要方式之一,常用于注册验证、通知服务和密码重置等场景。 PHP发送邮件主要依赖于`PHPMailer`库或内置的`mail()`函数。`...

    php发送邮件,非常简单的发送邮件

    php发送邮件,很简单的发送邮件,一看就会

    PHP 发送邮件功能代码

    ### PHP 发送邮件功能代码详解 #### 一、概述 在Web开发中,邮件功能是一项非常重要的服务。它被广泛应用于用户注册验证、密码找回、通知提醒等场景。本篇文章将详细解析如何利用PHPMailer这一强大的辅助类来实现...

    php发邮件 phpMailer

    PHPMailer是一个流行的PHP库,它允许开发者通过PHP发送电子邮件。本篇文章将深入探讨如何使用PHPMailer来发送邮件以及相关的重要知识点。 首先,我们需要了解PHPMailer的基本用法。在你的项目中引入PHPMailer_v2.3...

    php发送邮件类库

    php发送邮件类库

    php发送邮件已经封装,用法已经注明

    这里的"php发送邮件已经封装,用法已经注明"的标题和描述提示我们,有一个已经完成的PHP邮件发送类,并且在类的注释中提供了使用方法。 邮件发送在PHP中通常是通过`PHPMailer`、`SwiftMailer`或自定义类来实现的。...

    PHP 发送邮件

    PHP中利用PHPMailer配合QQ邮箱实现发邮件 优点: 可运行在任何平台之上 支持SMTP验证 发送邮时指定多个收件人,抄送地址,暗送地址和回复地址;注:添加抄送、暗送仅win平台下smtp方式支持 支持多种邮件编码包括:8...

    php发送邮件核心代码

    在PHP中发送邮件是一项常见的任务,它涉及到PHP的mail()函数和SMTP协议的理解。下面将详细解释这个核心过程,以及如何使用PHP实现邮件发送。...以上就是PHP发送邮件的核心知识点,希望对你理解PHP邮件发送有所帮助。

    PHP发送邮件Demo案例

    下面将详细解释PHP如何发送邮件,并通过提供的"PHP发送邮件Demo案例"进行深入理解。 首先,PHP发送邮件主要依赖于`PHPMailer`库或者PHP内置的`mail()`函数。`PHPMailer`是一个广泛使用的第三方库,提供了丰富的功能...

    php 发送邮件配置

    php 发送邮件的各种配置信息,首先要加载php 的mail 类,然后就是配置各种参数,端口,

    php发送邮件demo代码

    PHPMailer是一个流行的PHP库,它允许开发者通过SMTP协议发送邮件,支持SSL/TLS加密,大大简化了邮件发送的过程。这篇教程将深入探讨如何使用PHPMailer库在PHP中实现邮件发送功能。 首先,我们需要理解PHPMailer的...

    php发邮件教程

    php发邮件视频教程

    php发送邮件方式

    同时,为了提高安全性,避免邮件被标记为垃圾邮件,应遵守反垃圾邮件政策,如添加发件人地址,设置适当的邮件头,并确保内容合法。 总结来说,PHP通过`mail()`函数提供基础的邮件发送能力,而PHPMailer和...

    功能强大的PHP发邮件类.zip

    本资源“功能强大的PHP发邮件类.zip”提供了一个专门用于发送电子邮件的PHP类库,这对于开发者来说是一个非常实用的工具。下面将详细介绍这个类库的核心功能、使用方法以及相关知识点。 首先,PHP的邮件发送功能...

Global site tag (gtag.js) - Google Analytics