使用PHPMailer发送邮件实例代码总结
PHPMailer是别人封装好的一个发送邮件的库,用起来很方便。其支持mail、sendmail和smtp的方式可以到https://code.google.com/a/apache-extras.org/p/phpmailer/downloads/list去下载最新版本的。下面通过gmail smtp发送邮件为例来说明smtp使用方法。
代码如下 | 复制代码 |
$mail = new PHPMailer(); if(!$mail->Send()) { |
上面是核心代码,下面我们综合一下实例。
按如下示例编写代码即可实现php在线发送邮件.
一:前台表单
代码如下 | 复制代码 |
<html> |
二:后台PHP程序
代码如下 | 复制代码 |
$mail->From = "user@xxxx.com"; //邮件发送者email地址 //$mail->AddAttachment("/var/tmp/file.tar.gz"); // 添加附件 $mail->Subject = "PHPMailer测试邮件"; //邮件标题 if(!$mail->Send()) echo "邮件发送成功"; |
我的PHPMailer发送邮件代码
代码如下 | 复制代码 |
header("Content-type:text/html;charset=utf-8"); $mail = new PHPMailer(); |
在使用PHPMailer发送邮件报错Msg:stream_socket_enable_crypto(): this stream does not support SSL/crypto,
出现这种情况请输出phpinfo()看下openssl这个扩展没有安装。
查找php安装时源码包的位置以/usr/local/src/php/php-5.3为例子
代码如下 | 复制代码 |
cd /usr/local/src/php/php-5.3/ext/openssl /usr/local/php/bin/phpize |
可能会出现下面的错误
代码如下 | 复制代码 |
Cannot find config.m4. Make sure that you run ‘/usr/local/php/bin/phpize’ in the top level source directory of the module |
解决办法:
代码如下 | 复制代码 |
mv config0.m4 config.m4 Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/ |
/usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/ 改目录下回生成一个openssl.so文件,找到php的配
置文件,在扩展区域添加
代码如下 | 复制代码 |
extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/openssl.so |
如果你配置了还不能发送邮箱我们可以尝试在linux中直接使用mail函数直接发送邮件哦。
本文章来给各位同学详细介绍关于利用php中mail函数发送带有附件的邮件,有需要了解学习的朋友不防进入参考。mail函数,发送邮件
语法: mail(to,subject,message,headers,parameters)
to 规定邮件的接收者
subject 规定邮件的主题。该参数不能包含任何换行字符
message 规定要发送的消息
headers 规定额外的报头,比如 From, Cc 以及 Bcc
parameters 规定 sendmail 程序的额外参数。
碰到的主要问题是乱码问题,刚开始是某些客户端接收邮件时好(比如QQ邮箱,估计带自动那个识别编码)的有些不foxmail、ipad显示乱码,解决方式正确的设置这个mail的headers就行了,下面是我使用的完美的无乱码的例子。
在PHP中配置php.ini文件过程分为两个步骤:
1.先找到你放置所有PHP,Apache,MySQL文件的地方,在PHP文件夹里你可以发现有一个文件:php.ini,打开后,找到mail function地方,将原来的配置代码改为如下(仅对windows系统):
[mail function]
; For Win32 only.
SMTP =smtp.sohu.com
mtp_port=25
; For Win32 only.
sendmail_from = 填上你的电子邮件全称。
此处为以sohu的邮件服务器设置,如果你用163的邮箱,则设置为:smtp.163.com
2.在C盘搜索php.ini,选择不是快捷方式的那一个php.ini,应该在C/WINDOWS里面的,打开它,如上面一样修改它,保存。
设置完后,记得重启Apache服务器,然后mail()函数就可以用了。
例
代码如下 | 复制代码 |
<?php $headers .= "Content-type:text/html; charset=utf-8"; mail($to,$subject,$message,$headers); |
上面函数不可以带附件了,下面我们升级一下
代码如下 | 复制代码 |
<?php class Mail { private $filename; private $boundary; private $eol; //每行末尾所加的换行符类型
public function setFromaddr($fromaddr) { public function getTopic() {
public function getContent() {
public function setToaddr($toaddr) {
public function getDomain() { public function setDomain($domain) {
$this->boundary= '--'.substr(md5(time().rand(1000,2000)),0,16); } private function getUniq_id(){ $this->uniqid= md5(microtime().time().rand(1,100)); } private function outputCommonHeader(){ private function mime_content_type ( $f )
return 1;
if(mail($this->toaddr,$this->topic,$this->msg,$this->header)){ return 1; /* $this->attachmentToBase64($this->attach); if(mail($this->toaddr,$this->topic,$this->msg,$this->header)){ return 1; } return 1; public function send(){ if(empty($this->attach)&&empty($this->cc)){ }else if(empty($this->attach)){ }else if(empty($this->cc)){ }else if(!empty($this->toaddr)&&!empty($this->topic)&&!empty($this->cc)&&!empty($this->content)&&!empty($this->attach)){ |
示例代码,有些变量需要上下文环境:
代码如下 | 复制代码 |
$m = new Mail(); |
优点:使用方便就一个简单的函数
缺点:需要php.ini支持该函数,如果某些服务器不支持而又不能改环境那就不行了而且总是不稳定,发的有时能收到有时不能
phpmailer发送邮件功能很强大,今天真正的体验一下,简单说一下配置,本人是在thinkphp中是用的
配置步骤:
1.后台配置发送邮件类,位置admin/common/common.php
中
代码如下 | 复制代码 |
function sendmail($tomail,$title,$content) /*邮件设置信息*/ Vendor('phpmailer.class#phpmailer'); $mail->CharSet ="UTF-8";//设定邮件编码 } |
2:配置文件中配置参数:
代码如下 | 复制代码 |
/*邮件设置*/ |
3.测试发送代码:
代码如下 | 复制代码 |
sendmail(’11234@126.com‘,‘您好’,‘我是内容’); |
主要的改进如下:
1、新增了listMessages方法,用于列表邮件列表,且带有分页功能,更加方便调用
/**
* listMessages - 获取邮件列表
* @param $page - 第几页
* @param $per_page - 每页显示多少封邮件
* @param $sort - 邮件排序,如:array('by' => 'date', 'direction' => 'desc')
* */
function listMessages($page = 1, $per_page = 25, $sort = null){}
2、新增了两个编码转换的方法,主要用于对邮件的相关信息进行编码转换。
调用方法如下:
代码如下 | 复制代码 |
include("receivemail.class.php"); 运行结果大致如下: Array [total] => 47
|
receivemail.class.php类文件
代码如下 | 复制代码 |
<?php $mail_header=imap_header($this->marubox,$mid); $headers=imap_headers($this->marubox); function GetAttach($mid,$path) // Get Atteced File from Mail $struckture = imap_fetchstructure($this->marubox,$mid); imap_close($this->marubox,CL_EXPUNGE); |
面是一个php邮件发送的类的一个函数。
代码如下 | 复制代码 |
function sendmail($to, $from, $subject = "", $body = "", $mailtype, $cc = "", $bcc = "", $additional_headers = "") if($mailtype=="HTML"){ $header .= "To: ".$to."rn"; if ($cc != "") { $header .= "From: 报名邮件.<".$from.">rn"; $header .= "Message-ID: <".date("YmdHis", $sec).".".($msec*1000000).".".$mail_from.">rn"; $TO = explode(",", $this->strip_comment($to)); if ($cc != "") { if ($bcc != "") { $sent = TRUE; foreach ($TO as $rcpt_to) { if (!$this->smtp_sockopen($rcpt_to)) { if ($this->smtp_send($this->host_name, $mail_from, $rcpt_to, $utfheader, $body)) { fclose($this->sock); $this->log_write("Disconnected from remote hostn"); |
我们如何调用这个类呢?
再看示例
代码如下 | 复制代码 |
include("sendmail.php");//发送邮件类 $smtpemailto = "dianzhong@126.com";//发送给谁 $utfmailbody = iconv("UTF-8","GB2312",$mailbody);//转换邮件编码 |
在这里需要一个smtp服务器。我们可以注册一个126的邮箱。 在上面的代码中,修改成你自己注册的邮箱地址和用户名、密码即可。
相关文章
- 本文给大家介绍的是nodejs实现使用阿里大鱼短信API发送消息的方法和代码,有需要的小伙伴可以参考下。...2016-01-20
- mail()函数的作用:连接到邮件服务器,利用smtp协议,与该服务器交互并投邮件。注意:1、mail函数不支持esmtp协议,---即,只能直投,不能登陆2、由上条,我们只能直投至最终的收件服务器地址.而该地址,又是在PHP.ini中指定的,所...2015-10-30
- 这篇文章研究的主要内容就是使用PHP来发送电子邮件,总结为以下两种方法:一、使用PHP内置的mail()函数<?php $to = "test@163.com"; //收件人 $subject = "Test"; //主题 $message = "This is a test mail!"; //正文...2015-10-30
- 这篇文章主要介绍了c# 如何实现发送邮件的功能,文中示例代码非常详细,帮助大家更好的理解和学习,感兴趣的朋友可以了解下...2020-07-07
- 这篇文章研究的主要内容就是使用PHP来发送电子邮件,总结为以下两种方法:一、使用PHP内置的mail()函数<?php $to = "test@163.com"; //收件人 $subject = "Test"; //主题 $message = "This is a test mail!"; //正文...2015-10-30
- 这篇文章主要介绍了python实现企业微信定时发送文本消息的实例代码,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-11-25
- 这篇文章主要介绍了c#使用netmail方式发送邮件的示例,大家参考使用吧...2020-06-25
- mail()函数的作用:连接到邮件服务器,利用smtp协议,与该服务器交互并投邮件。注意:1、mail函数不支持esmtp协议,---即,只能直投,不能登陆2、由上条,我们只能直投至最终的收件服务器地址.而该地址,又是在PHP.ini中指定的,所...2015-10-30
- PHPMailer在SAE上无法发送邮件怎么回事呢,我们以前在php5.2.7版本中使用了PHPMailer是可以发,但移到sae中发现无法发邮件了,那么此问题如何解决 在SAE上直接用5.2.7...2016-11-25
- 本文我们整理了三个android后台发送邮件的方法及示例,第一个是不借助Intent在android后台发送Email,第二个是用在收集应用的异常信息,第三个是分享一个android后台发送邮...2016-09-20
- 这篇文章主要介绍了Perl中使用MIME::Lite发送邮件实例,本文介绍了使用sendmail方式发送、发送HTML格式邮件、smtp方式发送邮件等内容,需要的朋友可以参考下...2020-06-29
网上找到的两个PHP发送邮件的例子,很不错,贴出来给初学者参考吧(不知道是否有兄弟曾贴过),呵呵(2
Advanced Example Here we will show the full capabilities of the PHP mail function. PHP Code: <?php echo "<html><body>"; $recipient = "Kris Arndt <karn@nu...2016-11-25- 学过asp的朋友可能知道jmail组件是使用在asp中一个常用的邮箱发送功能,在php中如果想调用jmail功能我们需要使用com组件来操作。 我们先来介绍格式 代码如...2016-11-25
- //原创:www.111cn.net 注明:转载说明来处www.111cn.net // 昨天听一网友说用php 里面的mail发邮件发不出去,我想一般都是发不了的,现在大多数据邮件提供商都不准那样了...2016-11-25
- 这篇文章主要介绍了C#编程实现发送邮件的方法,具备添加附件的功能,涉及C#文件传输及邮件发送的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25
- 本文章来介绍人一下关于与我们不同的发送邮件的方法我们来利用php curl stmp来实现邮件的发送程序。 $ telnet 邮箱SMTP服务地址 25 Trying 邮箱服务IP地址......2016-11-25
- 这篇文章主要介绍了Python基于httpx模块实现发送请求,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-07-08
node.js 基于 STMP 协议和 EWS 协议发送邮件
这篇文章主要介绍了node.js 基于 STMP 协议和 EWS 协议发送邮件的示例,帮助大家更好的理解和使用node.js,感兴趣的朋友可以了解下...2021-02-15- <?php // 请求 PHPmailer类 文件 require_once("class.phpmailer.php"); //发送Email函数 function smtp_mail ( $sendto_email, $subject, $body, $extra_hd...2016-11-25
解决PHPMailer错误SMTP Error: Could not connect to SMTP host的办法
PHPMailer发邮件时提示SMTP Error: Could not connect to SMTP host错误是smtp服务器的问题我们一起来看看关于SMTP Error: Could not connect to SMTP host问题的解...2016-11-25