『壹』 如何使用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";
?>