當前位置:首頁 » 編程語言 » php發送郵件smtp

php發送郵件smtp

發布時間: 2025-04-30 06:23:44

『壹』 用php發送電子郵件的方法

<?
/*
* 郵件發送類
*/
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( "用戶名@163.com", "密碼", "smtp.163.com" );
$end = $sm->send( "目標郵箱", "來源郵箱", "這是標題", "這是郵件內容" );
if( $end ) echo $end;
else echo "發送成功!";
*/
?>

『貳』 php 如何通過smtp發送圖片郵件

方法很多。
方法1:可以弄成html,找個伺服器,郵件發送時發html就是
方法2:圖做成郵件附件
方法3:type= "image/jpeg"修改郵件文件屬性發送

『叄』 學習php發送郵件的時候報錯SMTP Error: Could not authenticate.是什麼原因

可能的原因有2個
1、smtp驗證沒通過,就是smtp server 的用戶名和密碼不正確
2、Linux系統中的saslauthd服務配置出錯,文件地址:/etc/sysconfig/saslauthd
文件將裡面的內容
FLAGS= # 此處應該為空,修改前為 FLAGS="r"

『肆』 濡備綍鍦╬hpcms涓璁劇疆smtp楠岃瘉鍙戦侀偖浠

『伍』 如何使用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());
    }
    ?>

熱點內容
新浪上傳速度 發布:2025-04-30 09:00:10 瀏覽:278
android伺服器介面 發布:2025-04-30 08:56:18 瀏覽:881
商場源碼 發布:2025-04-30 08:48:10 瀏覽:995
安卓腳本製作工具 發布:2025-04-30 08:45:24 瀏覽:794
比斯巨獸伺服器為什麼經常掉線 發布:2025-04-30 08:45:22 瀏覽:881
個體年審登錄密碼是什麼 發布:2025-04-30 08:40:54 瀏覽:851
安卓轉移數據如何到鴻蒙 發布:2025-04-30 08:30:27 瀏覽:648
安卓手機如何設置翻蓋息屏 發布:2025-04-30 08:21:29 瀏覽:674
我的世界伺服器推薦主題 發布:2025-04-30 08:20:45 瀏覽:583
c語言程序100例 發布:2025-04-30 08:17:06 瀏覽:901