• 締切済み

phpで携帯へのメルマガ配送について

データベースから特定メアドを引き出しループで送信処理をしています。 ドメイン許可してもDocomoあてが届かない現象があり なにかうまい配送方法はないでしょうか? コードは以下です。 $sql = "select * from master where mailpermission = '$mp'"; $rs = mysql_query($sql,$con); while($row=mysql_fetch_array($rs)) { $toad =$row[7]; $name=$row[2]; $kanrino=$row[0]; //メール送信 $to .= $toad; $subject = $kenmei; $sendman = $postadjpn; $header .= 'From:'. mb_encode_mimeheader($sendman). " <".$postad.">\n"; $header .= "Return-Path:".$postad."\n"; $header .= "Date:"; $header .= date("D, d M Y H:i:s O"); $body .= "\n"; $body .= $name; $body .= "様"; $body .= "\n"; $body .= "\n"; $body .= $postnaiyou; $body .= "\n"; mb_internal_encoding("ISO-2022-JP"); ini_set("mbstring.internal_encoding","UTF-8"); mb_language("uni"); mb_send_mail($to,$subject,$body,$header); $to = ""; $subject = ""; $sendman = ""; $header = ""; $body = ""; } mysql_close($con);

  • PHP
  • 回答数2
  • ありがとう数0

みんなの回答

  • shimix
  • ベストアンサー率54% (865/1590)
回答No.2

メール送信に使っているサーバは、$postadのメールアドレスのホスト名のtxtレコードを登録しているIPアドレスでしょうか?そうでないと「なりすまし」と判断されると思います。 http://www.nttdocomo.co.jp/service/communication/imode_mail/notice/sender_id/ また同一キャリア宛への送信数が多くなりすぎていないかも確認された方がいいと思います。 http://www.nttdocomo.co.jp/service/communication/imode_mail/notice/mass_send/ (蛇足) >mb_internal_encoding("ISO-2022-JP"); >ini_set("mbstring.internal_encoding","UTF-8"); >mb_language("uni"); 意味不明ですね。スクリプトの先頭で mb_language('uni'); mb_internal_encoding('utf-8'); だけ書いておけばいいと思います。 日本国内宛のみのメールで(iso-2022-jpでなく)utf-8のメール(uni)ってどうなのよ・・という話もありますが(汗

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

mb_send_mail()でメールを送っているところを見ると、メールサーバーは自サバ? 固定IPで上位DNSに登録してもらって、正引き・逆引きできるようになっていますか? MXの登録もきちんとしていますか? そうでない場合は偽装サーバーと判断されているかもしれません。 対応するためにはきちんとサーバーを立ち上げるか、 契約しているISPのメールサーバー経由でメールを送ることです

関連するQ&A

  • mb_send_mail で一部文字化けします

    mb_send_mail で一部文字化けします。 URLやキーワードとかそういった文字をいれた変数です。 基本UTF8で作ってます。 mb_language("Japanese"); mb_internal_encoding("UTF-8"); mb_regex_encoding("UTF-8"); mb_detect_order("ASCII, JIS, UTF-8, EUC-JP, SJIS"); $subject = "てすと"; $to =$email; $header .= "From:admin@example.jp\n"; $header .= "Return-Path:admin@example.jp\n"; $header .= "Date:"; $header .= date("D, d M Y H:i:s O"); $body .= "\n"; $body .= "◆URL:"; $body .= $url[$count]; mb_send_mail($to,$subject,$body,$header);

    • 締切済み
    • PHP
  • phpのメール送信

    ホームページにメールフォームを作りたいのですが、 送信できなくて困っています。 ソースは次の通りです。 <?php echo "<html>"; echo "<head>"; echo "<title>メールフォーム(送信処理)</title>"; echo "</head>"; echo "<body>"; mb_language("japanese"); mb_internal_encoding("UTF-8"); $to = "アドレスA"; $subject = "件名"; $from = "アドレスB"; $header = "From: ". $from; //本文格納 $mailbody = "■お名前:" . $_post["name"] ."\n"; $mailbody .= "■内容:" . $_post["sentaku"] ."\n"; if(mb_send_mail($to, $subject, $mailbody, $header)){ echo "送信しました。"; }else{ echo "送信できませんでした。"; } echo "</body>"; echo "</html>"; ?> またif文の日本語が文字化けしてしまいます。 メール送信できて、文字化けもないようにしたいです。 よろしくお願いします。

    • 締切済み
    • PHP
  • 本人確認メールについて

    販売サイトや、SNSでよくある本人確認メール(呼び方は知りません)の書き方について ご質問です。 ちなみに、自分で勝手な想像で作成したスクリプトを書いておきます。 どこが間違っているのかご指摘お願い致します。 -------------------------------------------------------------------------------------------------- //////////////////////// // 本人確認メール送信 // //////////////////////// $mail = $_SESSION['mail']; $con = mysql_connect("~", "~", "~"); mysql_select_db("~-~"); mysql_set_charset('utf8'); $sql = "SET NAMES utf-8"; mysql_query($sql); $sql = "SELECT * FROM member_profile WHERE email='$mail';"; $result = mysql_query($sql) or die; $row = mysql_fetch_row($result); $name = $row[2]; mysql_close($con); $header = "From:raindrop.jp-5247423@~.jp Content-Type:text/html; charset=ISO-2022-JP Content-Transfer-Encoding:8bit "; $top = $name.' 様<br><br>'; $aisatsu .= "~への会員登録のお申し込みありがとうございます。<br> まだ登録は完了しておりません。下記URLから登録を完了してください。<br><br>"; $html_header = '<doctype html><html><head><meta charset="ISO-2022-JP"></head><body bgcolor="#FFFFCC">'; $html_footer = '</body></html>'; $uniqid = uniqid(); $anchor = '<a href="http://~/php/membership_kakutei.php?from=1">http://sirius5.link/register/confirm/'.$uniqid.'</a>'; $contents="<br><br> ==================================================<br> このメッセージは~より自動的に送信しております。<br> このメールにお心当たりのない場合は、このメールを破棄してください。<br> ==================================================<br> <br> <br> <br> -----------------------------------------------------------<br> ~<br> http://daiko-king.com <br> -----------------------------------------------------------<br> "; ////////////////////////// // 新規登録者宛にメール // ////////////////////////// $message = $html_header.$top.$aisatsu.$anchor.$contents.$html_footer; $to = $mail; $subject = "【~】 仮登録完了"; // 題名 $to = mb_convert_encoding($to, "UTF-8", "auto"); // $toは、自動的にエンコードされない。 $subject = mb_convert_encoding($subject, "UTF-8", "auto"); $message = mb_convert_encoding($message, "UTF-8", "auto"); $header = mb_convert_encoding($header, "UTF-8", "auto"); mb_send_mail($to, $subject, $message, $header); // メール送信 ---------------------------------------------------------------------------------------------------- <a>あいうえお</a> の、あいうえお の部分が実際には存在しないディレクトリに してるのですが、(上記の場合だと、/register/confirmの部分です)それではだめ なのでしょうか。 実際にあるディレクトリだとしたら、たとえば、 https://aaa.com/register/confirm/ASkuCxyxsKxJ08kojrn770Js_jNOCXoD6ZXE0fgKQyI の、A以下の正規表現的な文字列つけることで何がしたいのかわかりません。 説明していただきたいです。正しい方法とスクリプトの書き方をよろしくお願いします。

    • ベストアンサー
    • PHP
  • 正しいでしょうか?

    データベースより条件にマッチしたメールアドレスにメールを送りたく、下記のように作りました。結果としてとりあえず機能していますが、書き方がなんとなく正しくないような気がしてなりません。他にBESTな方法があればご教授ください。よろしくお願いいたします。 $sql = "select * from table where categ = '{$_POST['categ']}'"; $rs = mysql_query($sql); while($cstm = mysql_fetch_array($rs)){ $name = $cstm['name']; $mail = $cstm['mail']; $fp = fopen("mail.txt", "r"); $msg = ""; while ($x = fgets($fp)) { $x = mb_ereg_replace("%%NAME%%", $name, $x); $msg .= $x; } $subject ="件名"; $header = "Content-type: text/plain;charset=\"iso-2022-jp\""; mb_language("Japanese"); mb_send_mail($mail, $subject, mb_convert_encoding( $msg, "JIS","EUC-JP") ,"From: webmaster@aaa.com",$header); } mysql_close($con);

    • ベストアンサー
    • PHP
  • PHPでmailもしくはmb_send_maiを使って文字化け

    いろいろサイトで調べてもはっきりした答えがないので質問しました。 パターン1・・・mail関数 $mail_subject = '入会申込受付のご連絡'; $mail_subject = base64_encode($mail_subject); $mail_subject = '=?ISO-2022-JP?B?' . $mail_subject . '?='; $header = "From: $sousin_email\n"; $header .= "Reply-To: $email\n"; $header .= "Date: $mail_date\n"; $header .= "X-Mailer: PHP/".phpversion()."\n"; $mail_body= "こんにちは"; mail($myemail, $mail_subject,$mail_body,$header);//ユーザーへ この場合、OutLook、Docomo、AUのメーラーでは問題なしですが、Vodafoneの3G機種(703SH)では件名・本文が文字化け パターン2・・・mb_send_mail $mail_subject = '入会申込受付のご連絡'; $mail_body= "こんにちは"; $header = "From: $sousin_email\n"; $header .= "Reply-To: $email\n"; $header .= "Date: $mail_date\n"; $header .= "X-Mailer: PHP/".phpversion()."\n"; mb_language("Japanese"); mb_internal_encoding("sjis"); mb_send_mail($myemail, $mail_subject,$mail_body,$header);//ユーザーへ この場合、本文はvodafoneも含め文字化けしないのですが、件名が「e会申込受付のご連絡」となってしまい、入という文字が表示されません。いくつかの文字がそのように化けるのですが何が化けるのかは検証はできておりません。 mailでもmb_send_mailでもいいのですが、すっきりとほどんどのメーラーで対応できる方法はあるのでしょうか? どなたかご教授お願いします。

    • 締切済み
    • PHP
  • htmlとphpの分離

    お世話になります。 ビジュアルをcssで調整するために、htmlとphpの分離したいんですが、どう分ければいいか教えていただけませんか? ソースはこれです↓ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <link rel="stylesheet" type="text/css" href="base.css"> <title>ファイルのアップロードフォーム</title> </head> <body> <form enctype="multipart/form-data" method="post"> <input type="file" name="myfile" size="30"> <input type="submit" value="アップロード"> <?php //全てのエラー・警告を出力する ini_set('error_reporting', E_ALL); //アップするディレクトリ $uploads_dir = '../../file_manager/uploads'; //データベースに接続 $con = mysql_connect('','',''); mysql_select_db(""); //セットされているかのチェック if(isset($_FILES["myfile"]) and $_FILES["myfile"]["type"]=="application/pdf" and $_FILES["myfile"]["error"] == UPLOAD_ERR_OK) { $tmp_name = $_FILES["myfile"]["tmp_name"]; $name = mysql_real_escape_string($_FILES["myfile"]["name"]); $size = $_FILES["myfile"]["size"] / 1024; //テーブルに格納 $sql ="insert into t_pdf_manage (name,size,upload_time,modify_time,flg) values('$name',$size,now(),now(),1)"; mysql_insert_id(); mysql_real_escape_string($sql); $sql .=" on duplicate key update size=$size,modify_time=now(),flg=1"; $result=mysql_query($sql,$con); //テーブルからidを抽出 $sql ="select id from t_pdf_manage where name='$name'"; $result=mysql_query($sql,$con); //添字配列でidを取得 $row=mysql_fetch_row($result); $up_name=$row[0]; //ファイル名をidにしてアップ move_uploaded_file($tmp_name, "$uploads_dir/$up_name"); } if(isset($_POST["del"]) and is_array($_POST["del"])) { $sql ="update t_pdf_manage set flg=0 where id in("; $flg=true; foreach($_POST["del"] as $val) { if($flg) {$flg=false;} else {$sql.=",";} $sql .="'".mysql_real_escape_string($val)."'"; } $sql .=")"; $result=mysql_query($sql,$con); } $sql ="select id,name,size,upload_time,modify_time from t_pdf_manage where flg=1"; $result=mysql_query($sql,$con); print "<table border=1>\n"; print "<tr>\n"; print "<th>名前</th>\n"; print "<th>サイズ(KB)</th>\n"; print "<th>アップロード</th>\n"; print "<th>更新</th>\n"; print "<th>表示</th>\n"; print "<th>削除</th>\n"; print "</tr>\n"; while($row=mysql_fetch_array($result,MYSQL_ASSOC)){ print "<tr>\n"; print "<td>".htmlspecialchars($row["name"])."</td>\n"; print "<td>".$row["size"]."</td>\n"; print "<td>".$row["upload_time"]."</td>\n"; print "<td>".$row["modify_time"]."</td>\n"; print "<td><a href=\"hyouji_test.php?id=" . $row["id"] . "\" target=\"new\"><img src=\"pdf.gif\"/></a></td>\n"; print "<td><input type=\"checkbox\" name=\"del[]\" value=\"".$row["id"]."\"></td>\n"; print "</tr>\n"; } print "</table>\n"; mysql_close($con); ?> <input type="submit" value="削除"> </form> </body> </html>

    • ベストアンサー
    • PHP
  • mail()でメール送信で、特定のメーラーの受信のみ件名が文字化け

    PHPでメール配信プログラムを作っております。 配信テストを行なったのですが、特定のメーラーで件名が文字化けしてしまう現象に見舞われしてしまい、対処法を探しております。 ■テストメーラー 1、OutlookExpress 2、EdMax 3、Thunderbird ■ソース(一部抜粋) mb_language('Japanese'); mb_internal_encoding("SJIS"); //1 $subject = mb_encode_mimeheader($subject); //2 $subject = mb_convert_encoding($subject,"JIS","SJIS"); $send_body = mb_convert_encoding($send_body,"JIS","SJIS"); $header = "From: $fronmail.\n"; $header .= "Return-path: $return\n"; $header .= "Reply-To: $fronmail.\n"; //3 $header .= "Subject: $subject\n"; $header .= "Message-ID: {$MessageID}\n"; $header .= "MIME-Version: 1.0\n"; $header .= "Content-Type: text/plain; charset=\"ISO-2022-JP\"\n"; $header .= "Content-Transfer-Encoding: 7bit\n"; //4 $header .= "Content-Transfer-Encoding: base64\n"; $header .= "X-Mailer:PHP/".phpversion(); $chk_mail = mail($to_email,$subject,$send_body,$header); ■設定値 $body = $subject = "日本語テスト"; メールアドレスはプロバイダなどが発行しているもの ■現象 ソースのままだと1、2は件名は文字化けせず、3は文字化け(???{????? ※?はひし形に囲まれた?です)します。 それぞれコメントアウトを外したり切り替えたりするのですが、1、2も件名が文字化けになったりします。 3は基本的にどのコメントアウトを有効にしても文字化けのままです。 $subjectに関しては、mail関数のものが優先のようでして、試しに空にしてみたのですが、件名も空のままでした。 何故この形式を取っているかというと、半角カナを使いたいが為でして、mb_send_mailだと半角カナが使えなかったような気がしてmailを使っております。 あと、popenで直接コマンドを打つという手もありそうですが、sendmailではなくpostfixなのですがpostfixでコマンドをという手段を探した方が良いのでしょうか? 出来ればmailを使って文字化けもしない方向を希望なのですが、それが駄目なら他の手段など誘導していただければ幸いです。 宜しくお願いいたします。

    • ベストアンサー
    • PHP
  • php 投票システム

    データベースと連動した投票システムを考えております。 phpとMySQLを使用したもので、対応するボタンを押すと1票投じられるというものです。 この仕組み自体は実現できたのですが、 ブラウザの更新ボタンを押すと、『情報を再送信する必要があります』と表示され、『はい』を押すと、自動的に1票投じられてしまいます。 スクリプトは以下のようになるのですが、上記のような不具合を修正するためにはどうすればよいのでしょうか。 アドバイス、具体的なソース、また、他の部分における修正すべき箇所など、ご指摘いただきたいと思います。 よろしくお願いいたします。 <?php echo "<table border=0>"; echo "<tr><td colspan=4 align=left><img src=logo-touhyou.gif></td></tr>"; echo "<tr><td><form method=post action="; echo $_SERVER["PHP_SELF"]; echo "><input type=hidden value=1 name=posi><input type=image src=logo-posi-s.gif border=0></form></td>"; echo "<td><form method=post action="; echo $_SERVER["PHP_SELF"]; echo "><input type=hidden value=1 name=deep><input type=image src=logo-deep-s.gif border=0></form></td></tr></table>"; $posi=$_POST["posi"]; $deep=$_POST["deep"]; if ($posi==1){ $server="mysql..jp"; $dbname="LA"; $user="LA"; $pass=""; $conn = mysql_connect($server,$user,$pass); $conndb = mysql_select_db($dbname); $sql="SELECT posi FROM test WHERE id =1 LIMIT 1"; $res=mysql_query($sql); while($row = mysql_fetch_assoc($res)) { $row_con=mb_convert_encoding($row["posi"], "shift_jis", "auto"); echo $row_con; echo "<br>"; $number1=1; $after=$row_con+$number1; echo $after; echo "<br>"; mysql_query("LOCK TABLES test WRITE"); $sql_1="UPDATE test SET posi='$after3' WHERE id =1 LIMIT 1"; $ins=mysql_query($sql); mysql_query("UNLOCK TABLES"); if ($ins_1){ echo "ポジティブ投票完了"; } $sql_2="SELECT posi FROM test WHERE id =1 LIMIT 1"; $res_2=mysql_query($sql_2); while($row_2 = mysql_fetch_assoc($res_2)) { $row_con_2=mb_convert_encoding($row_2["posi"], "shift_jis", "auto"); echo $row_con_2; } } mysql_close($conn); } if ($deep==1){ $server="mysql..jp"; $dbname="LA"; $user="LA"; $pass=""; $conn = mysql_connect($server,$user,$pass); $conndb = mysql_select_db($dbname); $sql2="SELECT deep FROM test WHERE id =2 LIMIT 1"; $res2=mysql_query($sql2); while($row2 = mysql_fetch_assoc($res2)) { $row_con2=mb_convert_encoding($row2["deep"], "shift_jis", "auto"); echo $row_con2; echo "<br>"; $number1=1; $after2=$row_con2+$number1; echo $after2; echo "<br>"; mysql_query("LOCK TABLES test WRITE"); $sql2_2="UPDATE test SET deep='$after2' WHERE id =2 LIMIT 1"; $ins2=mysql_query($sql2_2); mysql_query("UNLOCK TABLES"); if ($ins2){ echo "ディープ投票完了"; } $sql2_2="SELECT deep FROM test WHERE id =4 LIMIT 1"; $res2_2=mysql_query($sql2_2); while($row2_2 = mysql_fetch_assoc($res2_2)) { $row_con2_2=mb_convert_encoding($row2_2["deep"], "shift_jis", "auto"); echo $row_con2_2; } } mysql_close($conn); } ?>

    • ベストアンサー
    • PHP
  • sendmailの改行について

    sendmailの改行について PHPでsendmailにてメールを送信しようとしています。 mb_language("uni"); mb_internal_encoding("SJIS-WIN"); $body = "おはようございます\n"; $body = "こんにちわ\n"; $body = "さようなら\n"; mb_send_mail($to, $subject, $body, $header); 上述のコードにてメールを送信すると、 本文内の改行コードが無視されて、 「おはようございますこんにちわさようなら」 と送信されてしまいます。 改行されるようにするにはどうすれば宜しいでしょうか? 因みにPHP_EOL定数を使っても結果は同じです。

    • ベストアンサー
    • PHP
  • PHPから携帯へメール送信

    いつもお世話になっております。 PHPから携帯電話へ"絵文字付き"でメールを送るプログラムを作成している のですが、『base64_encode』等を使用して絵文字の表示までは行う事がで きました。 ですが、本文が途中で途切れてしまうのです・・・。 PHP側は、 $to = mb_convert_encoding(mb_decode_mimeheader($structure->headers['from']), 'SJIS', 'ISO-2022-JP'); $subject = mb_convert_encoding(mb_decode_mimeheader($structure->headers['subject']), 'SJIS', 'ISO-2022-JP'); (省略)  ・  ・ $body = $structure->body; $body = preg_replace('/\s*>\s.*/', '', $body); $body = mb_convert_encoding($body, 'SJIS', 'ISO-2022-JP'); //---------------------------------- // base64_encode //---------------------------------- $subject = "=?shift_jis?B?" . base64_encode($subject) . "?="; $body = base64_encode($body); //---------------------------------- // ヘッダを作成 //---------------------------------- $headers = "From: test@mail.com\n"; $headers .= "MIME-Version: 1.0\n"; $headers .= "Content-Type: text/plain; charset=Shift-JIS\n"; $headers .= "Content-Transfer-Encoding: base64"; //---------------------------------- // メール送信 //---------------------------------- $res = mail($to, $subject, $body, $headers);  ・  ・ (省略) 上記のように記述しています。 メールは送れます。絵文字も表示されます。ですが、本文が途中で途切れ てしまいます。 どなたかご教授をお願い致します。

    • ベストアンサー
    • PHP

専門家に質問してみよう