‘壹’ 如何使用php通过SMTP发送电子邮件
使用PHP类可以实现,例如:phpmailer,下面是示例代码
require("class.phpmailer.php");//这个是一个smtp的php文档,网上可以下载得到
$mail=newPHPMailer();//建立邮件发送类
$mail->CharSet="UTF-8";
$address="[email protected]";
$mail->IsSMTP();//使用SMTP方式发送
$mail->Host="smtp.126.com";//您的企业邮局域名
$mail->SMTPAuth=true;//启用SMTP验证功能
$mail->Username="[email protected]";//邮局用户名(请填写完整的email地址)
$mail->Password="123444";//邮局密码
$mail->Port=25;
$mail->From="[email protected]";//邮件发送者email地址
$mail->FromName="在线Q聊";
$mail->AddAddress("$address","a");//收件人地址,可以替换成任何想要接收邮件的email信箱,格式是AddAddress("收件人email","收件人姓名")
//$mail->AddReplyTo("","");
//$mail->AddAttachment("/var/tmp/file.tar.gz");//添加附件
$mail->IsHTML(true);//setemailformattoHTML//是否使用HTML格式
$mail->Subject="在线Q聊";//邮件标题
$mail->Body="在线Q聊网站欢迎访问";//邮件内容,上面设置HTML,则可以是HTML
if(!$mail->Send())
{
echo"邮件发送失败.<p>";
echo"错误原因:".$mail->ErrorInfo;
exit;
}
参见:http://www.uedsc.com/phpmailer-demo.html
‘贰’ php如何接收发件箱邮件
php接收邮件举例:
<?php
$server = "{bjmail.*.com/pop3}"; //邮件服务器
$mailbox = "inbox"; //收件箱
$mailaccount="zhao**";//用户名
$mailpasswd=" "; //密码
$stream = @imap_open($server.$mailbox,$mailaccount,$mailpasswd);//打开IMAP 连结
$mail_number = imap_num_msg($stream);//信件的个数
if($mail_number < 1) { echo "No Message for $email"; }//如果信件数为0,显示信息
for($i=$mail_number;$i>=$mail_number;$i--)
{
$headers = @imap_header($stream, $i);
$mail_header= imap_headerinfo($stream, $i);//邮件头部
//var_mp ($mail_header);
$subject = $mail_header->subject;//邮件标题
$subject=decode_mime($subject);
echo $subject;
//编码为简体中文的标题的处理方法
// if(stristr($subject, "=?gb2312"))
// { //编码为简体中文的标题
// $subject=substr($subject,11);
// $subject=substr($subject,0,-2);
// $subject = base64_decode($subject);
// }
echo $from = $mail_header->fromaddress;//发件人
echo $date = $mail_header->date;//日期
$body = imap_fetchbody($stream, $i, 1);
$body = imap_base64($body);
$body = nl2br($body);
echo $body;
// $body = imap_qprint($body);
// echo $body;
// $body = imap_binary($body);
// $body = imap_base64($body);
//echo $body;
}
//对mime解码
function decode_mime($string)
{
$pos = strpos($string,'=?');
if (!is_int($pos)) {
return $string;
}
$preceding = substr($string, 0, $pos); // save any preceding text
$search = substr($string, $pos+2); /* the mime header spec says this is the longest a single encoded Word can be */
$d1 = strpos($search, '?');
if (!is_int($d1)) {
return $string;
}
$charset = substr($string, $pos+2, $d1); //取出字符集的定义部分
$search = substr($search, $d1+1); //字符集定义以后的部分=>$search;
$d2 = strpos($search, '?');
if (!is_int($d2)) {
return $string;
}
$encoding = substr($search, 0, $d2); ////两个?之间的部分编码方式:q或b
$search = substr($search, $d2+1);
$end = strpos($search, '?='); //$d2+1 与 $end 之间是编码了的内容:=> $endcoded_text;
if (!is_int($end)) {
return $string;
}
$encoded_text = substr($search, 0, $end);
$rest = substr($string, (strlen($preceding . $charset . $encoding . $encoded_text)+6)); //+6 是前面去掉的=????=六个字符
switch ($encoding) {
case 'Q':
case 'q':
//$encoded_text = str_replace('_', '%20', $encoded_text);
//$encoded_text = str_replace('=', '%', $encoded_text);
//$decoded = urldecode($encoded_text);
$decoded=quoted_printable_decode($encoded_text);
if (strtolower($charset) == 'windows-1251') {
$decoded = convert_cyr_string($decoded, 'w', 'k');
}
break;
case 'B':
case 'b':
$decoded = base64_decode($encoded_text);
if (strtolower($charset) == 'windows-1251') {
$decoded = convert_cyr_string($decoded, 'w', 'k');
}
break;
default:
$decoded = '=?' . $charset . '?' . $encoding . '?' . $encoded_text . '?=';
break;
}
return $preceding . $decoded .decode_mime($rest);
//return $preceding . $decoded . $this->decode_mime($rest);
}
‘叁’ 跪求懂php邮件接收的大神给指点一下怎样实现邮件的接收功能
可以采用 phpmailer类,来做邮件发送,这也是很多PHP程序所采用的一个类发
<?php
require(ROOT.'/class/phpMailer.class.php');//邮件发送类
/**
*发送邮件
*@paramstring$to接收人邮件地址
*@paramstring$title邮件标题
*@paramstring$contents邮件内容支持HTML格式
*@paramstring$type判断是否要加附件
*@paramstring$accessory附件的名字
*@return成功返回true,失败返回错误信息
*/
functionsendEmail($to,$title,$contents,$type='',$accessory=''){
$mail=newPhpMailer(true);
$mail->IsSMTP();
$mail->CharSet="UTF-8";//编码
$mail->Debugoutput='html';//支持HTML格式
$mail->Host=T_SMTP_SERVER;//HOST地址
$mail->Port=25;//端口
$mail->SMTPAuth=true;
$mail->Username=T_SMTP_LOGIN;//用户名
$mail->Password=T_SMTP_PASSWORD;//密码
$mail->SetFrom(T_SMTP_FROM,T_SMTP_FROM_NAME);//发件人地址,发件人名称
$mail->AddAddress($to);//收信人地址
//$mail->Subject="=?utf-8?B?".base64_encode()."?=";
if(!empty($type)){
$mail->AddAttachment($type,$accessory);//添加附件,并指定名称
}
$mail->Subject=$title;//邮件标题
$mail->MsgHTML($contents);
if($mail->Send()){
returntrue;
}else{
return$mail->errorMessage();
}
}
?>
望采纳 Thx
‘肆’ 使用php 怎么发送邮件
你这个是连接的邮件服务器出错了。
估计你本地应该没有装邮件服务器吧,一般都会用第三方的邮件服务器,如smtp.163.com,
去下载个phpmailer,从里面把class.phpmailer.php提取出来,用很好用的。
‘伍’ php怎么写邮件发送
Outlook Express 设置
(提示:如果8、9、10没有设定,会发不出邮件,只能接收)
以中文版 Outlook Express 6 为例,请按以下步骤,手动配置你的客户端:
1、打开 Outlook Express 后,单击窗口中的“工具”菜单,选择“帐户”;
2、点击“邮件”标签,点击右侧的“添加”按钮,在弹出的菜单中选择“邮件”;
3、弹出的对话框中,根据提示,输入你的“显示名”, 然后点击“下一步”;
4、输入你的电子邮件地址,点击“下一步”
5、输入你邮箱的的 POP 和 SMTP 服务器地址:(一般在你的邮箱页面或帮助中有,以下以126邮箱为例说明)
pop: pop.126.com
smtp: smtp.126.com
再点击“下一步”;
6、输入你的帐号及密码(此帐号为登录此邮箱时用的帐号,仅输入 @ 前面的部分),再点击“下一步”;
7、单击“完成”按钮保存你的设置;
8、设置 SMTP 服务器身份验证:在“邮件”标签中,双击刚才添加的帐号,弹出此帐号的属性框;
9、请点击“服务器”标签,然后在“发送邮件服务器”处,选中“我的服务器要求身份验证”选项,并点击右边“设置”标签,选中“使用与接收邮件服务器相同的设置”。
10、点击“确定”,然后“关闭”帐户框。
现在你已设置成功,点击主窗口中的“发送接收”按钮即可进行邮件收发。
(提示:如果8、9、10没有设定,会发不出邮件,只能接收)
‘陆’ php如何发邮件
<?php
require_once('/phpmailer/class.phpmailer.php');
require_once('/phpmailer/class.smtp.php');
$mail=newPHPMailer();
//$body=file_get_contents('contents.html');//读取指定html文件内容
//$mail->CharSet='utf-8';//设置字符集
$mail->SetLanguage("ch","language/");//设置语言类型和语言文件所在目录
$mail->IsSMTP();//使用SMTP方式发送
$mail->SMTPDebug=0;
$mail->SMTPAuth=true;//设置服务器是否需要SMTP身份验证
//$mail->SMTPSecure="ssl";//注意,如果smtp不支持ssl,此行注释掉
$mail->Host=$cfg_smtp_server;
$mail->Port=$cfg_smtp_port;
$mail->Username=$cfg_smtp_usermail;
$mail->Password=$cfg_smtp_password;
$mail->SetFrom($cfg_smtp_usermail,$cfg_ml->M_LoginID);//第二个参数是收到邮件后显示的发件人
$mail->AddAddress($email,'jjm');//收件人的地址和姓名
$mail->Subject=$mailtitle;//邮件主题
$mail->MsgHTML($mailbody);//邮件内容
$mail->IsHTML(true);//sendasHTML
$mail->AddReplyTo($myemail,'JJM');//收件人回复时回复给的地址和姓名
$mail->AddAttachment($xlsurl,'附件.xls');//附件的路径和附件名称
echo"邮件发送成功";
}
else
{
$array=array("a"=>"0");
echojson_encode($array);
}
?>
‘柒’ php如何发送邮件
你好,用这个邮件类,需要在调用时,填写一个smtp服务器和你的用户名密码。
<?php
set_time_limit(600);
/*
* 邮件发送类
*/
class smail {
//您的SMTP 服务器供应商,可以是域名或IP地址
var $smtp = "";
//SMTP需要要身份验证设值为 1 不需要身份验证值为 0,现在大多数的SMTP服务商都要验证,如不清楚请与你的smtp 服务商联系。
var $check = 1;
//您的email帐号名称
var $username = "";
//您的email密码
var $password = "";
//此email 必需是发信服务器上的email
var $s_from = "";
/*
* 功能:发信初始化设置
* $from 你的发信服务器上的邮箱
* $password 你的邮箱密码
* $smtp 您的SMTP 服务器供应商,可以是域名或IP地址
* $check SMTP需要要身份验证设值为 1 不需要身份验证值为 0,现在大多数的SMTP服务商都要验证
*/
function smail ( $from, $password, $smtp, $check = 1 ) {
if( preg_match("/^[^\d\-_][\w\-]*[^\-_]@[^\-][a-zA-Z\d\-]+[^\-](\.[^\-][a-zA-Z\d\-]*[^\-])*\.[a-zA-Z]{2,3}/", $from ) ) {
$this->username = substr( $from, 0, strpos( $from , "@" ) );
$this->password = $password;
$this->smtp = $smtp ? $smtp : $this->smtp;
$this->check = $check;
$this->s_from = $from;
}
}
/*
* 功能:发送邮件
* $to 目标邮箱
* $from 来源邮箱
* $subject 邮件标题
* $message 邮件内容
*/
function send ( $to, $from, $subject, $message ) {
//连接服务器
$fp = fsockopen ( $this->smtp, 25, $errno, $errstr, 60);
if (!$fp ) return "联接服务器失败".__LINE__;
set_socket_blocking($fp, true );
$lastmessage=fgets($fp,512);
if ( substr($lastmessage,0,3) != 220 ) return "错误信息1:$lastmessage".__LINE__;
//HELO
$yourname = "YOURNAME";
if($this->check == "1") $lastact="EHLO ".$yourname."\r\n";
else $lastact="HELO ".$yourname."\r\n";
fputs($fp, $lastact);
$lastmessage == fgets($fp,512);
if (substr($lastmessage,0,3) != 220 ) return "错误信息2:$lastmessage".__LINE__;
while (true) {
$lastmessage = fgets($fp,512);
if ( (substr($lastmessage,3,1) != "-") or (empty($lastmessage)) )
break;
}
//身份验证
if ($this->check=="1") {
//验证开始
$lastact="AUTH LOGIN"."\r\n";
fputs( $fp, $lastact);
$lastmessage = fgets ($fp,512);
if (substr($lastmessage,0,3) != 334) return "错误信息3:$lastmessage".__LINE__;
//用户姓名
$lastact=base64_encode($this->username)."\r\n";
fputs( $fp, $lastact);
$lastmessage = fgets ($fp,512);
if (substr($lastmessage,0,3) != 334) return "错误信息4:$lastmessage".__LINE__;
//用户密码
$lastact=base64_encode($this->password)."\r\n";
fputs( $fp, $lastact);
$lastmessage = fgets ($fp,512);
if (substr($lastmessage,0,3) != "235") return "错误信息5:$lastmessage".__LINE__;
}
//FROM:
$lastact="MAIL FROM: <". $this->s_from . ">\r\n";
fputs( $fp, $lastact);
$lastmessage = fgets ($fp,512);
if (substr($lastmessage,0,3) != 250) return "错误信息6:$lastmessage".__LINE__;
//TO:
$lastact="RCPT TO: <". $to ."> \r\n";
fputs( $fp, $lastact);
$lastmessage = fgets ($fp,512);
if (substr($lastmessage,0,3) != 250) return "错误信息7:$lastmessage".__LINE__;
//DATA
$lastact="DATA\r\n";
fputs($fp, $lastact);
$lastmessage = fgets ($fp,512);
if (substr($lastmessage,0,3) != 354) return "错误信息8:$lastmessage".__LINE__;
//处理Subject头
$head="Subject: $subject\r\n";
$message = $head."\r\n".$message;
//处理From头
$head="From: $from\r\n";
$message = $head.$message;
//处理To头
$head="To: $to\r\n";
$message = $head.$message;
//加上结束串
$message .= "\r\n.\r\n";
//发送信息
fputs($fp, $message);
$lastact="QUIT\r\n";
fputs($fp,$lastace);
fclose($fp);
return 0;
}
}
// 发送示例
// 只需要把这部分改成你的信息就行
$sm = new smail( "用户名", "密码", "发件smtp服务器" );
$end = $sm->send( "收件人", "发件人(可以伪造哦)", "标题", "内容" );
if( $end ) echo $end;
else echo "发送成功!$x";
?>