PHPコーディング

SMTPソケットをオープンしてメール送信(メールDATA部)

2010年01月27日
前回に続き、今度はDATA部です。いわゆるメールのボディ部です。

ボディ部は、【DATA】コマンドから、【.】のみの行が送信されるまでとなります。


$from_name = mb_encode_mimeheader("差出人名", "EUC", "B");
$from_add = "from@domain.xxx";
$to = "sendto@yyyy.zzz";
$reply-to = "reply@domain.xxx";
$subject = mb_encode_mimeheader("smtpメール送信", "EUC", "B");
$body = "メール本文です。\n";
$body = mb_convert_encoding($body, "ISO-2022-JP", "ASCII,JIS,UTF-8,EUC-JP,SJIS");

$result = @fputs($sock, "DATA\r\n");

$data.= "From: ".$from_name."<".$from_add.">\r\n";
$data.= "To: ".$to."\r\n";
$data.= "Subject: ".$subject."\r\n";
$data.= "Reply-To:".$reply-to."\r\n";

$data.= "MIME-version: 1.0\r\n";
$data.= "Content-Type: text/plain; charset=ISO-2022-JP\r\n";
$data.= "Content-Transfer-Encoding: 7bit\r\n";
$data.= "\r\n";
$data.= $body

@fputs($sock, $data."\r\n");
$result = @fgets($sock, 128);

//最後を示す【.】を送信
@fputs($sock, "\r\n.\r\n");
$result = @fgets($sock);

上の例は、内部文字コードは【EUC】、【ISO-2022-JP】のプレーンテキストメールを送信する場合です。

$data.= "MIME-version: 1.0\r\n";
以降を変えることで、もちろんthmlメールや添付ファイル付きのメールを送信することもできます。

この辺りは、【mail】関数で添付なしプレーンテキスト形式メールを送信【mail】関数で添付ありプレーンテキスト形式メールを送信【mail】関数で添付なしhtml形式メールを送信(代替本文なし)【mail】関数で添付ありhtml形式メールを送信(代替本文なし)【mail】関数で添付なしhtml形式メールを送信(代替本文あり)【mail】関数で添付ありhtml形式メールを送信(代替本文あり)とほぼ同じです。
違うのは、行の最後を表す文字がきっちり【\r\n】になることです。


送信し終えたら、
@fputs($sock, "QUIT\r\n");
@fclose($sock);
2010年01月
        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
先月
来月
カテゴリ
検索
関連サイト
プロフィール
【ネットネーム】
みゅー

キャラクター by ツカエルサイト


【趣味】
・プログラミング
・写真
・楽器演奏
・手芸
・日曜大工
・家の中の不便を便利に
・考える
・自然科学
・猫と戯れる
・ジグソーパズル

【仕事】
・派遣社員でSE・PGやっていました。次の良い仕事がみつからないので、ビジネスへ注力しようと思っています。
・経験言語:VB6、VB.NET、PHP、Perl、JAVA、Oracle、SQLServer、PostgreSQL



【名前】
アン(足)

2014年4月22日生まれ 女の子
あだ名は くノ一
普段は普通にしゃべりますが、興奮すると『ニャ』を連発します

【趣味】
・狩
・ご飯を食べる
・ママのお手伝い

【仕事】
ママのビジネスの看板招き猫
ママの代わりにPC入力
仕事中のママの右腕を温める
ママに心配をかける
いろんな事をしでかしてママを退屈させない

RSSフィード