PHPmailer 邮件发送原理及实现

By | 03月09日
Advertisement

一 邮件发送原理

(1)组成部分

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

PHPmailer 邮件发送原理及实现

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 = "[email protected]";//306800278收件人地址(必须真实)
$mail->IsSMTP(); // 使用SMTP方式发送
$mail->CharSet ="UTF-8";//设置编码,否则发送中文乱码
$mail->Host = "smtp.qq.com"; // 您的企业邮局域名
$mail->SMTPAuth = true; // 启用SMTP验证功能
$mail->Username = "[email protected]"; // 发件人邮箱(必须真实)
$mail->Password = "*****"; // 发件人密码(必须真实)
$mail->From = "[email protected]"; //邮件发送者email地址(必须真实)
$mail->FromName = "yz";// 发件人姓名
$mail->AddAddress($address, "[email protected]");//收件人收件人地址,可以替换成任何想要接收邮件的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!恭喜,邮件发送成功!";
}

?>

Similar Posts:

  • phpMailer邮件发送

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-

  • Email邮件头(邮件发送原理、INTERNET邮件头)揭密

  • 利用PHPMailer 来完成PHP的邮件发送

    1.首先是下载PHPMailer http://code.google.com/a/apache-extras.org/p/phpmailer/ 2.解压 从中取出class.phpmailer.php 和class.smtp.php 放到你的项目的文件夹,因为我们等下会引用到它们. 3.创建发送邮件的函数,其中你需要配置smtp服务器 function postmail($to,$subject = '',$body = ''){ //Author:Jiucool WebSite: http:

  • PHPMailer实现PHP邮件发送

    1.首先是下载PHPMailer http://code.google.com/a/apache-extras.org/p/phpmailer/ 2.解压 从中取出class.phpmailer.php 和 class.smtp.php 放到你的项目的文件夹,因为我们等下会引用到它们. 3.创建发送邮件的函数,其中你需要配置smtp服务器 function postmail($to,$subject = '',$body = ''){ //Author:Jiucool WebSite: http

  • Spring 邮件发送 (异步 + 同步)

    感谢 :http://r164.blog.163.com/blog/static/19749695201043084930451/ 之前在项目中做个发送邮件的,由于附件很大的时候,发送的很慢,但用过该异步的发送后,发现 用户体验确实不错了. 利用Spring框架封装的JavaMail现实同步或异步邮件发送 网络收藏 2010-05-30 08:49:30 阅读60 评论0 字号:大中小 订阅 转载自 http://howsun.blog.sohu.com/129043957.html 作者:张纪

  • PHPMAIL发送邮件,并返回邮件发送情况

    <? //以下是实例: $mail = new phpmailer(); //建立邮件发送类 $address ='[email protected]'; $mail->IsSMTP(); // 使用SMTP方式发送 $mail->Host = "smtp.163.com"; // 您的企业邮局域名 $mail->SMTPAuth = false; // 启用SMTP验证功能 $mail->Username = ""; // 邮局用户名(

  • linux下用C编写的基于smtp的带附件邮件发送程序

    今天做了一个简单的stmp邮件发送的客户端demo,可以支持带附件发送,希望将实现分享一下, 目前测试环境是公司的内部邮箱, 有gmail邮箱测试没有成功, 可能gmail邮箱需要ssl加密,后续再进行完善吧, 这个demo实现的非常简单的阻塞的发送发送邮件, 在后续的工作中需要 改成非阻塞的方式, 原理就是这样的. 你可以在网上stmp的原理,网上资料很多,在这里就不罗嗦了,本人水平有限, 如有问题,大家可以相互交流,共同 进步. 下面是源码: #include <stdio.h> #inc

  • 使用C#编写邮件发送工具

    前两天有个朋友让我帮他找个邮件群发工具,自己感觉找起来麻烦,就动手帮他写了一个.该工具使C#编写,与数据库相结合实现群发功能. 界面的设计很简单,只需在WinForm上拖几个TextBox控件和一个RichTextBox控件,让用户填写邮件的标题和内容,再添加一个按钮双击后添加如下代码: MailMessage message = new MailMessage(); message.Subject = this.textBoxSubject.Text.Trim(); message.From

  • .Net(C#)最简单的邮件发送案例

    一.序言 刚开始接触邮件发送功能的时候,在网上找的资料都挺复杂的!对于新手入门有点难(至少对于本人来说,第一次接触的时候确实不容易).这里就写一段简单的邮箱发送代码,备忘,也给新手一个参考(相关类的字段/属性/方法请参考msdn)! 二.源码(引入命名空间System.Net,System.Net.Mail) class Program { static void Main(string[] args) { // host:邮件服务器,port:端口 SmtpClient smtpClient

  • Sql server 2008数据库邮件发送问题解决日志

    SQL2005 之后添加了数据库邮件功能,使用起来还是很方便地. 1.打开SQL Server 2005 外围应用配置器,选择"功能的外围应用配置器",选择"数据库邮件",勾选"启用数据库邮件存储过程",点"确定"退出.使用下面这两行命令也可以完成.sql mail服务默认是关闭的. sp_configure 'show advanced options', 1 go Reconfigure; go sp_configure

Tags: