php用phpmailer發送郵件

jopen 9年前發布 | 975 次閱讀 PHP

發送郵件

     1.為了保證安全性,需要生成發送到郵件的URL,主要參數(key(key 需要在每次運行是自動生成隨機碼))   然后將URL發送到郵箱。

     2.解析url:首先根據用戶名從數據庫中查找出密鑰key和過期時間,沒有則表示該請求 是偽造的或者過期的,然后驗證簽名,驗證過期時間,都驗證通過,就可以修改密碼, 密碼修改完以后,刪除數據庫中的記錄。

  注:但我并沒有用數據庫,而是用的redis. 鏈接上只用一個唯一碼,根據唯一碼到redis中獲取用戶的guid,而且是3600秒后連接失效(redis自已處理)。

    $client = redis();      

    $client->setex($linkkey, 7200, $userInfo['guid']);

    要在服務器打開25端口,不然無法發送郵件。

 
/**

 * 發送郵件方法
 * 
 * @param string $from 來自
 * @param string $to 收件人地址
 * @param string $subject  郵件標題
 * @param string $body 郵件正文
 */
public function postmail($from,$to,$subject = '',$body = ''){
    error_reporting(E_ALL);
    date_default_timezone_set('Asia/Shanghai');//設定時區東八區
    vendor('PHPMailer.class#phpmailer');
    vendor('PHPMailer.class#smtp');
    $mail             = new \PHPMailer();      //new一個PHPMailer對象出來
    $body            = eregi_replace("[\]",'',$body); //對郵件內容進行必要的過濾
    $mail->CharSet ="UTF-8";                   //設定郵件編碼,默認ISO-8859-1,如果發中文此項必須設置,否則亂碼
    $mail->IsSMTP();                           // 設定使用SMTP服務
    $mail->Host       = 'smtp.ym.163.com';        // SMTP 服務器

// $mail->SMTPDebug = 1; // 啟用SMTP調試 1 = errors 2 = messages $mail->SMTPAuth = true; // 服務器需要驗證 $mail->Port = 25; // SMTP服務器的端口號 265/255 25

    $mail->Username   = '用戶名';   // SMTP服務器用戶名
    $mail->Password   = '密碼';           // SMTP服務器密碼
    $mail->isHTML(true);
    $mail->SetFrom('郵箱地址', $from);
    $mail->Subject    = $subject;
    $mail->MsgHTML($body);
    $address = $to;
    $mail->AddAddress($address, '');        

// $mail->AddEmbeddedImage("Public/bee/common/images/logo3.jpg", "logoimg","logo.jpg"); //設置郵件中的圖片 // $mail->AddAttachment("Public/bee/common/images/logo3.jpg"); // attachment 附件 if(!$mail->Send()) { echo 'Mailer Error: ' . $mail->ErrorInfo; } else { echo "Message sent!恭喜,郵件發送成功!"; } }</pre>

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!