phpmailsmtp
1. php 邮件系统 Smtp 设置
server:smtp.qq.com//发件服务器对不对你先按着注释试一把。
form:[email protected]//发件人
address://不填写
smtp_name:[email protected]//发件服务器账号与发件人保持一致
smtp_pass:****//发件服务器登录密码
smtp_ssl:465//端口
2. 请问一下,PHP配置SMTP怎么弄
PHPMailer的获取:
PHPMailer项目地址:PHPMailer 使用git命令克隆到本地,或直接在该项目页面的右下方点击“ Download ZIP ”即可获取到完整的PHPMailer代码包,再到本地解压即可。
步骤一:使我们的QQ邮箱能够发送邮件
这里怎么说能够发送邮件呢?其实我们的邮箱都是可以发送邮件的,但是要实现在我们的网站中发送邮件,那就要设置一下我们的QQ邮箱了,因为此时我们的网站现在是作为一个第三方客户端存在的。
步骤一:使我们的QQ邮箱能够发送邮件
这里怎么说能够发送邮件呢?其实我们的邮箱都是可以发送邮件的,但是要实现在我们的网站中发送邮件,那就要设置一下我们的QQ邮箱了,因为此时我们的网站现在是作为一个第三方客户端存在的
由于待会我们用到的是SMTP服务器来发送,在这里建议把前面的两项开启了!当你点击开启的时候,它会提示:
<?phprequire_once("./functions.php");$flag=sendMail('[email protected]','lsgo在线通知','恭喜你成功加入LSGO实验室,开启你的学习之旅吧!');if($flag){echo"发送邮件成功!";
}else{echo"发送邮件失败!";
}?>
3. 要使用SMTP或PHP mail函数发送邮件需满足什么条件(服务器发不了邮件..囧rz)
关于查看端口状态:
你应该可以得到服务器的IP地址吧,得不到也没关系,应该有域名才对。
然后使用你的本机telnet你的服务器25端口,看是否有数据返回
具体做法是运行->CMD->输入命令telnet xxx.com 25
如果你使用的是win7系统,没有安装telnet系统功能的话,可以到以下位置打开:
控制面板->程序和功能->(左侧列表最下方)打开或关闭windows功能->Telenet客户端->打勾后确定
待安装好后,重启cmd,重新尝试第一个操作
如果迟迟保持在“正在连接....”状态好一会,而后出现“无法打开到主机的连接。在端口 25:连接失败,那证明服务器没有开通25口,如果你用的是VPS,端口好像可以自行配置,毕竟是linux系统,我不太会配置,你自行找相关的方法,如果是虚拟服务器,那就不行了,不过你可以再弄个企业邮局,或者使用申请的其它邮箱,比如网易的、新浪的、gmail的等等,依然可以使用邮件功能,但就不能使用PHP内置的mail函数了。
具体使用远程SMTP服务器来发送邮件的方法,你可以参考我以前回答的问题,你也可以使用现有的许多mail类库实现
我以前回答过的问题:http://..com/question/478821120.html?oldq=1
另外,使用telnet功能不顺手,可以网络一款专业端口刺探软件:superscan
4. PHP如何通过SMTP验证发送邮件
PHP mail()与SMTP验证
缺乏灵活性是PHP的mail()函数显得过于简单的部分原因。最重要而且令人沮丧的是,死板的mail()函数通常还不允许你使用你选择的SMTP服务器,并且它也根本不支持如今已被众多邮件服务器采用的SMTP验证。
幸运的是,克服PHP本身的缺陷既不困难,也不麻烦,更不痛苦。对于大多数情况下的邮件应用,免费的PEAR Mail包足够提供全部的所需功能与灵活性,并且它也能够与你期望的外部邮件服务器进行验证。在提高安全性的方面,它也支持SSL连接。
通过SMTP验证在PHP脚本中发送邮件
在PHP脚本中通过SMTP验证连接外部SMTP服务器并且发送邮件的方法如下:
确保PEAR Mail包已经安装。
通常,它已经安装到了PHP之中,尤其在PHP 4及以后的版本中。放手一试吧。
<?php
require_once"Mail.php";
$from="SandraSender<s>";
$to="RamonaRecipient<r>";
$subject="Hi!";
$body="Hi, Howareyou?";
$host="mail.example.com";
$username="smtp_username";
$password="smtp_password";
$headers=array('From'=>$from,
'To'=>$to,
'Subject'=>$subject);
$smtp=Mail::factory('smtp',
array('host'=>$host,
'auth'=>true,
'username'=>$username,
'password'=>$password));
$mail=$smtp->send($to,$headers,$body);
if(PEAR::isError($mail)){
echo("<p>".$mail->getMessage()."</p>");
}else{
echo("<p>Messagesuccessfullysent!</p>");
}
?>
5. phpmailer的SMTP服务器账号和密码怎么设置
应该还有一个pop域名,得写你使用的邮箱域名。
username和password 就是你邮箱的用户名,和你的邮箱密码。
比如这是新浪的pop,smtp
6. 如何使用php通过smtp发送邮件步骤
由于php没有提供现成的smtp函数,却提供了一个功能不甚灵活的mail()函数,这个函数需要服务器配置上的支持,并且不支持smtp验证,在很多场合无法正常的工作,因此不建议使用。
首先是使用telnet来连接本地的25端口,稍微熟悉点网络的人都知道smtp协议使用25端口,这也就是说,现在在连接本地的smtp服务器。
<?php
require_once'Mail.php';
$conf['mail']=array(
'host'=>'xx.xx.xx.xx',//smtp服务器地址,可以用ip地址或者域名
'auth'=>true,//true表示smtp服务器需要验证,false代码不需要
'username'=>'tester',//用户名
'password'=>'retset'//密码
);
/***
*使用$headers数组,可以定义邮件头的内容,比如使用$headers['Reply-To']可以定义回复地址
*通过这种方式,可以很方便的定制待发送邮件的邮件头
***/
$headers['From']='[email protected]';//发信地址
$headers['To']='[email protected]';//收信地址
$headers['Subject']='testmailsendbyphp';//邮件标题
$mail_object=&Mail::factory('smtp',$conf['mail']);
$body=<<<MSG//邮件正文
helloworld!!!
MSG;
$mail_res=$mail_object->send($headers['To'],$headers,$body);//发送
if(Mail::isError($mail_res)){//检测错误
die($mail_res->getMessage());
}
?>7. php smtp发送邮件问题
这个吧 是你没等服务器返回写入正确之后就直接继续往socket里继续通信了
每个fwrite后和fsockopen后面加个
fgets($connect,64);
对了先把socket设置成阻塞模式(这个你可以自行搜索)
define(CRLF, '\r\n');
$errno = null;
$errstr = null;
$connect = fsockopen('smtp.qq.com',25,$errno,$errstr,30);
socket_set_blocking($connect, true);
echo fgets($connect,64);
fwrite($connect, 'HELO localhost'.CRLF);
echo fgets($connect,64);
fwrite($connect, 'AUTH LOGIN'.CRLF);
echo fgets($connect,64);
fwrite($connect, base64_encode('[email protected]').CRLF);
echo fgets($connect,64);
fwrite($connect, base64_encode('xxxx').CRLF);
echo fgets($connect,64);
fwrite($connect, 'Mail From:<[email protected]>'.CRLF);
echo fgets($connect,64);
fwrite($connect, 'Rcpt To:<[email protected]'.CRLF);
echo fgets($connect,64);
fwrite($connect, 'DATA'.CRLF.CRLF);
echo fgets($connect,64);
fwrite($connect, 'SDFSFSDFSD'.CRLF);
echo fgets($connect,64);
fwrite($connect, '.'.CRLF);
echo fgets($connect,64);
fwrite($connect, 'quit'.CRLF);
echo fgets($connect,64);
你这样试试8. PHP Mailer邮件发送失败发送失败! Mailer Error: SMTP connect() failed.
不使用SSL加密连接 //$mail->SMTPSecure = 'ssl'; 或更改一下策略,看是否被阻挡了。
126的端口号好像是 25 不是465吧?9. 如何通过php发送邮件php的mail函数不能用!
支持mail的服务器 一般都是linux的 国内的好像不多
自己的电脑安装mail服务器不能往外发的 呵呵 可以自己测试用
现在很多管理系统都是用fsocketopen方式连接邮件服务器并发送邮件的 可以使用163 126的邮箱 网上有一些模型的 就像是好多管理系统后台让填入用户名和密码 就能群发一样 如果你不介意的话 给你转发一个以前我自己改过的可以利用fsocketopen方式群发或者单发email的一共三个文件
MailClass.php 》》》》》》
<?php
class Smtp
{
var $host; //主机
var $port; //端口 一般为25
var $user; //SMTP认证的帐号
var $pass; //认证密码
var $debug = false; //是否显示和服务器会话信息?
var $conn;
var $result_str; //结果
var $in; //客户机发送的命令
var $from; //收件人收到邮件显示的源信箱
var $email; //真实的地址
var $to; //目标信箱
var $subject; //主题
var $body; //内容
var $error;
var $All;
function Smtp($array)
{
$this->host = $array['host'];
$this->port = $array['port'];
$this->email= $array['trueemail'];
$this->from = $array['from'];
$this->user = base64_encode($array['username']);
$this->pass = base64_encode($array['password']);
$this->debug = $array['debug'];
$this->socket = socket_create (AF_INET, SOCK_STREAM, SOL_TCP);
if($this->socket){
$this->result_str = "创建SOCKET:".socket_strerror(socket_last_error());
$this->debug_show($this->result_str);
}
else
die("初始化失败,请检查您的网络连接和参数");
$this->conn = socket_connect($this->socket,$this->host,$this->port);
if($this->conn){
$this->result_str = "创建SOCKET连接:".socket_strerror(socket_last_error());
$this->debug_show($this->result_str);
}
else
die("初始化失败,请检查您的网络连接和参数");
$this->result_str = "服务器应答:<font color=#cc0000>".socket_read ($this->socket, 1024)."</font>";
$this->debug_show($this->result_str);
}
function debug_show($str)
{
if($this->debug)
{
echo $str."<p>\r\n";
}
}
function setmail($to,$subject,$body){
$this->to = $to;
$this->subject = $subject;
$this->body = $body;
$All ="Content-type:text/html;charset=gb2312\r\n"; //邮件的编码方式可以根据自己的需要改
$All .= "From:".$this->from."\r\n";
$All .= "To:".$this->to."\r\n";
$All .= "Subject:".$this->subject."\r\n\r\n";
$All .= $this->body;
$this->All = $All;
}
/**
* 发送邮件部分
* 接收邮箱数组
*/
function send($toarray,$subject,$body)
{
//以下是和服务器会话
$this->in = "EHLO HELO\r\n";
$this->docommand();
$this->in = "AUTH LOGIN\r\n";
$this->docommand();
$this->in = $this->user."\r\n";
$this->docommand();
$this->in = $this->pass."\r\n";
$this->docommand();
foreach( $toarray as $to ) {
$this -> setmail($to,$subject,$body);
$this->in = "RSET\r\n";
$this->docommand();
$this->in = "MAIL FROM:<".$this->email.">\r\n";
$this->docommand();
$this->in = "RCPT TO:<".$this->to.">\r\n";
$this->docommand();
$this->in = "DATA\r\n";
$this->docommand();
$this->in = $this->All."\r\n.\r\n";
$this->docommand();
}
$this->in = "QUIT\r\n";
$this->docommand();
//结束,关闭连接
}
function docommand()
{
socket_write ($this->socket, $this->in, strlen ($this->in));
$this->debug_show("Client Action:".$this->in);
$this->result_str = "Server:<font color=#cc0000>".socket_read ($this->socket, 1024)."</font>";
$this->debug_show($this->result_str);
}
}
?>
MailConfig.inc.php 》》》》》》
<?php
$mailconfig['host'] = "smtp.126.com"; //主机
$mailconfig['port'] = "25"; //端口 一般为25
$mailconfig['trueemail'] = "[email protected]"; //真实的地址
$mailconfig['username'] = "mhz1600"; //SMTP认证的帐号
$mailconfig['password'] = "*****"; //改成自己的
$mailconfig['debug'] = false; //是否显示和服务器会话信息?
$mailconfig['from'] = "[email protected]"; //显示给用户的发件人
include_once "MailClass.php";
set_time_limit(180);
?>
SendDemo.php 》》》》》》
<?php
include_once "MailConfig.inc.php";
//简单的临时码验证 当前时间(到小时)的验证码
//if( empty($_GET['s']) || $_GET['s'] != md5(date('Y-m-d-H',time())) ) {header("http/1.1 404"); die('');}
//发送email
if( isset($_POST['sendmail']) ) {
if( isset($_POST['from']) ) $mailconfig['from'] = $_POST['from'];
$smtp = new Smtp($mailconfig);
$title = $_POST['title'];
//获取post的email正文
if( get_magic_quotes_gpc() ) $message = $_POST['message'];
else $message = addslashes($_POST['message']);
//从email列表/文档中分离出所有的email地址
$pregstr = "@[a-zA-Z0-9\_][0-9a-zA-Z\.\-\_]+\@[0-aA-Za-z\-\_]+\.[0-9a-zA-Z\.\-\_]+@is";
$temp = array();
preg_match_all($pregstr,$_POST['emails'],$temp);
$toarray = $temp[0];
//var_mp($toarray);
$smtp->send($toarray,$title,$message);
die("操作完成!<A href=".$_SERVER['PHP_SELF']."?s=".md5(date('Y-m-d-H',time())).">继续发送其他</a> <a href=# onclick=window.close()>关闭</a>");
}
else {
if( isset($_POST['emails']) ) {
if( is_array($_POST['emails']) )
$emails = implode("\t",$_POST['emails']);
else
$emails = $_POST['emails'];
}
else $emails = "";
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312"><style type="text/css">
<!--
body,td,th {
font-size: 12px;
}
-->
</style></head>
<body>
<form id="form1" name="form1" method="post" action="">
<table width="600" border="1" align="center" cellpadding="3" cellspacing="0" bordercolordark="#FFFFFF" bordercolorlight="#eeeeee">
<tr>
<td width="66">发件人:</td>
<td width="516"><input name="from" type="text" value="<?php echo $mailconfig['from']; ?>"> 可以直接修改mailconfig文件中的email</td>
</tr>
<tr>
<td>邮件标题:</td>
<td><input name="title" type="text" value="邮件群发测试标题!" size="60"></td>
</tr>
<tr>
<td>收件人:<br></td>
<td><textarea name="emails" cols="60" rows="5"><?php echo $emails; ?></textarea></td>
</tr>
<tr>
<td>邮件正文:<br>
【html】</td>
<td><textarea name="message" cols="60" rows="10">邮件群发测试!谢谢~!</textarea></td>
</tr>
<tr>
<td></td>
<td><input type="submit" name="sendmail" value=" 发送邮件 "> </td>
</tr>
</table>
</form>
<?
}
?>
</body>
</html>
使用方式 运行senddemo.php就行 确定本地或者服务器开启了fsocketopen支持 在输入框可以多种格式的的输入很多email 程序用正则表达式匹配出所有的email地址 通过服务器循环对话的方式不断的发送邮件 看看那个demo的流程就明白了
【郑重声明:mailclass修改自网上的模型 其他本人原创,版权不究 欢迎分享】
+---------------------广告-------------------------+
那一天:回忆,让生活更美好
独享人生中那个特别的日子,记录从那一天开始的幸福
http://www.nayitian.net
期待您的加入,欢迎提供宝贵的意见建议
+--------------------------------------------------+
+--------------------补充--------------------+
发送邮件的服务器(smtp)并不是网址 126发送邮件的服务器是 smtp.126.com 网易163的发送邮件服务器是 smtp.163.com 所有邮箱对于这个都有说明的 还有一个就是能够使用这个功能的好象新注册的邮箱不太好用 因为网易在2006年10对邮箱进行过调整 在此之前注册的都没问题 在这之后注册的好像开通一些其他的功能并且使用了一段时间才行的
smtp服务器的链接可以在命令提示行下测试 就是使用上面的命令:
首先 telnet smtp.126.com 25
因为smtp使用的25端口提供服务的 然后就会看到
220 126.com Anti-spam GT for Coremail System (126com[071018])
输入 EHLO HELO
服务器返回
250-mail
250-PIPELINING
250-AUTH LOGIN PLAIN
250-AUTH=LOGIN PLAIN
250 8BITMIME
输入 AUTH LOGIN
服务器返回
334 dXNlcm5hbWU6
然后再输入通过base64加密的用户名和密码 就能通过命令来和服务器对话 包括发送邮件等功能
具体的如果有兴趣更多命令自己查一下
这个php的程序就是模拟这个功能来实现的
如果你用telnet直接连不上的话 说明服务器是错误的 。。