サーバーのDNS設定の中で特に間違えやすいのはSPFレコードです。
一見正しく設定されているようでも、よーく見ると間違っていたりして
ほんの小さな間違いでもSPFレコードが正しく機能せず、
メールが受信拒否されたりします。
SPFレコードのチェックはdigコマンドで行います。
1 |
dig (ドメイン) txt |
在宅プログラマーの備忘録として2005年に始めたブログです。
サーバーのDNS設定の中で特に間違えやすいのはSPFレコードです。
一見正しく設定されているようでも、よーく見ると間違っていたりして
ほんの小さな間違いでもSPFレコードが正しく機能せず、
メールが受信拒否されたりします。
SPFレコードのチェックはdigコマンドで行います。
1 |
dig (ドメイン) txt |
メールアドレスの正規表現については時代に合わせて議論され修正されていくと思います。
下記の情報が使えるかどうかは投稿日付を確認してご判断ください。
1 2 3 4 5 6 7 8 9 10 |
function check_email($caption, $value) { if($value == '') { return null; } $preg = '/^[-+.\\w]+@[-a-z0-9]+(\\.[-a-z0-9]+)*\\.[a-z]{2,6}$/i'; if(!preg_match($preg, $value)) { return "$caption が正しいメールアドレスではありません"; } return null; } |
シンプルな日本語メール送信クラスです。サーバーの文字コードはUTF-8とした場合。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
class mailsender { private $mail_to = null; private $from = null; private $from_name = null; private $subject = '(件名なし)'; private $body = '(本文なし)'; function set_mail_to($val) { $this->mail_to = $val; } function set_from($f, $fn = null) { $this->from = $f; $this->from_name = $fn; } function set_subject($val) { $this->subject = $val; } function set_body($val) { $this->body = $val; } public function send() { global $CONST; if($this->mail_to == null) { return false; } if($this->from == null) { return false; } mb_language("japanese"); mb_internal_encoding("UTF-8"); $to = $this->mail_to; $subject = $this->subject; $body = $this->body; if($this->from_name != null) { $from_name = '=?UTF-8?B?' . base64_encode($this->from_name) . '?='; $header = "From: " . $from_name . "<" . $this->from . ">\n"; } else { $header = "From: " . $this->from . "\n"; } $ret = mb_send_mail($to,$subject,$body,$header); return $ret; } } |
ファイルをダウンロードさせる場合には
headerを記述してからファイル内容を出力します。
1 2 3 4 5 6 |
header('Last-Modified: '. gmdate('D, d M Y H:i:s') .' GMT'); header('Content-Description: File Transfer'); header('Content-Type: ' . $filetype); header('Content-Transfer-Encoding: binary'); header('Content-Disposition: attachment; filename=' . $filename); exit($filecontents); |
$filetypeは ‘text/csv’ とか ‘image/jpeg’ とか ‘image/pdf’ とか。
MySQLには自動で採番するAUTO_INCREMENTという設定があります。
基本的にはこれを使えば自動的にユニークな番号を採番してくれるのですが、
データを頻繁に削除したり、テーブルをコピーしたりしていると
AUTO_INCREMENTの値が重複したり、過去に削除したデータと同じ値になってしまったりと
いろいろと怖いリスクがあります。
そのリスクを避けるため、私はINSERT文を実行する関数の中で自前で採番するようにしています。
1 2 |
/* TABLE1.ROW_NO が採番用カラムとする */ select ifnull(max(ROW_NO), 0) + 1 as max_row_no from TABLE1. |