Tag: mail

Delete all root mail from a shell prompt

Posted by – June 18, 2014

好久沒有直接登入 Linux 進行操作了....

最近要在主機上做些測試,所以又開始兼任 MIS 了,這不是我熟悉的領域。

有時候系統會提示收到郵件,通常是一些系統錯誤的通知,看完確認沒問題就可以刪了。

通知長得像這樣:

You have new mail in /var/spool/mail/root

刪除的方法很簡單,用以下兩種指令擇一即可。

cp /dev/null /var/spool/mail/root
> /var/spool/mail/root

收工。

Email Address Validation Using Regular Expression

Posted by – December 16, 2011

寫驗證規則最常碰到的就是 email 檢查,每次寫 Regular Expression 都要重新思考一下規則,覺得這樣太浪費時間了,直接寫個筆記給未來的自己複製貼上。

<?php

// 隨便寫幾個 email 來驗證規則
$mails = "someone@gmail.com, _apple@apple.com,
          ex@ex, some-body@gmail.com, NEXTstep@pchome.com.tw, test@nf.NL";
$mails = str_replace(' ', '', strtolower($mails)); // 轉成小寫並去除空白字元
$mails = explode(",",$mails); // 依逗號切斷,並存入陣列
$valid_mails = array();
foreach($mails as $mail){
    if(preg_match("/^[a-z]+[\w\d\.\-_]*@[\w\d-]+\.[\w\.]+[a-z]$/", $mail)){
        array_push($valid_mails, $mail);

        // 可以直接塞進 PHPMailer,省去 $valid_mails 變數
        $phpmailer->mail->AddBCC($mail, '');
    }
}

print_r($valid_mails);
?>

輸出結果如下,不合法的 email 被濾掉了
Array
(
    [0] => someone@gmail.com
    [1] => some-body@gmail.com
    [2] => nextstep@pchome.com.tw
    [3] => test@nf.nl
)

PHP mail function 如何避免亂碼?

Posted by – June 16, 2011

又是一個工作上碰到的問題,需要寫一個簡單的 email 發送功能。雖然是基本功能,不過常見的作法還是藉由 PHPMailer Library 來達成。不過這個案子因為寄信頻率很低,想說用 PHP 內建的 mail() 就可以處理了。但是人算不如天算,怎知 mail() 成功了,但是卻是一堆亂碼,標題、寄件人欄位都是亂碼..... 囧

經過一番 Google Search 的奮戰,找到一個很 tricky 的解決方法。將會出現亂碼的文字用以下方式處理....

"=?UTF-8?B?".base64_encode(" 會出現亂碼的文字 ")."?="

這樣用 GMAIL 收到信的時候就可以看到正常的文字了。

mail function 範例如下...

function sendMail($recipient){
    $subject = "=?UTF-8?B?".base64_encode("信件標題")."?=";
    $headers  = "MIME-Version: 1.0\r\n";
    $headers .= "Content-type: text/html; charset=UTF-8\r\n";
    $headers .= "From: "."=?UTF-8?B?".base64_encode("寄件人 ")."?=";
    $headers .= "<sender@email.com>";
    $message  = '<p><font size="3" face="新細明體">信件內文</font></p> ';

    return mail($recipient, $subject, $message, $headers);
}

順便補充一下,為了送出 html 格式的郵件,必須在 header 中指定 Content-type: text/html 才行。

PHP 有 mb_encode_mimeheader 來為雙位元文字編碼,不過以此方式編碼的信件在 Gmail 中仍顯示亂碼,所以只好用比較 tricky 的方法來處理了。