スレッド表示 | フラット表示〕 全トピック 920 件中 196 番目 次≫ ≪前

mb_send_mailでメールが届かない?

created: 2006-08-27 02:41 | modified: 2006-08-29 01:42 | reply: 3

[3254] mb_send_mailでメールが届かない?

user: | created: 2006-08-27 02:41
皆さんこんにちは。
mb_send_mail()について皆さんのご意見をお聞かせ下さい。

以下のような感じでメールを送信しています。
$E-Mail = お客様のアドレス;
$E-Mail_cc = 管理者アドレス;

$maintext = '本文の内容。。。。';

$headers .= "Return-Path: <{$E-Mail_cc}>\r\n";//スパム扱いされないように
$headers .= "From: abcdefg <{$E-Mail_cc}>\r\n";
$headers .= "X-Mailer: Mail-System";//X-Mailerが無いとスパム扱いされるかもと思って。

mb_send_mail($E-Mail, 'タイトル' , $maintext, $headers , "-f {$E-Mail_cc}" );
//↑お客様への送信
mb_send_mail($E-Mail_cc, 'タイトル', $maintext, $headers);
//↑管理者へのCC

このような感じでメール送信しているのですが、“たまに”後でお客様から
「そういうメールは届いていません」と言われるのです。
指摘されてから再送信すると届いたりするので、同じ内容のメールで同じ相手
でも、届いたり届かなかったりしているようです。
(お客様が見落としていた可能性はゼロではありませんが…)

あと、送信失敗(?)時の状況としては以下のようなものが挙げられます。

●特定の宛先だけでの問題ではない(複数のお客様から指摘があった)。
●「管理者へのCC」は確実に届いている。
●認識している発生頻度としては、100?300通に1通くらいのようである。
 (↑お客様から指摘が無いと分からないので、想像です)
●宛先が間違っている時は「-f」オプションでエラーメールが来ている
 ので、それとは別。
●phpは4.3.11です。

????????????????????

それで、原因として思い付いたものとしては…

【1】お客様への送信だけ「-f」オプション付き。これが何か影響している?
【2】お客様への宛先は外部サーバで、CC宛先はphpが動作しているのと同じ
   サーバである。外部サーバへ送る時だけ(たまに)失敗することがある?
【3】お客様側でスパムフィルタにかかってしまう?
【4】送信メールが文字化けし、お客様がスパムと勘違いして捨ててしまう?

…なのですが、
【3】は、同じ内容でも届いたり届かなかったりなので違うような?
【4】については … 同じ内容でも届いたり届かなかったりなわけですが、
   同じ内容で文字化け“したりしなかったり”ってあり得るのでしょうか?
   (ちなみに、内部文字コードはEUC-JPです。CCメールの方は文字化け
    していたことはありません。)

????????????????????

そこで皆さんにお尋ねしたいのですが、

●mb_send_mail()って、(宛先不明やスクリプトエラーを除いて)ランダム
 に失敗したりするものなのでしょうか?
●さらに、そのランダムな失敗っていうのは外部サーバの宛先の場合だけ?
●本件のような場合、もしお客様にメールが届いていなくてもお客様から
 指摘があるまでこちらで認識できません。こういう場合、どのような
 予備対策が考えられるでしょう?または、より確実に送信する方法って
 あるでしょうか?
 (現時点では、送信したメールに対して一定期間応答が無ければ、
  「その後ご検討いただけましたか?」などと再メールしています。
  それで「届いてないよ」と言われ、発覚したりしています。)



長くなりましたが、皆さんからのご意見や情報などお聞かせいただければ
幸いです。よろしくお願いいたします。
reply: 3258 返信 編集 削除

[3258] mb_send_mail の第5引数

user: ゆうじ | created: 2006-08-27 11:14
こんにちは。まいどです。

届かない原因がこれか特定できませんが、
~のところのスペースはいらないのではないでしょうか。

mb_send_mail($E-Mail, 'タイトル' , $maintext, $headers , "-f {$E-Mail_cc}" );
~


届いたことの確認ですが、HTMLメールならば、
<img src="http://localhost/mailImage.php?uid=xxxxxx">
のような画像ファイルを埋め込んでおいて、
mailImage.php で xxxxxx を記録して、
メールを開いたユーザを特定できます。
(xxxxxx はユーザIDのhash値などユーザ固有の値)

でも、メーラーで、
HTMLメールが有効になっていないと意味がありませんが。
Parent: 3254  reply: 3264 返信 編集 削除

[3264] Re.mb_send_mail の第5引数

user: | created: 2006-08-29 00:45
ゆうじさん、レスありがとうございます。

> 届かない原因がこれか特定できませんが、
> ~のところのスペースはいらないのではないでしょうか。
>
>
> mb_send_mail($E-Mail, 'タイトル' , $maintext, $headers , "-f {$E-Mail_cc}" );
> ~
>


いろんなサンプルコードを見てみると、確かにこの部分のスペースは
無くても良いみたいですね。
でも、ここにスペースを入れているサンプルコードもよく見かけます。
私の場合、スペース入りでも、一応ちゃんとReturn-Pathとして認識されて
いるようなのでこれで良いのかと思っていました。
このスペース、「あっても無くても良い」のか、「スペース有りでも
一応動作するが、入れない方が確実に動作する」って感じなのか、
どうなんだろう?

スペースが無くても動作するということは、スペースを入れると、
「先頭にスペースのあるアドレス文字列」と誤認識される場合もあるの
かも??
とりあえずスペースは外しておいた方が無難なような気がしてきました…。


> 届いたことの確認ですが、HTMLメールならば、
> <img src="http://localhost/mailImage.php?uid=xxxxxx">
> のような画像ファイルを埋め込んでおいて、
> mailImage.php で xxxxxx を記録して、
> メールを開いたユーザを特定できます。
> (xxxxxx はユーザIDのhash値などユーザ固有の値)
>
> でも、メーラーで、
> HTMLメールが有効になっていないと意味がありませんが。

なるほどー。そういうやり方もありますね。
普段HTMLメールって使わないので思い付きませんでした。

でも、ゆうじさんの但し書きの通り、お客様がhtmlメール拒否だったり
htmlメールはOKでもリモート画像はNGって設定だったりすると上手く
いかないですね。
なかなか思い通りにいかないものですね…。
(ちなみに私個人は、htmlメールは受けますがリモート画像は表示
 しない設定にしています。)
Parent: 3258  reply: 3266 返信 編集 削除

[3266] Re.mb_send_mail の第5引数

user: ゆうじ | created: 2006-08-29 01:42
第5引数のスペースですが、マニュアルには
http://jp.php.net/manual/ja/function.mail.php
「追加のパラメータをメール送信プログラムに渡す際に使用可能」と
ありますので、MTA次第のようです。

sendmail では、スペース不要だったと思います。
実際はサーバの管理者に確かめてください。


届いたかどうか確認するのは、
実際のところ無理だと思っています。
少なくとも配送中にエラーがあればレスポンスが帰って来るよう
この第5引数と合わせて、Errors-To:も指定しています。

ちなみに、メルマガ配信大手のmag2でもそうしてますので、
こうしたところのメールヘッダを参考すると
良いヒントが得られると思います。
Parent: 3264  返信 編集 削除
スレッド表示 | フラット表示〕 全トピック 920 件中 196 番目 次≫ ≪前
ページの一番上へ
Googleグックマークに登録 Yahooグックマークに登録 livedoorクリップに登録 @niftyクリップに登録 はてなブックマークに登録 deliciousに登録 Buzzurlに登録 FC2ブックマークに登録
最近更新された掲示板トピックス
管理人Blog
Yahoo Search

最近更新したNote
PHPマニュアル
今日のブックマーク
PHPマニュアル関数検索
関数名を入力し検索ボタンをクリック↑