PHPmailer 邮件发送原理及实现

    xiaoxiao2021-03-25  151

    一 邮件发送原理

    (1)组成部分

    graph TD; 邮件-->邮件服务器; 邮件服务器-->供在网上存储邮件的空间; 邮件-->用户代理; 用户代理-->邮件服务器上读取或者发送邮件到邮件服务器上的一个软件 邮件-->邮件传送协议; 邮件传送协议-->邮件在传送过程中必须遵守的约定

    1. 发信人在用户代理上编辑邮件,并写清楚收件人的邮箱地址; 2. 用户代理根据发信人编辑的信息,生成一封符合邮件格式的邮件; 3. 用户代理把邮件发送到发信人的的邮件服务器上,邮件服务器上面有一个缓冲队列,发送到邮件服务器上面的邮件都会加入到缓冲队列中,等待邮件服务器上的SMTP客户端进行发送; 4. 发信人的邮件服务器使用SMTP协议把这封邮件发送到收件人的邮件服务器上(它会自动根据收件人的邮箱来分析出收件人的邮箱服务器); 5. 收件人的邮件服务器收到邮件后,把这封邮件放到收件人在这个服务器上的信箱中; 6. 收件人使用用户代理来收取邮件。首先用户代理使用POP3协议来连接收件人所在的邮件服务器,身份验证成功后,用户代理就可以把邮件服务器上面的收件人邮箱里面的邮件读取出来,并展示给收件人。

    (2)协议简介

    协议简介:SMTP

    SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,是一种提供可靠且有效电子邮件传输的协议。SMTP是建立在FTP文件传输服务上的一种邮件服务,主要用于传输系统之间的邮件信息并提供与来信有关的通知。(来自百度百科)

    协议简介:POP3

    POP3(Post Office Protocol 3)即邮局协议的第3个版本,它是规定个人计算机如何连接到互联网上的邮件服务器进行收发邮件的协议。它是因特网电子邮件的第一个离线协议标准,POP3协议允许用户从服务器上把邮件存储到本地主机(即自己的计算机)上,同时根据客户端的操作删除或保存在邮件服务器上的邮件,而POP3服务器则是遵循POP3协议的接收邮件服务器,用来接收电子邮件的。(来自百度百科) POP 协议支持“离线”邮件处理。其具体过程是:邮件发送到服务器上,电子邮件客户端调用邮件客户机程序以连接服务器,并下载所有未阅读的电子邮件。这种离线访问模式是一种存储转发服务,将邮件从邮件服务器端送到个人终端机器上,一般是 PC机或 MAC。一旦邮件发送到 PC 机或 MAC上,邮件服务器上的邮件将会被删除。但目前的POP3邮件服务器大都可以“只下载邮件,服务器端并不删除”,也就是改进的POP3协议。(来自百度百科)

    (3)常用的邮件服务器地址

    126邮箱

    POP3服务器:pop.126.com SMTP服务器:smtp.126.com

    163邮箱

    POP3服务器:pop.163.com SMTP服务器:smtp.163.com

    yahoo邮箱

    注意:yahoo在foxmail 4.1以上的版本设置如下:

    POP3服务器:pop.mail.yahoo.com.cn SMTP服务器:smtp.mail.yahoo.com.cn

    Sohu邮箱

    POP3服务器:pop3.sohu.com SMTP服务器:smtp.sohu.com

    QQ邮箱

    POP3服务器:pop.qq.com SMTP服务器:smtp.qq.com SMTP服务器需要身份验证

    从上面大家可以看出,一般的POP3邮件服务器地址为pop然后加上自己的域名,SMTP邮件服务器地址为smtp加上自己的域名。常用的邮件服务器地址都可以在网上找到。各大型邮箱smtp服务器及端口收集 。

    二 邮件发送代码(phpmailer)

    <?php // 必要导入 require("phpmailer/class.phpmailer.php"); require("phpmailer/class.smtp.php"); date_default_timezone_set('Asia/Shanghai');//设定时区东八区 $mail = new PHPMailer(); //建立邮件发送类 $address = "xxxx@qq.com";//306800278收件人地址(必须真实) $mail->IsSMTP(); // 使用SMTP方式发送 $mail->CharSet ="UTF-8";//设置编码,否则发送中文乱码 $mail->Host = "smtp.qq.com"; // 您的企业邮局域名 $mail->SMTPAuth = true; // 启用SMTP验证功能 $mail->Username = "yyyy@qq.com"; // 发件人邮箱(必须真实) $mail->Password = "*****"; // 发件人密码(必须真实) $mail->From = "yyyyy@qq.com"; //邮件发送者email地址(必须真实) $mail->FromName = "yz";// 发件人姓名 $mail->AddAddress($address, "222@qq.com");//收件人收件人地址,可以替换成任何想要接收邮件的email信箱,格式是AddAddress("收件人email","收件人姓名") //$mail->AddReplyTo("", ""); //$mail->AddAttachment("/var/tmp/file.tar.gz"); // 添加附件 //$mail->IsHTML(true); // set email format to HTML //是否使用HTML格式 $mail->Subject = "test"; //邮件标题 $mail->Body = "hello"; //邮件内容 $mail->AltBody = "This is the body in plain text for non-HTML mail clients"; //附加信息,可以省略 if(!$mail->Send()) { echo 'Mailer Error: ' . $mail->ErrorInfo; } else { echo "Message sent!恭喜,邮件发送成功!"; } ?>
    转载请注明原文地址: https://ju.6miu.com/read-12155.html

    最新回复(0)