阿里云服務器使用SMTP發送郵件

前言

在阿里云上買了一個輕量應用服務器,之所以選擇這個是因為該類型的服務器可以在購買時配置開發環境,而且價格比較便宜。將網站在本地搭好上傳到云上時,發現原本可以運行的郵件發送功能失效了。折騰了將近一天之后,才發現問題所在,這里記錄一下。

官方教程

阿里云在幫助中提供了SMTP發郵件的示例程序,各個語言的版本都有,很全面:

image.png

其中PHP的代碼如下:

<?php
require 'email.class.php';
$mailto='***';
$mailsubject="測試郵件";
$mailbody='這里是郵件內容';
$smtpserver     = "smtpdm.aliyun.com";
$smtpserverport = 25;
$smtpusermail   = "***";
$smtpuser       = "***";
$smtppass       = "***";
$mailsubject    = "=?UTF-8?B?" . base64_encode($mailsubject) . "?=";
$mailtype       = "HTML";
$smtp           = new smtp($smtpserver, $smtpserverport, true, $smtpuser, $smtppass);
$smtp->debug    = false;
$smtp->sendmail($mailto, $smtpusermail, $mailsubject, $mailbody, $mailtype);

在使用時我將官方給出的PHP的代碼復制進去,運行時還是出錯(訪問smtp服務器超時)。后來查了各種資料才發現阿里云出于安全的考慮,將25號端口關閉了(教程給的就是25號端口)。實際中使用SSL協議,對應SMTP端口就是465,將端口改掉,同時在smtp服務器地址前加ssl://即可:

$smtpserver     = "ssl://smtpdm.aliyun.com";
$smtpserverport = 465;

實例代碼

實際中網站使用PHPMail進行郵件的發送。代碼如下:

<?php
//該文件名為 sendemailPHPMail.php
/* use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

require 'php/Exception.php';
require 'php/PHPMailer.php';
require 'php/SMTP.php'; */
include_once "class.phpmailer.php"; 
include_once "class.smtp.php"; 
//include_once "Exception.php";
//獲取一個外部文件的內容 
$mail=new PHPMailer(); 
///
$send_name=$_POST['name'];
$send_phone=$_POST['phone'];
$send_theme=$_POST['theme'];
$send_kind=$_POST['kind'];
$mailcontent = "姓名昵稱: ".$send_name."<br>電話郵箱: ".$send_phone."<br>用途: ".$send_theme."<br>風格: ".$send_kind."<br>內容: ".$_POST['content'];//郵件內容
///
//設置smtp參數 
$mail->IsSMTP(); 
$mail->SMTPAuth=true; 
$mail->SMTPKeepAlive=true; 
$mail->Host="ssl://smtp.163.com"; 
$mail->Port=465; 
//填寫你的email賬號和密碼 
$mail->Username="****@163.com"; 
$mail->Password="****";#注意這里要填寫授權碼就是我在上面網易郵箱開啟SMTP中提到的,不能填郵箱登錄的密碼哦。 
//設置發送方,最好不要偽造地址 
$mail->From="***@163.com"; 
$mail->FromName="***";//發送者用戶名 
$mail->Subject="****";//郵件標題 
$mail->AltBody=$mailcontent; //郵件內容
$mail->WordWrap=50; // set word wrap 
$mail->MsgHTML($mailcontent); 
//設置回復地址 
$mail->AddReplyTo("****@163.com","***"); 
//設置郵件接收方的郵箱和姓名 
$mail->AddAddress("***@qq.com","**");//接收者郵箱和用戶名 
//使用HTML格式發送郵件 
$mail->IsHTML(true); 
//通過Send方法發送郵件 
//根據發送結果做相應處理 
if(!$mail->Send()){ 
    //echo "Mailer Error:".$mail->ErrorInfo;
    echo "<meta charset=\"UTF-8\">";
    echo "<script language=\"JavaScript\">\r\n";
    echo " alert(\"對不起,郵件發送失敗!!請充實\");\r\n";
    echo " history.back();\r\n";
    echo "</script>";
    exit;
    exit(); 
    }else{ 
        echo "<meta charset=\"UTF-8\">";
        echo "<script language=\"JavaScript\">\r\n";
        echo " alert(\"發送成功!!\");\r\n";
        echo " history.back();\r\n";
        echo "</script>";
        exit; 
} ?>

點擊下載class.phpmailer.phpclass.smtp.php文件。(提取密碼為:x6at)
前端代碼為:

<form id="frmEmail" name="frmEmail" action="./php/sendemailPHPMail.php" method="post">
                        <div class="col-md-6 text-box">
                            <input name="name" type="text" placeholder="姓名昵稱" />
                            <input name="phone" type="text" placeholder="電話or郵箱" />
              <input name="theme" type="text" placeholder="用途" />
              <input name="kind" type="text" placeholder="風格" />
                        </div>
                        <div class="col-md-6 textarea">
                            <textarea name="content">內容</textarea>
                        </div>
                        <div class="clearfix"> </div><br />
                        <input class="btn btn-primary btn-red-lg" type="submit" onClick="toOutLook()" value="提交" />
                    </form>

后記

被官方教程給坑了一下(╯︵╰),下次要注意。這里Mark一下( ̄▽ ̄)/。

附另一種smtp郵件發送方法:php利用smtp類輕松的發送電子郵件,該方法沒有在阿里云服務器測試,不過本地測試通過(PHP高于5.3使用時會有問題)。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,646評論 6 533
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,595評論 3 418
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,560評論 0 376
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,035評論 1 314
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,814評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,224評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,301評論 3 442
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,444評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,988評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,804評論 3 355
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,998評論 1 370
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,544評論 5 360
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,237評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,665評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,927評論 1 287
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,706評論 3 393
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,993評論 2 374

推薦閱讀更多精彩內容

  • 從古代的八百里加急,到現在的電子郵件,郵件的發展見證了上下五千年的發展史,這些當然是廢話,只是要說說郵件的重要性。...
    大牧莫邪閱讀 1,573評論 0 13
  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,785評論 18 139
  • 端口:0 服務:Reserved 說明:通常用于分析操作系統。這一方法能夠工作是因為在一些系統中“0”是無效端口,...
    蕭玄辭閱讀 1,205評論 0 2
  • Django 官方文檔 發送email 官網地址:[https://docs.djangoproject.com/...
    學以致用123閱讀 2,303評論 0 2
  • 相遇是五百年的回眸, 筆墨紙硯淡彩。 草正綠, 花正艷, 美好看似凝結。 風雨無常, 任憑生。 對與錯, 無關緊要...
    木薯羹閱讀 246評論 0 1