php郵件格式
A. 如何使用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());
}
?>B. php調用jmail組建發郵件,代碼貼不出來,
<?
class Jmail
{
public $Username; //郵局用戶名
public $Password; //密碼
public $FormName ; //發件人姓名
public $From ; //發件人地址
public $Addrecipient ; //收件人地址
public $Ttile ; //郵件標題
public $Content; //郵件內容
public $Smtp; //郵件伺服器
function Send(){
$Jmail = new com("Jmail.Message"); //實例化一個Jmail對象
$Jmail->SiLent=true; //設置成True的話Jmail不會提示錯誤只會返回True和False
$Jmail->LogGing = false; //是否開啟日誌
$Jmail->CharSet = "GB2312"; //設定字元串編碼
$Jmail->ContentType = "Text/html"; //郵件的格式為HTML格式
$Jmail->MailServerUsername = $this->Username; //發信箱用戶名
$Jmail->MailServerPassword = $this->Password; //發信箱密碼
$Jmail->FromName = $this->FromName; //發件人姓名
$Jmail->From = $this->From; //發件人地址
$Jmail->AddRecipient($this->Addrecipient); //收件人地址
$Jmail->Subject = $this->Title;//Email標題
$Jmail->Body = $this->Content; //Email正文
$JmailError = $Jmail->Send($this->Smtp); //Smtp伺服器
if($JmailError){ //判斷郵件是否發送成功
return true;
}else{
return false;
}
}
}
//這里是調用代碼
$jmail = new Jmail();
$jmail->Username = "lwf0757";
$jmail->Password = "0757";
$jmail->FromName = "梁";
$jmail->From = "[email protected]";
$jmail->Addrecipient = "[email protected]";
$jmail->Title = "這是標題";
$jmail->Content = "這是內容";
$jmail->Smtp = "smtp.163.com";
if($jmail->Send()){
echo "成功哦!";
}else{
echo "失敗哦!";
}
?>C. php 如何通過smtp發送圖片郵件
方法很多。
方法1:可以弄成html,找個伺服器,郵件發送時發html就是
方法2:圖做成郵件附件
方法3:type= "image/jpeg"修改郵件文件屬性發送D. PHP到底怎麼發送郵件啊,PHP高手請指教!
很懷疑樓上的是不是都是抄的。宴鏈
以下是我幫別人寫的一段發送找回密碼的代碼,在windows,apache2,php5下正常運行,也沒有亂碼現象
需要windows的STMP支持,
STMP可以在控制面板的 添加/刪除軟體 裡面安裝
$to = $info['txtEmail'];
$subject = "找回密碼";
$subject = "=?UTF-8?B?".base64_encode('找回密碼')."?=";
$message = $txtUnionID.',你好:
請點擊下面鏈接找回密碼:
<a href="http://'.$_SERVER['SERVER_NAME']" target="_blank">
http://'.$_SERVER['SERVER_NAME'].'/union/index.php?m=forgetPassword&id='.$md5.'</a>
(如果鏈接無法點擊,
請將它拷貝到瀏覽器的地址欄中。)
有效時間為三天
此郵件為系統自動發送慶祥跡,請勿回復'.
$_SERVER['SERVER_NAME'].
date('Y年m月d日');
$from = "[email protected]";
//$headers = "From: $from";
$headers = 'MIME-Version: 1.0' . "譽並\r\n";
$headers .= "From: $from"."\r\n"."Reply-to:$from"."\r\n"."X-Mailer: PHP".phpversion()."\r\n";
$headers .= "Content-type: text/html; charset=utf-8\r\n";
$headers .= "Content-Transfer-Encoding: 8bit\r\n";
mail($to,$subject,$message,$headers);E. 如何在 BlueHost 空間中用 PHP 以 SMTP 方式發送郵件
你可以用 mail,sendmail 和 smtp 三種方式來藉助 Mail 類發送郵件。話說幾天前剛買了個 BlueHost 的空間,在上面跑程序的時候用 PHP 發郵件搞出點心得來,放在這里跟大家分享。 首先我在系統中添加了一個郵件賬戶 test,密碼 123456,然後寫下了如下代碼: require_once( 'Mail.php'); $conf = array( 'host' => 'mail.yourdomail.com', 'auth' => true, 'username' => 'test', 'password' => '123456' ); $headers['From'] = '[email protected]'; $headers['To'] = $To; $headers['Subject'] = '=?GB2312?B?' . base64_encode( $Subject) . '?='; $headers['Content-Type'] = 'text/plain; charset=gb2312'; $Mail = & Mail::factory( 'smtp', $conf); $res = $Mail->send( $To, $headers, $Content); ?> $To 是想要發送到的信箱地址,比如 [email protected],$Subject 是郵件主題,$Content 是 GB2312 編碼的郵件正文。結果用以上程序屢試屢敗,後來經過多次試驗才得出在 BlueHost 主機上用 PHP 以 SMTP 方式發送郵件的正確方法,注意事項如下: 1) BlueHost 幫助信息中說跟你賬戶(域名)相對應的 SMTP 主機地址是 mail.yourdomain.com,但其實應該是 localhost。你用 mail.yourdomain.com 只會得到 SMTP 拒絕鏈接的錯誤信息。 2) SMTP 伺服器需要驗證才能發郵件。 3) SMTP 驗證時用戶名需要寫 user+yourdomain.com,不能寫 [email protected]。想想這個也好理解,在虛擬主機上一個 SMTP server 要支撐很多個賬戶,這種寫法應該是為了區別發件的賬戶。 4) 郵件頭中的發件郵件賬戶一定要是存在於系統中的真實賬戶,象我上面那樣注冊了一個 [email protected],但是發件人賬戶又寫 [email protected] 是不行的,只會得到這樣的錯誤信息: SMTP: Invalid response code received from server (code: 550, response: Verification failed for No Such User Here Sender verify failed) 知道了上面這 4 個注意事項以後就好辦了,刪掉剛才注冊的 test 郵件帳號,注冊一個 noreply 帳號,修改程序如下: require_once( 'Mail.php'); $conf = array( 'host' => 'localhost', 'auth' => true, 'username' => 'noreply+yourdomain.com', 'password' => '123456' ); $headers['From'] = '[email protected]'; $headers['To'] = $To; $headers['Subject'] = '=?GB2312?B?' . base64_encode( $Subject) . '?='; $headers['Content-Type'] = 'text/plain; charset=gb2312'; $Mail = & Mail::factory( 'smtp', $conf); $res = $Mail->send( $To, $headers, $Content); ?> 郵件被成功的發送出去了,而且由於郵件伺服器在美國,發送到 GMail 信箱非常之快,一般這邊一發那邊刷新一下就能看到新郵件:) 這里再說些題外話,買了 BlueHost 的空間將近一周時間了,感覺美國的虛擬主機市場確實非常成熟,功能強大。跟國內價格還行但是配置超受限的主機比起來性價比高的不得了!只要你選對了服務提供商,可以說絕對讓你滿意。但是缺點也比較明顯,就是速度實在是慢!這裡面的原因眾所周知,感謝偉大的電信運營商,感謝偉大的 GFW! 今天跟 HostMonster 的客戶溝通了一下,問問他們那邊從中國過去的訪問速度怎麼樣,估計人家遇到這樣的情況不是個別現象,上來就是一句,我們對來自中國的訪問速度無法做出承諾。 國內的虛擬主機服務商有萬網這樣把大家當 SB 漫天要價的主,但是也有兢兢業業踏踏實實做服務的公司,不過性價比跟國外的運營商確實沒法比。一邊是價格高不了多少,動輒幾十 G 空間幾百 G 月流量,支持 SSH,支持多 Addon domain 的國外主機,一邊是價廉物不太美的國內主機,我想誘惑力是不言而喻的。但是速度,唉,傷心是一種說不出的痛!