smartupload.jar php下使用SMTP發送郵件的程式碼
最近一個專案要用到SMTP發送郵件,之前的函式庫類不存在了,又不喜歡安裝pear或使用pear的net/smtp類,感覺太複雜了。就直接從discuz中抽取出核心稍微修改了一下。
從協定分析網路上,查找到SMTP協定的命令與應答,SMTP協定在發送SMTP和接收SMTP之間的會話是靠發送SMTP的SMTP指令和接收SMTP回饋的應答來完成的。常用的指令如下:
HELLO<domain><CRLF>辨識發送方到接收SMTP的一個HELLO指令
MAIL FROM:<reverse-path><CRLFLF><此指令告訴接收方一個新郵件發送的開始,並對所有的狀態和緩衝區進行初始化。此命令開始一個郵件傳輸處理,最終完成將郵件資料傳送到一個或多個郵箱中。
RCPT TO:<forward-path><CRLF><forward-path>標識各個郵件接收者的地址
DATA< ,以<CRLF>.<CRLF>標識資料的結尾。
REST<CRLF>退出/重設目前的郵件傳輸
NOOP<CRLF>要求接收SMTP只做OK應答。 (用於測試)
QUIT<CRLF>要求接收SMTP返回一個OK應答並關閉傳輸。
VRFY<string><CRLF>驗證指定的郵箱是否存在,由於安全因素,伺服器多禁止此命令。
EXPN<string><CRLF>驗證給定的郵箱列表是否存在,擴充郵箱列表,也常禁止使用。
HELP<CRLF>查詢伺服器支援什麼指令
註:<CRLF>為回車、換行,ASCII碼分別為13、10(十進位)。
另外,可以在command下,使用telnet來進行簡單的手工使用SMTP。
例如:
telnet smtp.263.net 25
Trying 211.150.96.25...
Connected to smtp.263.net. 220 Welcome to coremail System(With Anti-Spam) 2.1 for 263(040326)
HELO weiqiong@cctk.net.com
250 Ok
rcpt to:g2_t1@263.net
250 Ok
data
354 End data with
quit
221 Bye
Connection closed by foreign Bye
Connection closed by foreign Bye
Connection closed by foreign
class stmp{
private $mailcfg=array();
私人 $this->mailcfg =$mailcfg;
}
公用函數 send($mail){
ockopen($mailcfg['server'], $cfcfg['port'], $errno, $errstr, 30)) {
return $this->error("( $mail)[SM]:$mail 連接到伺服器連接埠連接埠請檢查您的「mail_config.php」。 512);
if(substr($ lastmessage, 0, 3) !='220') {
return $this->error("$mailcfg[]:$mailcfg[ }
fputs ($fp, ($mailcfg['auth'] ? 'EHLO' : 'HELO')." ".$mailcfg['auth_username']."rn");
);
if(substr($lastmessage, 0, 3) != 220 && substr($lastmes turn $this->error("($mailcfg[server ]) :$mailcfg[埠]) HELO/EHLO - $lastmessage");
}
$lastmessage, 3, 1) != '-' | empty($lastmessage)) {
break;
} $lastmessage = fgets($fp, 512);
}
($$cf. 🎜> fputs($fp, "AUTH LOGINrn");
if(substr($lastmessage, 0, 3) != 334) {
$this->error("($mailcfg[server]:$mailcfg[port]) AUTH LOGIN - $lastmessage" );
64_encode($mailcfg['auth_username']) ."rn");
$lastmessage = fgets($fp, 512);
return $this->error(" ($mailcfg[server]:$mailcfg[port]) USERNAME - $lastmessage") ;
}
fputs($fp, base64_encode($mailcfg['auth_password'])."rn");
$lastmessage = fgets($fp, 512);
if(substr($lastmessage, 0, 3) != 235) { $mailcfg[port]) PASSWORD - $lastmessage") ;
,
$email_from = $mail];
}
fputs($fp, "郵件來自: . );
$lastmessage = fgets($fp, 512);
if(substr($lastmessage, 0, 3) != 250) {
.*/ ", "\1", $email_from).">rn");
$lastmessage = fgets($fp, 512);
if(substr($lastmessage, 0, 3) != 250) { $mailcfg[port]) MAIL FROM - $lastmessage" ) ;
}
}
each(explode(',', $email_to) as $touser) {
$touser = 修剪( $touser);
if($touser) {
$lastmessage = fgets($fp, 512 );
if(substr($lastmessage, 0, 3) != 250) {
$lastmessage = fgets($fp, 5) 12 );
return $this->error("($mailcfg[server]:$mail }
}
($ fp, "DATArn");
$lastmessage = fgets($fp, 512);
返回$this-> error( "($mailcfg[伺服器]:$mailcfg[連接埠]) 資料 - $lastmessage") ;
}
$str="收件人:$email_tornFrom:$email_fromrnSubject:".$mail['subject']."rnrn".$ $fp, $str);
fputs($fp, "QUITrn");
return $this->error_msg;
}
來自私有函數 error($msg){
$ }
}
? >
簡單的呼叫範例:
$mailcfg['伺服器'] = 'smtp.163.com';
mail $mailcfg['auth'] = 1;
$mailcfg['from'] = 'test
$mailcfg['auth_password'] = '密碼';
$stmp gmail.com','subject' =>'測試標題','content'=>'郵件內容PHP物件導向');
if(!$stmp- >send($mail)){
echo $stmp->get_error();
成功! ';
}
? >
如果發送成功,你就可以去郵箱查看郵件了。 ^_^
以上就介紹了smartupload.jar php下使用SMTP發郵件的程式碼,包含了smartupload.jar方面的內容,希望對PHP教學有興趣的朋友有幫助。

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

JWT是一種基於JSON的開放標準,用於在各方之間安全地傳輸信息,主要用於身份驗證和信息交換。 1.JWT由Header、Payload和Signature三部分組成。 2.JWT的工作原理包括生成JWT、驗證JWT和解析Payload三個步驟。 3.在PHP中使用JWT進行身份驗證時,可以生成和驗證JWT,並在高級用法中包含用戶角色和權限信息。 4.常見錯誤包括簽名驗證失敗、令牌過期和Payload過大,調試技巧包括使用調試工具和日誌記錄。 5.性能優化和最佳實踐包括使用合適的簽名算法、合理設置有效期、

會話劫持可以通過以下步驟實現:1.獲取會話ID,2.使用會話ID,3.保持會話活躍。在PHP中防範會話劫持的方法包括:1.使用session_regenerate_id()函數重新生成會話ID,2.通過數據庫存儲會話數據,3.確保所有會話數據通過HTTPS傳輸。

SOLID原則在PHP開發中的應用包括:1.單一職責原則(SRP):每個類只負責一個功能。 2.開閉原則(OCP):通過擴展而非修改實現變化。 3.里氏替換原則(LSP):子類可替換基類而不影響程序正確性。 4.接口隔離原則(ISP):使用細粒度接口避免依賴不使用的方法。 5.依賴倒置原則(DIP):高低層次模塊都依賴於抽象,通過依賴注入實現。

在PHPStorm中如何進行CLI模式的調試?在使用PHPStorm進行開發時,有時我們需要在命令行界面(CLI)模式下調試PHP�...

PHP8.1中的枚舉功能通過定義命名常量增強了代碼的清晰度和類型安全性。 1)枚舉可以是整數、字符串或對象,提高了代碼可讀性和類型安全性。 2)枚舉基於類,支持面向對象特性,如遍歷和反射。 3)枚舉可用於比較和賦值,確保類型安全。 4)枚舉支持添加方法,實現複雜邏輯。 5)嚴格類型檢查和錯誤處理可避免常見錯誤。 6)枚舉減少魔法值,提升可維護性,但需注意性能優化。

如何在系統重啟後自動設置unixsocket的權限每次系統重啟後,我們都需要執行以下命令來修改unixsocket的權限:sudo...

靜態綁定(static::)在PHP中實現晚期靜態綁定(LSB),允許在靜態上下文中引用調用類而非定義類。 1)解析過程在運行時進行,2)在繼承關係中向上查找調用類,3)可能帶來性能開銷。
