phpmailer多邮件发送

 更新时间:2016年11月25日 17:02  点击:2040

phpmailer多邮件发送

require("class.phpmailer.php");

$mail = new PHPMailer();

$mail->From     = "list@mydomain.com";
$mail->FromName = "List manager";
$mail->Host     = "smtp1.site.com;smtp2.site.com";
$mail->Mailer   = "smtp";

@MYSQL_CONNECT("localhost","root","password");
@mysql_select_db("my_company");
$query  = "SELECT full_name, email, photo FROM employee WHERE id=$id";
$result = @MYSQL_QUERY($query);

while ($row = mysql_fetch_array ($result)) {
    // HTML body
    $body  = "Hello <font size="4">" . $row["full_name"] . "</font>, <p>";
    $body .= "<i>Your</i> personal photograph to this message.<p>";
    $body .= "Sincerely, <br>";
    $body .= "PHPMailer List manager";

    // Plain text body (for mail clients that cannot read HTML)
    $text_body  = "Hello " . $row["full_name"] . ", ";
    $text_body .= "Your personal photograph to this message. ";
    $text_body .= "Sincerely, ";
    $text_body .= "PHPMailer List manager";

    $mail->Body    = $body;
    $mail->AltBody = $text_body;
    $mail->AddAddress($row["email"], $row["full_name"]);
    $mail->AddStringAttachment($row["photo"], "YourPhoto.jpg");

    if(!$mail->Send())
        echo "There has been a mail error sending to " . $row["email"] . "<br>";

    // Clear all addresses and attachments for next loop
    $mail->ClearAddresses();
    $mail->ClearAttachments();
}
   

mail ( )函数可让您发送电子邮件直接从脚本,讲法mail(to,subject,message,headers,parameters)

定义和用法
在mail ( )函数可让您发送电子邮件直接从脚本。

此函数返回TRUE电子邮件是否已成功接受交付,否则返回FALSE 。

语法

mail(to,subject,message,headers,parameters)
to收信人
subject标题
message

内容
<?php
$txt = str_replace("n.", "n..", $txt);
?>

headers
任择。指定额外的标题一样,从,副本,并密件副本。额外的标题应该是分开的CRLF ( r n )段。注意:当发送电子邮件,它必须包含一个从头。这可以设置此参数或在php.ini文件。
parameters
任择。指定一个额外的参数邮件程序(一个界定的sendmail_path配置设置) 。 (即本可用来设置信封发件人地址邮件时使用的口邮件选项)

提示和说明
注意:请记住,仅仅因为电子邮件被接受交付,但这并不意味着电子邮件实际上是发送和接收。




范例1
发送一个简单的电子邮件:

 

$txt = "First line of textnSecond line of text";
// Use wordwrap() if lines are longer than 70 characters
$txt = wordwrap($txt,70);
// Send email
mail("somebody@example.com","My subject",$txt);
 

Mailer Error: Language string failed to load: from_failedmailangel123@163.com,

今天在写给会员定时发邮件[phpmailer]时突然出现这种问题,经过仔细发查看发现是用户名与密码不正确造成的.下面为正确实可以发送邮箱的函数.

nclude_once("../pmail/class.phpmailer.php");
smtp_mail();

function smtp_mail () {
$mail    = new PHPMailer(); 
$mail->IsSMTP();                  // send via SMTP 
$mail->Host  = "smtp.163.com";   // SMTP servers 
$mail->SMTPAuth = true;           // turn on SMTP authentication 
$mail->Username = "mailangel123";     // SMTP username     注意:普通邮件认证不需要加 @域名
$mail->Password = "*******";          // SMTP password 
$mail->From  = "mailangel123@163.com";        // 发件人邮箱
$mail->FromName =  "您好,你很久没来这里了";    // 发件人
$mail->CharSet  = "GB2312";              // 这里指定字符集!
$mail->Encoding = "base64";
$mail->AddAddress("mailangel123@163.com","test");    // 收件人邮箱和姓名
$mail->AddReplyTo("mailangel123@163.com","163.com");
$mail->IsHTML(true);    // send as HTML            
$mail->Subject  = '您好,你很久没来这里了!'; // 邮件主题
$mail->Body = "test content";// 邮件内容
$mail->AltBody ="text/html"; 
$mail->Send();
if(!$mail->Send())
{
   echo "Message could not be sent. <p>";
   echo "Mailer Error: " . $mail->ErrorInfo;
   exit;
}

echo "Message has been sent";
}

以mailangel改成你们自己的邮箱吧.


<?php 
// 请求 PHPmailer类 文件
require_once("class.phpmailer.php"
);  
//发送Email函数
function smtp_mail $sendto_email$subject$body$extra_hdrs$user_name
) { 
$mail = new PHPMailer
();  
$mail->IsSMTP();                                     
// send via SMTP  
$mail->Host "smtp.163.com";                       
// SMTP servers  
$mail->SMTPAuth true;                             
// turn on SMTP authentication  
$mail->Username "cfc4n";                          
// SMTP username     注意:普通邮件认证不需要加 @域名 
$mail->Password "123456";                         
// SMTP password  
$mail->From "cfc4n@163.com";                      
// 发件人邮箱 
$mail->FromName "中国资金管理网";                 
//   发件人 ,比如 中国资金管理网
$mail->CharSet "GB2312";                          
// 这里指定字符集! 
$mail->Encoding "base64"
;  
$mail->AddAddress($sendto_email,$user_name);        
// 收件人邮箱和姓名 
$mail->AddReplyTo("treasurer@treasurer.org.cn","中国资金管理网"
);  
//$mail->WordWrap = 50; // set word wrap  
//$mail->AddAttachment("/var/tmp/file.tar.gz");                                                    // attachment  附件1
//$mail->AddAttachment("/tmp/image.jpg", "new.jpg");                                         //附件2
$mail->IsHTML(true);                               
// send as HTML  
$mail->Subject $subject
;                        
// 邮件内容      可以直接发送html文件
$mail->Body 
= <<<EOT
<html><head> 
<meta http-equiv="Content-Language" c> 
<meta http-equiv="Content-Type" c>
<body>
{$user_name}
你好,欢迎您注册本站用户!
</body>
</html>
EOT;
$mail->AltBody ="text/html"
;  
if(
$mail->Send
())  
        {  
   
info_write("ok.txt","$user_name发送成功"
);
        }  
else { 
   
info_write("falied.txt","$user_name失败,错误信息$mail->ErrorInfo"
);
     } 

// 发送Email函数结束
// 写入发送结果函数
function info_write($filename,$info_log
)
    {
  
$info.= $info_log
;
  
$info.="\r\n"
;
  
$fp fopen ($filename,a
);
  
fwrite($fp,$info
);
  
fclose($fp
);
}
//定时跳转页面 函数  其中 1000是时间,1秒, 您可以自定义
function redirect($url
)
    {
         echo 
"<script>
    function redirect() {
     window.location.replace('$url');
    }
    window.setTimeout('redirect();', 15000);
     </script>"
;
    }
//读取文本 邮件地址  您也可以读 数据库
        
$filename "email.txt"
;
        
$fp fopen($filename,"r"
);
        
$contents fread($fp,filesize($filename
));
        
$num_email=explode("\r\n",$contents
);         
  
$len=count($num_email
);
        
fclose($fp
);
// 参数说明(发送到, 邮件主题, 邮件内容, 附加信息, 用户名)
$i $_GET['action'
];
        
$i
++;  
if (
$i<$len
)
    {
  
$rs=explode("@",$num_email[$i
]);
  
$user_name $rs['0'
];
  echo 
"正在发送第{$i}封({$num_email[$i]})邮件......"
;
        
smtp_mail($num_email[$i], 'Treasury Online周刊第十期'$body'http://www.treasurer.org.cn/'$user_name
);
        
redirect("?action=$i"
);
    }
else {
     echo 
"邮件全部发送完毕"
;
  exit;
      }
?>

  在作者所申请的几个PHP 主页空间中,能够提供mail功能的实在不多,总是调用完mail()函数之后就毫无下文了。但是电子邮件在网上生活中的作用越来越大。想一想网虫上网不收邮件能叫真正的网虫吗?邮件的作用我不想再说了,但是假如主页空间不支持mail()发送那么怎么办呢?我也想过通过socket来实现邮件发送,但无奈对用php 进行socket编程不熟悉,再加上发送邮件要用到SMTP协议,又要读不少的英文了,所以一直也没有去研究过。终于有一天我发现了一篇文章,关于用socket编程发送邮件。我如获至宝般将其拷贝下来,并且将其改造成了一个php 可用的类,供大家使用。原来的文章只是一个简单的例子,而且还有一些错误,在我经过多次的实验、改造终于将其改成了一个直接使用socket,向指定的邮箱发送邮件的类,假如大家和前面关于发送MIME的文章结合起来,就可以实现在不支持mail()函数的网站上发送邮件了。因为发送邮件的过程需要时间,可能与mail()的处理机制还不完全一样,所以速度要慢一些,但是可以解决需要发送邮件功能的燃眉之急,同时你也可以学习用php 进行socket编程。下面就将这个类的实现原理介绍给大家,同时向大家讲解一些关于SMTP的基本知识。
Socket编程介绍

  向大家申明,本人不是一个TCP/IP编程专家,故在此只是讲出了我的一点理解和体会。

  使用fsockopen函数打开一个Internet连接,函数语法格式:

int fsockopen(string hostname, int port, int [errno], string [errstr], int [timeout]);

  参数的意思我想不用讲了,这里由于要使用SMTP协议,所以端口号为25。在打开连接成功后,会返回一
个socket句柄,使用它就可以象使用文件句柄一样的。可使用的操作有fputs(),fgets(),feof(),fclose()
等。

  很简单地介绍就到这里吧。
SMTP的基础

  基于TCP/IP的因特网协议一般的命令格式都是通过请求/ 应答方式实现的,采用的都是文本信息,所以处理起来要轻易一些。SMTP是简单邮件传输协议的简称,它可以实现客户端向服务器发送邮件的功能。所以下面所讲的命令是指客户端向服务器发出请求指令,而响应则是指服务器返回给客户端的信息。

  SMTP分为命令头和信息体两部分。命令头主要完成客户端与服务器的连接,验证等。整个过程由多条命令组成。每个命令发到服务器后,由服务器给出响应信息,一般为3 位数字的响应码和响应文本。不同的服务器返回的响应码是遵守协议的,但是响应正文本则不必。每个命令及响应的最后都有一个回车符,这样使用fputs()和fgets()就可以进行命令与响应的处理了。SMTP的命令及响应信息都是单行的。信息体则是邮件的正文部分,最后的结束行应以单独的"."作为结束行。

  客户端一些常用的SMTP指令为:
HELO hostname: 与服务器打招呼并告知客户端使用的机器名字,可以随便填写
MAIL FROM: sender_id : 告诉服务器发信人的地址
RCPT TO: receiver_id : 告诉服务器收信人的地址
DATA : 下面开始传输信件内容,且最后要以只含有.的非凡行结束
RESET: 取消刚才的指令,从新开始
VERIFY userid: 校验帐号是否存在(此指令为可选指令,服务器可能不支持)
QUIT : 退出连接,结束

  服务器返回的响应信息为(格式为:响应码 空格 解释):
220 服务就绪(在socket连接成功时,会返回此信息)
221 正在处理
250 请求邮件动作正确,完成(HELO,MAIL FROM,RCPT TO,QUIT指令执行成功会返回此信息)
354 开始发送数据,结束以 .(DATA指令执行成功会返回此信息,客户端应发送信息)
500 语法错误,命令不能识别
550 命令不能执行,邮箱无效
552 中断处理:用户超出文件空间

  下面给出一个简单的命令头(这是在打开socket之后做的),是我向stmp.263.net发邮件的测试结果:
HELO limodou
250 smtp.263.net
MAIL FROM: chatme@263.net
250 Ok
RCPT TO: chatme@263.net
250 Ok
DATA
354 End data with .
To: chatme@263.net
From: chatme@263.net
Subject: test
From: chatme@263.net
test
.
QUIT
250 Ok: queued as C46411C5097E0

  这就是一些SMTP的简单知识。相关内容可以查阅RFC。

RFC 821定义了收/发电子邮件的相关指令。
RFC 822则制定了邮件

[!--infotagslink--]

相关文章

  • NodeJS实现阿里大鱼短信通知发送

    本文给大家介绍的是nodejs实现使用阿里大鱼短信API发送消息的方法和代码,有需要的小伙伴可以参考下。...2016-01-20
  • PHP测试成功的邮件发送案例

    mail()函数的作用:连接到邮件服务器,利用smtp协议,与该服务器交互并投邮件。注意:1、mail函数不支持esmtp协议,---即,只能直投,不能登陆2、由上条,我们只能直投至最终的收件服务器地址.而该地址,又是在PHP.ini中指定的,所...2015-10-30
  • php邮件发送的两种方式

    这篇文章研究的主要内容就是使用PHP来发送电子邮件,总结为以下两种方法:一、使用PHP内置的mail()函数<&#63;php $to = "test@163.com"; //收件人 $subject = "Test"; //主题 $message = "This is a test mail!"; //正文...2015-10-30
  • c# 实现发送邮件的功能

    这篇文章主要介绍了c# 如何实现发送邮件的功能,文中示例代码非常详细,帮助大家更好的理解和学习,感兴趣的朋友可以了解下...2020-07-07
  • php邮件发送的两种方式

    这篇文章研究的主要内容就是使用PHP来发送电子邮件,总结为以下两种方法:一、使用PHP内置的mail()函数<&#63;php $to = "test@163.com"; //收件人 $subject = "Test"; //主题 $message = "This is a test mail!"; //正文...2015-10-30
  • python实现企业微信定时发送文本消息的实例代码

    这篇文章主要介绍了python实现企业微信定时发送文本消息的实例代码,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-11-25
  • PHP测试成功的邮件发送案例

    mail()函数的作用:连接到邮件服务器,利用smtp协议,与该服务器交互并投邮件。注意:1、mail函数不支持esmtp协议,---即,只能直投,不能登陆2、由上条,我们只能直投至最终的收件服务器地址.而该地址,又是在PHP.ini中指定的,所...2015-10-30
  • phpMailer 发送邮件

    //原创:www.111cn.net 注明:转载说明来处www.111cn.net // 昨天听一网友说用php 里面的mail发邮件发不出去,我想一般都是发不了的,现在大多数据邮件提供商都不准那样了...2016-11-25
  • php中利用curl smtp发送邮件实例

    本文章来介绍人一下关于与我们不同的发送邮件的方法我们来利用php curl stmp来实现邮件的发送程序。 $ telnet 邮箱SMTP服务地址 25 Trying 邮箱服务IP地址......2016-11-25
  • Python基于httpx模块实现发送请求

    这篇文章主要介绍了Python基于httpx模块实现发送请求,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-07-08
  • node.js 基于 STMP 协议和 EWS 协议发送邮件

    这篇文章主要介绍了node.js 基于 STMP 协议和 EWS 协议发送邮件的示例,帮助大家更好的理解和使用node.js,感兴趣的朋友可以了解下...2021-02-15
  • php定时发送邮件

    <?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
  • php天翼开放平台短信发送接口实现

    临时性需求,研究了一下天翼开发平台的东西,用来发送验证码还是不错的,但是每日限额不多,所以很鸡肋,但是保证100%到达 买的话还是蛮贵的,代码没有做任何优化处理,只是测试是...2016-11-25
  • C#实现异步发送邮件的方法

    这篇文章主要介绍了C#实现异步发送邮件的方法,涉及C#异步操作与邮件发送的技巧,非常具有实用价值,需要的朋友可以参考下...2020-06-25
  • jQuery实现订单提交页发送短信功能前端处理方法

    这篇文章主要介绍了jQuery实现订单提交页发送短信功能前端处理方法,涉及jQuery响应鼠标事件及针对页面元素的样式与字符串正则操作相关技巧,需要的朋友可以参考下...2016-07-06
  • Qt实现UDP多线程数据处理及发送的简单实例

    本文主要介绍了Qt实现UDP多线程数据处理及发送的简单实例,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-10-21
  • phpmailer发送邮件 SMTP Error: Could not authenticate 错误

    今天在使用phpmailer发送邮件时居然提示SMTP Error: Could not authenticate,这个感觉是smtp设置的问题,下面我在网上找到了几种解决办法。 今天在使用phpmailer发...2016-11-25
  • phpmailer 发送邮件实例代码

    header("Content-type:text/html;charset=utf-8"); include('phpmailer/class.phpmailer.php'); include('phpmailer/class.smtp.php'); $mail = new PHPMailer();...2016-11-25
  • C++实现含附件的邮件发送功能

    这篇文章主要为大家详细介绍了C++实现含附件的邮件发送功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-04-25