天天看点

PHP邮件发送接收类

PHP邮件发送类

Swift Mailer 和前面介绍的PHPMailer一样,也是一个PHP邮件发送类。它不依赖于 PHP 自带的mail() 函数,因为该函数在发送多个邮件时占用的系统资源很高。Swift 直接与 SMTP 服务器通讯,具有非常高的发送速度和效率。

phpmailer邮件找回密码

1.根据邮件找回链接进入重置密码操作页面 。仅一周内、一次有效

2.重置密码 (也可以将密码发送直接登录)

生成邮件找回邮件

用linux下安装的sendmail写了一个发送email的程序

<?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;
}
           

我首先用得是gmail失败了 SMTPSecure=ssl

phpmailer发送html样式丢失的解决:

不能用带路径的样式<link href="style/style.css" target="_blank" rel="external nofollow" rel="stylesheet" type="text/css" />用<style><style>来定义的

直接在表格里面定义样式发送就正常了<td style="padding-top:20px;padding-left:12px;padding-bottom:10px;">把对应的class换成style代码

<?php
require("class.phpmailer.php");
$mail = new PHPMailer(); //建立邮件发送类
$address = "[email protected]";
$mail->IsSMTP(); // 使用SMTP方式发送
$mail->Host = "smtp.qq.com"; // 发送邮件服务器
$mail->SMTPAuth = true; // 启用SMTP验证功能
$mail->Username = "[email protected]"; // 用户名(请填写完整的email地址)
$mail->Password = "***********"; // 密码
$mail->Port = 25;
$mail->From = "[email protected]"; //邮件发送者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 "邮件发送成功";
?>
           

附件:

phpmailer 中文使用说明(简易版)

A开头:

$AltBody--属性

出自:PHPMailer::$AltBody

文件:class.phpmailer.php

说明:该属性的设置是在邮件正文不支持HTML的备用显示

AddAddress--方法

出自:PHPMailer::AddAddress(),文件:class.phpmailer.php

说明:增加收件人。参数1为收件人邮箱,参数2为收件人称呼。例 AddAddress("[email protected]","eb163"),但参数2可选,AddAddress([email protected])也是可以的。

函数原型: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://

php接收邮件类

通过POP3/IMAP/NNTP连接到邮箱,使用PHP IMAP扩展 https://github.com/dannyhu926/php-imap

// 4. argument is the directory into which attachments are to be saved:
$mailbox = new PhpImap\Mailbox('{imap.gmail.com:993/imap/ssl}INBOX', '[email protected]', '*********', __DIR__);

// Read all messaged into an array:
$mailsIds = $mailbox->searchMailbox('ALL');
if(!$mailsIds) {
	die('Mailbox is empty');
}

// Get the first message and save its attachment(s) to disk:
$mail = $mailbox->getMail($mailsIds[0]);

print_r($mail);
echo "\n\nAttachments:\n";
print_r($mail->getAttachments());