设为首页 收藏本站
查看: 499|回复: 0

[经验分享] php 发邮件(转)

[复制链接]

尚未签到

发表于 2017-3-21 12:24:15 | 显示全部楼层 |阅读模式
  phpmailer邮件找回密码
  1.根据邮件找回链接进入重置密码操作页面 。仅一周内、一次有效
  2.重置密码 (也可以将密码发送直接登录)
  生成邮件找回邮件
  用linux下安装的sendmail写了一个发送email的程序

Java代码   DSC0000.png





  • <?php  
  •   
  • $subject = " 重设密码(请勿回复此邮件)";  
  • $auth = authcode($use_id . $account . $email, 'ENCODE''safeEmail'3600 * 24 * 7);  
  •   
  • $url = "http://" . $_SERVER["HTTP_HOST"] . "/Main.php?do=userManage&method=ResetPass&u=" . $use_id . "&auth=" . $auth;  
  • $body = " 尊敬的用户: <br>  
  • 您好!<br>  
  • 根据您于 [" . date('Y-m-d H:m:s') . "] 提交的请求,本邮件将引导您重新设置 [" . $account . "] 的帐号密码。  
  • 如果您确认本次“重新设置密码”的请求是您自己提交的,<a href='" . $url . "'>请点这里完成重设操作</a>(本链接仅一周内、一次有效 )。  
  • 如果上面的链接无法点击,您也可以复制以下链接,粘贴到您浏览器的地址栏内,然后按“回车”键打开重设机密问题页面设置新的机密问题和答案:  
  • {$url}  
  • 如果您在以上时间点没有提交过“重新设置密码”的请求,则有可能是您机密问题的答案已经泄露,有恶意用户正在试图窃取您的帐号!";  
  • sendMail($subject, $body, $address);  
  •   
  • function sendMail($subject, $body, $address) {  
  •     $mail = new PHPMailer();  
  •   
  •     $mail->CharSet ='utf-8';  
  •     $mail->IsHTML(true);   // 设置邮件格式为 HTML   
  •     $mail->IsSendmail(); //使用LINUX SENDMAIL发送邮件  
  •   
  •        $mail->Host = WEB_SITE_HOST; // specify main and backup server  
  •     $mail->SMTPAuth = true;                // 设置为安全验证方式  
  •     $mail->SetLanguage('en',PATH_CLASS.'/phpmailer/language/');  
  •     $mail->From = MAIL_SENDER;  
  •     $mail->FromName = "service";  
  •     $mail->AddAddress($address);     //收件人地址  
  •     $mail->WordWrap = 50;                 // set word wrap to 50 characters              
  •         $mail->Subject = $subject;  
  •         $mail->Body = daddslashes($body, 1);  
  •       
  •     $result = $mail->Send();  
  •     if (!$result) {  
  •         echo $mail->ErrorInfo;  
  •     }  
  •     $mail->SmtpClose();   
  •   
  •     return $result;  
  • }  


  邮件链接有效性检查 

Java代码  





  • function ResetPass($mapping, $form, &$request, &$response) {  
  •     $use_id = $request->getParameter('u');  
  •   
  •     $user = $this->delegate->getUserInfo_ById($use_id);  
  •     $o_mail = $user['email'];  
  •     $o_account = $user['account'];  
  •   
  •     $auth = $request->getParameter('auth');  
  •     $auth = authcode($auth, 'DECODE''safeEmail');  
  •     $n_auth = $use_id . $o_account . $o_mail;  
  •     $a = false;  
  •     if ($n_auth == $auth) {  
  •         $a = true;  
  •     }  
  •     $form->setEditUser($user);  
  •     if ($a) { //有效  
  •         return $mapping->findForwardConfig('resetpwd');  
  •     }  
  • }  


  class.phpmailer.php line 332  递归调用,群发邮件

Java代码  





  • public function AddMutieAddress($arrAddress){  
  •     if (is_array($arrAddress)){  
  •         foreach($arrAddress as $key=>$value){  
  •             $this->AddMutieAddress($value);  
  •         }  
  •     }else{  
  •         $this->AddAddress($arrAddress);  
  •     }  
  • }  


  我首先用得是gmail失败了 SMTPSecure=ssl
  phpmailer发送html样式丢失的解决:
  不能用带路径的样式<link href="style/style.css" rel="stylesheet" type="text/css" />用<style><style>来定义的
  直接在表格里面定义样式发送就正常了<td style="padding-top:20px;padding-left:12px;padding-bottom:10px;">把对应的class换成style代码

Java代码  





  • <?php  
  • require("class.phpmailer.php");  
  • $mail = new PHPMailer(); //建立邮件发送类  
  • $address = "youbinliu@126.com";  
  • $mail->IsSMTP(); // 使用SMTP方式发送  
  • $mail->Host = "smtp.qq.com"// 发送邮件服务器  
  • $mail->SMTPAuth = true// 启用SMTP验证功能  
  • $mail->Username = "843831601@qq.com"// 用户名(请填写完整的email地址)  
  • $mail->Password = "***********"// 密码  
  • $mail->Port = 25;  
  • $mail->From = "843831601@qq.com"//邮件发送者email地址  
  • $mail->FromName = "liuyoubin";  
  • //$mail->SMTPSecure = "ssl"; // 安全协议tls  
  • $mail->AddAddress("$address""a"); //收件人地址,格式是AddAddress("收件人email","收件人姓名")  
  • //$mail->AddReplyTo("", "");  
  •   
  • //$mail->AddAttachment("/var/tmp/file.tar.gz"); // 添加附件  
  • //$mail->IsHTML(true); // set email format to HTML //是否使用HTML格式  
  •   
  • $mail->Subject = "PHPMailer测试邮件"//邮件标题  
  • $mail->Body = "Hello,这是测试邮件"//邮件内容  
  • $mail->AltBody = "This is the body in plain text for non-HTML mail clients"//附加信息,可以省略  
  •   
  • if (!$mail->Send()) {  
  •     echo "邮件发送失败. <p>";  
  •     echo "错误原因: " . $mail->ErrorInfo;  
  •     exit;  
  • }  
  •   
  • echo "邮件发送成功";  
  • ?>  


  设置字符集

   $mail->CharSet = "GB2312";   // 这里指定字符集!   
$mail->Encoding = "base64";  
  附件:
phpmailer 中文使用说明(简易版)
A开头:
$AltBody--属性
出自:PHPMailer::$AltBody
文件:class.phpmailer.php
说明:该属性的设置是在邮件正文不支持HTML的备用显示
AddAddress--方法
出自:PHPMailer::AddAddress(),文件:class.phpmailer.php
说明:增加收件人。参数1为收件人邮箱,参数2为收件人称呼。例 AddAddress("eb163@eb163.com","eb163"),但参数2可选,AddAddress(eb163@eb163.com)也是可以的。
函数原型:public function AddAddress($address, $name = '') {}
AddAttachment--方法
出自:PHPMailer::AddAttachment()
文件:class.phpmailer.php。
说明:增加附件。
参数:路径,名称,编码,类型。其中,路径为必选,其他为可选
函数原型:
AddAttachment($path, $name = '', $encoding = 'base64', $type = 'application/octet-stream'){}
AddBCC--方法
出自:PHPMailer::AddBCC()
文件:class.phpmailer.php
说明:增加一个密送。抄送和密送的区别请看[SMTP发件中的密送和抄送的区别] 。
参数1为地址,参数2为名称。注意此方法只支持在win32下使用SMTP,不支持mail函数
函数原型:public function AddBCC($address, $name = ''){}
AddCC --方法
出自:PHPMailer::AddCC()
文件:class.phpmailer.php
说明:增加一个抄送。抄送和密送的区别请看[SMTP发件中的密送和抄送的区别] 。
参数1为地址,参数2为名称注意此方法只支持在win32下使用SMTP,不支持mail函数
函数原型:public function AddCC($address, $name = '') {}
AddCustomHeader--方法
出自:PHPMailer::AddCustomHeader()
文件:class.phpmailer.php
说明:增加一个自定义的E-mail头部。
参数为头部信息
函数原型:public function AddCustomHeader($custom_header){}
AddEmbeddedImage --方法
出自:PHPMailer::AddEmbeddedImage()
文件:class.phpmailer.php
说明:增加一个嵌入式图片
参数:路径,返回句柄[,名称,编码,类型]
函数原型:public function AddEmbeddedImage($path, $cid, $name = '', $encoding = 'base64', $type = 'application/octet-stream') {}
提示:AddEmbeddedImage(PICTURE_PATH. "index_01.jpg ", "img_01 ", "index_01.jpg ");
在html中引用
AddReplyTo--方法
出自:PHPMailer:: AddReplyTo()
文件:class.phpmailer.php
说明:增加回复标签,如"Reply-to"
参数1地址,参数2名称
函数原型:public function AddReplyTo($address, $name = '') {}
AddStringAttachment-方法
出自:PHPMailer:: AddStringAttachment()
文件:class.phpmailer.php
说明:增加一个字符串或二进制附件(Adds a string or binary attachment (non-filesystem) to the list.?)
参数:字符串,文件名[,编码,类型]
函数原型:public function AddStringAttachment($string, $filename, $encoding = 'base64', $type = 'application/octet-stream') {}
Authenticate--方法
出自:SMTP::Authenticate()
文件:class.smtp.php
说明:开始SMTP认证,必须在Hello()之后调用,如果认证成功,返回true,
参数1用户名,参数2密码
函数原型:public function Authenticate($username, $password) {}
B开头
$Body--属性
出自:PHPMailer::$Body
文件: class.phpmailer.php
说明:邮件内容,HTML或Text格式
C开头
$CharSet --属性
出自:PHPMailer::$CharSet
文件:class.phpmailer.php
说明:邮件编码,默认为iso-8859-1
$ConfirmReadingTo--属性
出自:PHPMailer::$ConfirmReadingTo 文件class.phpmailer.php
说明:回执?
$ContentType--属性
出自:PHPMailer::$ContentType
文件: class.phpmailer.php
说明:文档的类型,默认为"text/plain"
$CRLF--属性
出自:PHPMailer::$ContentType
文件:class.phpmailer.php
说明:SMTP回复结束的分隔符(SMTP reply line ending?)
class.phpmailer.php--对象
出自:class.phpmailer.php
文件: class.phpmailer.php
说明:phpmailer对象
class.smtp.php--对象
出自:class.smtp.php 文件: class.smtp.php
说明:SMTP功能的对象
ClearAddresses--方法
出自:PHPMailer::ClearAddresses()
文件: class.phpmailer.php
说明:清除收件人,为下一次发件做准备。返回类型是void
ClearAllRecipients--方法
出自:PHPMailer::ClearAllRecipients()
文件: class.phpmailer.php
说明:清除所有收件人,包括CC(抄送)和BCC(密送)
ClearAttachments--方法
出自:PHPMailer::ClearAttachments()
文件: class.phpmailer.php
说明:清楚附件
ClearBCCs--方法
出自:PHPMailer::ClearBCCs() 文件 class.phpmailer.php
说明:清楚BCC (密送)
ClearCustomHeaders--方法
出自:PHPMailer::ClearCustomHeaders()
文件: class.phpmailer.php
说明:清楚自定义头部
ClearReplyTos--方法
出自:PHPMailer::ClearReplyTos()
文件: class.phpmailer.php
说明:清楚回复人
Close--方法
出自:SMTP::Close()
文件: class.smtp.php
说明:关闭一个SMTP连接
Connect--方法
出自:SMTP::Connect()
文件: class.smtp.php
说明:建立一个SMTP连接Mailer.html
$ContentType--属性
出自:PHPMailer::$ContentType
文件: class.phpmailer.php
说明:文档的类型,默认为"text/plain"
D开头
$do_debug--属性
出自:SMTP::$do_debug
文件:class.smtp.php
说明:SMTP调试输出
Data-方法
出自:SMTP::Data()
文件:class.smtp.php
说明:向服务器发送一个数据命令和消息信息(sendsthemsg_datatotheserver)
E开头
$Encoding--属性
出自:PHPMailer::$Encoding
文件:class.phpmailer.php
说明:设置邮件的编码方式,可选:"8bit","7bit","binary","base64",和"quoted-printable".
$ErrorInfo--属性
出自:PHPMailer::$ErrorInfo
文件:class.phpmailer.php
说明:返回邮件SMTP中的最后一个错误信息
Expand--方法
出自:SMTP::Expand()
文件:class.smtp.php
说 明:返回邮件列表中所有用户。成功则返回数组,否则返回 false(Expandtakesthenameandaskstheservertolistallthepeoplewhoaremembersofthe_list_.Expandwillreturnbackandarrayoftheresultorfalseifanerroroccurs.)
F开头:
$From--属性
出自:PHPMailer::$From文件class.phpmailer.php
说明:发件人E-mail地址
$FromName--属性
出自:PHPMailer::$FromName
文件:class.phpmailer.php
说明:发件人称呼
H开头:
$Helo--属性
出自:PHPMailer::$Helo
文件:class.phpmailer.php
说明:设置SMTPHelo,默认是$Hostname(SetstheSMTPHELOofthemessage(Defaultis$Hostname).)
$Host--属性
出自:PHPMailer::$Host
文件:class.phpmailer.php
说明:设置SMTP服务器,格式为:主机名[端口号],如smtp1.example.com:25和smtp2.example.com都是合法的
$Hostname--属性
出自:PHPMailer::$Hostname
文件:class.phpmailer.php
说明:设置在Message-Id和andReceivedheaders中的hostname并同时被$Helo使用。如果为空,默认为SERVER_NAME或'localhost.localdomain"
Hello--方法
出自:SMTP::Hello()
文件:class.smtp.php
说明:向SMTP服务器发送HELO命令
Help--方法
出自:SMTP::Help()
文件:class.smtp.php
说明:如果有关键词,得到关键词的帮助信息
I开头:
IsError--方法
出自:PHPMailer::IsError()
文件:class.phpmailer.php
说明:返回是否有错误发生
IsHTML--方法
出自:PHPMailer::IsHTML()
文件:class.phpmailer.php
说明:设置信件是否是HTML格式 
IsMail--方法
出自:PHPMailer::IsMail()
文件:class.phpmailer.php
说明:设置是否使用php的mail函数发件
IsQmail--方法
出自:PHPMailer::IsQmail()
文件:class.phpmailer.php
说明:设置是否使用qmailMTA来发件
IsSendmail--方法
出自:PHPMailer::IsSendmail()
文件:class.phpmailer.php
说明:是否使用$Sendmail程序来发件
IsSMTP--方法
出自:PHPMailer::IsSMTP()
文件:class.phpmailer.php
说明:是否使用SMTP来发件 
M开头:
$Mailer--属性
出自:PHPMailer::$Mailer
文件:class.phpmailer.php
说明:发件方式,("mail","sendmail",or"smtp").中的一个
Mail--方法
出自:SMTP::Mail()
文件:class.smtp.php
说明:从$from中一个邮件地址开始处理,返回true或false。如果是true,则开始发件
N开头:
Noop--方法
出自:SMTP::Noop()
文件:class.smtp.php
说明:向SMTP服务器发送一个NOOP命令
P开头:
$Password--属性
出自:PHPMailer::$Password
文件:class.phpmailer.php
说明:设置SMTP的密码
$PluginDir--属性
出自:PHPMailer::$PluginDir
文件:class.phpmailer.php
说明:设置phpmailer的插件目录,仅在smtpclass不在phpmailer目录下有效
$Port--属性
出自:PHPMailer::$Port
文件:class.phpmailer.php
说明:设置SMTP的端口号
$Priority--属性
出自:PHPMailer::$Priority
文件:class.phpmailer.php
说明:设置邮件投递优先等级。1=紧急,3=普通,5=不急
PHPMailer--对象
出自:PHPMailer
文件:class.phpmailer.php
说明:PHPMailer-PHPemailtransportclass
Q开头
Quit--方法
出自:SMTP::Quit()
文件:class.smtp.php
说明:向服务器发送Quit命令,如果没有错误发生。那么关闭sock,不然$close_on_error为true
R开头
Recipient--方法
出自:SMTP::Recipient()
文件:class.smtp.php
说明:使用To向SMTP发送RCPT命令,参数为:$to
Reset--方法
出自:SMTP::Reset()
文件:class.smtp.php
说明:发送RSET命令从而取消处理中传输。成功则返回true,否则为false
S开头:
$Sender--属性
出自:PHPMailer::$Sender
文件:class.phpmailer.php
说明:SetstheSenderemail(Return-Path)ofthemessage.Ifnotempty,willbesentvia-ftosendmailoras'MAILFROM'insmtpmode.
$Sendmail--属性
出自:PHPMailer::$Sendmail
文件:class.phpmailer.php
说明:设置发件程序的目录
$SMTPAuth--属性
出自:PHPMailer::$SMTPAuth
文件:class.phpmailer.php
说明:设置SMTP是否需要认证,使用Username和Password变量
$SMTPDebug--属性
出自:PHPMailer::$SMTPDebug
文件:class.phpmailer.php
说明:设置SMTP是否调试输出?
$SMTPKeepAlive--属性
出自:PHPMailer::$SMTPKeepAlive
文件:class.phpmailer.php
说明:在每次发件后不关闭连接。如果为true,则,必须使用SmtpClose()来关闭连接
$SMTP_PORT--属性
出自:SMTP::$SMTP_PORT
文件:class.smtp.php
说明:设置SMTP端口
$Subject--属性
出自:PHPMailer::$Subject
文件:class.phpmailer.php
说明:设置信件的主题
Send--方法
出自:SMTP::Send()
文件:class.smtp.php
说明:从指定的邮件地址开始一个邮件传输
Send--方法
出自:PHPMailer::Send()
文件:class.phpmailer.php
说明:创建邮件并制定发件程序。如果发件不成功,则返回false,请使用ErrorInfo来查看错误信息
SendAndMail--方法
出自:SMTP::SendAndMail()
文件:class.smtp.php
说明:从指定的邮件地址开始一个邮件传输
SendOrMail--方法
出自:SMTP::SendOrMail()
文件:class.smtp.php
说明:从指定的邮件地址开始一个邮件传输
SetLanguage--方法
出自:PHPMailer::SetLanguage()
文件:class.phpmailer.php
说明:设置phpmailer错误信息的语言类型,如果无法加载语言文件,则返回false,默认为english
SMTP--方法
出自:SMTP::SMTP()
文件:class.smtp.php
说明:初始化一个对象以便数据处于一个已知的状态
SMTP--对象
出自:SMTP
文件:class.smtp.php
说明:SMTP对象
SmtpClose--方法
出自:PHPMailer::SmtpClose()
文件:class.phpmailer.php
说明:如果有活动的SMTP则关闭它。
T开头
$Timeout--属性
出自:PHPMailer::$Timeout
文件:class.phpmailer.php
说明:设置SMTP服务器的超时(单位:秒)。注意:在win32下,该属性无效
Turn--方法
出自:SMTP::Turn()
文件:class.smtp.php
说明:这是一个可选的SMTP参数,目前phpmailer并不支持他,可能未来支持
U开头
$Username--属性
出自:PHPMailer::$Username
文件:class.phpmailer.php
说明:设置SMTP用户名
V开头
$Version--属性
出自:PHPMailer::$Version
文件:class.phpmailer.php
说明:返回Phpmailer的版本
Verify--方法
出自:SMTP::Verify()
文件:class.smtp.php
说明:通过服务器检查用户名是否经过验证
W开头:
$WordWrap--属性
出自:PHPMailer::$WordWrap
文件:class.phpmailer.php
说明:设置每行最大字符数,超过改数后自动换行
  SMTPSecure
  "ssl" or "tls"  添加连接前缀ssl://

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-353053-1-1.html 上篇帖子: PHP 系统学习 下篇帖子: [推荐]PHP门户站点--PHPHub.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表