BLOG ENTRY

mail関数でメール送信[PHP]

php

mail関数でメール送信。。。

これいっつも微妙に忘れてしまうので、だったら書いとけってことで。

。。。。

<?php
$tomail = '送信先メールアドレス';
$fromMail = '送信元メールアドレス';
$subject = "メール件名";
$from   = "From: 送信者名<{$fromMail}>\r\nContent-Type:text/plain;charset=iso-2022-jp\r\n";
$content = <<<TEXT
メール中身
TEXT;
$header = "Return-Path: {$fromMail}";
mb_language('Japanese');
mail($tomail, mb_encode_mimeheader($subject), mb_convert_encoding($content, "JIS", "EUC-JP"), $from, $header);

第5引数を”-f {$fromMail}”と書いてもReturn-Path:とenvelope-fromを設定してくれます。

こんな感じで関数にしてみたりする

//メール送信する関数
function _send_mail($params = array()) {
    mb_language('ja');
    mb_internal_encoding('EUC-JP');

    $encoded_subject = _mb_mime_encode(mb_convert_encoding($params['subject'], 'JIS', 'EUC-JP'), 'ISO-2022-JP');
    $encoded_body = mb_convert_encoding($params['body'], 'JIS', 'EUC-JP');

    $from    = "From:送信者名<{$params['from_mail']}>\r\nContent-Type:text/plain;charset=ISO-2022-JP\r\n";
    $header  = "-f {$params['from_mail']}";

    mail($params['tomail'], $encoded_subject, $encoded_body, $from, $header);
}

// 長いメール件名の文字化けを解消する
// @return メール件名
// 参考 http://jp.php.net/manual/ja/function.mb-encode-mimeheader.php#58515
function _mb_mime_encode($string, $encoding, $linefeed="\r\n ") {
    $pos = 0;
    // after 36 single bytes characters if then comes MB, it is broken
    // but I trimmed it down to 24, to stay 100% < 76 chars per line
    $split = 24;
    while ($pos < mb_strlen($string, $encoding)) {
        $output = mb_strimwidth($string, $pos, $split, "", $encoding);
        $pos += mb_strlen($output, $encoding);
        $_string_encoded = "=?".$encoding."?B?".base64_encode($output)."?=";
        if($_string)
            $_string .= $linefeed;
        $_string .= $_string_encoded;
    }
    $string = $_string;
    return $string;
}

関連記事

  1. 何日後、何ヵ月後、何年後、何日前、何ヶ月前、何年前の日付を算出する[PHP]
  2. ページの短縮URLを貼り付けたTwitter投稿をしてもらう
  3. $_SERVER['PATH_INFO']でやる擬似rewrite[PHP]
  4. CakePHP1.2でMySQLレプリケーション[CakePHP]
  5. PHP5でxml_parse_into_struct()でXMLをパースできない

WRITE COMMENT


(required)


(required)


(required)

MENU