使用php發郵件二(發郵件流程)

2021-08-21 04:48:07 字數 2332 閱讀 4975

傳送郵件過程:

1、配置好你的郵箱服務(qq郵箱為例)

2、使用socket連線,建立乙個套接字$fp=fsockopen($hostname,$port,$errno,$errmsg,30)

3、向對方郵件伺服器發出的標識自己的身份的命令fputs($fp,"ehlo ki\r\n");

4、即將進行身份認證fputs($fp,"auth login\r\n")

5、傳送使用者名稱fputs($fp, base64_encode($sendmail_from)."\r\n");

6、傳送密碼fputs($fp, base64_encode($sendmail_psw)."\r\n");

7、告訴對方本次郵件的傳送人是誰

fputs($fp,"mail from: <".preg_replace("/.*\<(.+?)\>.*/","\\1",$mail_from).">\r\n");

8、傳送給誰fputs($fp, "rcpt to: <".preg_replace("/.*\<(.+?)\>.*/", "\\1", $touser).">\r\n");

9、告訴對方本次郵件,接下來我們傳送郵件具體內容了fputs($fp, "data\r\n");

10、傳送內容包括頭部和body

11、郵件內容輸入完畢,執行指令退出fputs($fp, "quit\r\n");

**:

<?php function dmail($mail_to,$mail_subject,$mail_body,$mail_from='',$mail_sign=true) stream_set_blocking($fp,true); $re =fgets($fp,512); if(substr($re,0,3) !='220') //向對方郵件伺服器發出的標識自己的身份的命令 fputs($fp,"ehlo ki\r\n"); $re = fgets($fp,512); if(substr($re,0,3)!=220&&substr($re,0,3) !=250) while(1) if(1) fputs($fp, base64_encode($sendmail_from)."\r\n"); //使用者名稱使用base64編碼才行 $re = fgets($fp, 512);//334 if(substr($re, 0, 3) != 334)  fputs($fp, base64_encode($sendmail_psw)."\r\n"); //密碼使用base64編碼才行 $re = fgets($fp, 512);//235 authentication successful if(substr($re, 0, 3) != 235)  $mail_from = $sendmail_from; } fputs($fp,"mail from: <".preg_replace("/.*\<(.+?)\>.*/","\\1",$mail_from).">\r\n"); //告訴對方本次郵件傳送人是誰 $re = fgets($fp,512); if(substr($re, 0, 3) != 250)  } foreach(explode(',',$mail_to) as $touser) } } fputs($fp, "data\r\n"); //告訴對方本次郵件,接下來我們傳送郵件具體內容了 $re = fgets($fp, 512); if(substr($re, 0, 3) != 354)  //內容 list($msec, $sec) = explode(' ', microtime()); $headers .= "message-id: <".date('ymdhis', $sec).".".($msec*1000000).".".substr($mail_from, strpos($mail_from,'@')).">".$mail_dlmt; fputs($fp, "date: ".date('r')."\r\n"); fputs($fp, "to: ".$mail_to."\r\n"); fputs($fp, "subject: ".$mail_subject."\r\n"); fputs($fp, $headers."\r\n"); fputs($fp, "\r\n\r\n"); fputs($fp, "$mail_body\r\n.\r\n"); $re = fgets($fp, 512);//250 ok: queued as if(substr($re, 0, 3) != 250)  fputs($fp, "quit\r\n"); //221 bye郵件內容輸入完畢後,執行該指令退出 return 'success'; } dmail("接受者的郵箱@qq.com","主題","內容");

參考鏈結

python 發郵件 python發郵件

python提供smtplib模組,該模組定義了乙個smtp客戶端會話物件,可用於使用smtp或esmtp偵聽器守護程式向任何網際網路機器傳送郵件。這是乙個簡單的語法,用來建立乙個smtp物件,稍後將演示如何用它來傳送電子郵件 import smtplib smtpobj smtplib.smtp ...

使用php發郵件三(郵件找回密碼)

11 組裝郵件並傳送郵件 12 傳送完畢,跳轉 接收到郵件點解郵件後 1 通過auth查詢user 2 判斷驗證鏈結時間是否過期 通過儲存的authtime與當前時間比較 3 將修改表set authvalue auth authtime 0 password authvalue 4 列印修改資訊 ...

使用nodemailer發郵件

最近在學node,就想著node能不能像後台那樣傳送郵件,結果找到了nodemailer這個發郵件的外掛程式,下列 使用qq郵箱發郵件 use strict const nodemailer require nodemailer let transporter nodemailer.createtr...