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

「SBBS」の通知メール機能にて送られたメールが文字化け

created: 2010-11-02 15:22 | modified: 2010-11-04 09:33 | reply: 8

[4375] 「SBBS」の通知メール機能にて送られたメールが文字化け

user: KSC ホームページ | created: 2010-11-02 15:22
「SBBS」を自分の業務ヘルプサイト内の掲示板として利用させてもらおうと思い、テストさせて頂いています。

で、「SBBS」の設置・動作は問題なく実施したのですが、
・管理者へのメール通知
・記事にレスがついた時の投稿者へのメール通知

で、送られてきたメールが文字化けしてしまいます。

phpファイルのどこかの設定を変更すれば良いのでしょうか?

教えて下さい。
宜しくお願い致します。
reply: 4376 返信 編集 削除

[4376] Re.「SBBS」の通知メール機能にて送られたメールが文字化け

user: ゆうじ | created: 2010-11-03 00:45
sbbs.phpの機能設定の SBBS_MAIL_SENDER が 0 だと、
文字エンコード変換は mb_send_mail におまかせなので
PHPのmb関連の設定に依存してます。
古いPHPのなかには誤変換のバグを含んだバージョンもあったと思います。

PHPのバージョン、
mb関連の設定値、

を教えていただければ対策用のコードを書いてみます。
メール送信関連は _send_mail.php にまとまっていますので
この一部書き換えで対応出来ると思います。
Parent: 4375  reply: 4377 返信 編集 削除

[4377] Re2.「SBBS」の通知メール機能にて送られたメールが文字化け

user: KSC | created: 2010-11-03 01:03
ゆうじさん、こんばんは。
KSCです。

【PHPのバージョン】
 PHP 5.2.14 (cgi) (built: Aug 30 2010 20:25:28)

【mb関連の設定値】
 mbstring.language = neutral;
 mbstring.internal_encoding = UTF-8;
 mbstring.http_input = pass;

です。

宜しくお願い致します。
Parent: 4376  reply: 4378 返信 編集 削除

[4378] 通知メール部分のテコ入れ箇所です

user: ゆうじ | created: 2010-11-03 02:56
if(_send_mail.php のファイルそのものの文字エンコーディングが
UTF-8 でなければ):
 UTF-8 で保存し直すだけで改善されるかもしれません。;
endif;

if(件名もヘッダの一部なのでMIME変換が必要だったかも):
_send_mail.php 22行目に「追加3」のみを書き足してお試しください。;

else:
本文と件名が内部エンコーディングでない場合を想定して、
「追加1-3」を全て書き足してお試しください。;

endif;

// mb_send_mail() -- 推薦
case 0:
$msg = mb_convert_encoding($msg, 'UTF-8', 'AUTO'); // 追加1
$sub = mb_convert_encoding($sub, 'UTF-8', 'AUTO'); // 追加2
$sub = mb_encode_mimeheader($sub, 'ISO-2022-JP', 'B'); // 追加3
@mb_send_mail($to, $sub, $msg, $header);
break;
Parent: 4377  reply: 4379 返信 編集 削除

[4379] 本文は文字化け解消ですが、件名はダメでした

user: KSC | created: 2010-11-03 09:54
KSCです。

お世話になります。

修正ソース(追加1-3)を書き足して、実行しました。

結果としては、
 本文 → OK

 件名 → ダメ
  現在は、下記のような文字化け状態となっています。
  =?ISO-2022-JP?B?WxskQiFWGyhCVGhlIEFtb2ViYRskQiFXN0c8KEhEIUo0SU19PFQbKEI=?=
   ↓
  返信6

  と、ならなければいけないのですが...。

あと、もう少しで実用できるので、何とかお力を貸して下さい。

宜しくお願い致します。
Parent: 4378  reply: 4380 返信 編集 削除

[4380] テコ入れ訂正します

user: ゆうじ | created: 2010-11-03 17:54
> =?ISO-2022-JP?B?WxskQiFWGyhCVGhlIEFtb2ViYRskQiFXN0c8KEhEIUo0SU19PFQbKEI=?=

これMIME変換後の文字そのままですね。
これだとMIME変換が不要ってことのようです。

なので、追加3 を削除またはコメントアウトして
MIME変換を無効にしてください。
Parent: 4379  reply: 4381 返信 編集 削除

[4381] 文字化け解消!!

user: KSC | created: 2010-11-03 19:42
KSCです。

追加3を削除して、実行しました。

文字化けせずに通知メールが配信されました。

これから使用させて頂きます。

ありがとうございました。

で、早速で申し訳ありません。2つ質問があります。
【質問1】
「投稿通知用管理者メールアドレス」なのですが、複数(2つ)の
メールアドレスを指定する事は出来ますでしょうか?
【質問2】
「返信通知メール」ですが、「管理者メールアドレス」で
メール送信されますが、この時のメールアドレスって、
うそのアドレスを設定する事は、出来ないでしょうか?
(別に悪巧みを考えている訳ではありません。
 あくまで、掲示板への書込みをして頂きたいので、
 通知メールの送信元(管理者)に返信メールを
 送れるようにしたくない!)
Parent: 4380  reply: 4382 返信 編集 削除

[4382] 返信通知メールの件など

user: ゆうじ | created: 2010-11-03 22:28
【質問2】の件
ユーザが間違ったアドレスを入力して
無関係な第三者に通知メールが行く可能性もあるので
その対応のためにも実際使えるアドレスをお使いください。
また、送信元が空だったり詐称されたものは
典型的なスパムメールなのでサービスとして大きくマイナスです。

gmailなどフリーのアドレスを獲得し設定しておくといいと思います。

// 投稿通知処理
function infomail( $rec = 0 )
{

・・・

// この部分の SBBS_MASTER_ACOUNT を、

$header = "From: ". SBBS_MASTER_ACOUNT. "\n";
$header .= "Reply-To: ". SBBS_MASTER_ACOUNT. "\n";
$header .= "Message-Id: <". $bbsid. $num. $mid. SBBS_MASTER_ACOUNT. ">";
if($topi) {
$refer = str_replace($bef, "", $Records[$topi][Fd_DATE]);
$header .= "\nIn-Reply-To: <". $bbsid. $topi. $refer. SBBS_MASTER_ACOUNT. ">\n";
$header .= "References: <". $bbsid. $topi. $refer. SBBS_MASTER_ACOUNT. ">";
}

// ↓のように、フリーアドレスに書き換えてあげます。
// ****@**** 部分をフリーアドレスに置き換える
// SBBS_MASTER_ACOUNT を $ReplyTo に書き換え

$ReplyTo = '****@****';

$header = "From: ". $ReplyTo. "\n";
$header .= "Reply-To: ". $ReplyTo. "\n";
$header .= "Message-Id: <". $bbsid. $num. $mid. $ReplyTo. ">";
if($topi) {
$refer = str_replace($bef, "", $Records[$topi][Fd_DATE]);
$header .= "\nIn-Reply-To: <". $bbsid. $topi. $refer. $ReplyTo. ">\n";
$header .= "References: <". $bbsid. $topi. $refer. $ReplyTo. ">";
}

・・・


【質問1】の件
さらに下の方を訂正。_send_mail() をもう一回呼ぶのが簡単かな。
if文の { } を追記するのも忘れすに。
 
・・・

// 送信せよ!
if(SBBS_MASTER_INFO && SBBS_MASTER_ACOUNT) {
_send_mail(SBBS_MASTER_ACOUNT, $sub, $msg, $header);
_send_mail('****@****', $sub, $msg, $header); // ****@**** をもうひとつのアドレスに置き換え
}

・・・
}
Parent: 4381  reply: 4383 返信 編集 削除

[4383] アドバイスありがとうございます。

user: KSC | created: 2010-11-04 09:33
KSCです。

「質問1」に対する回答については、教えて頂いた箇所に
メールアドレスを追加したいと思います。

「質問2」に対する回答については、ご指摘の内容ごもっとも!!
掲示板の管理者用でメールアドレスを用意します。

これからも宜しくお願い致します。
Parent: 4382  返信 編集 削除
スレッド表示 | フラット表示〕 全トピック 923 件中 15 番目 次≫ ≪前
ページの一番上へ
Googleグックマークに登録 Yahooグックマークに登録 livedoorクリップに登録 @niftyクリップに登録 はてなブックマークに登録 deliciousに登録 Buzzurlに登録 FC2ブックマークに登録
最近更新された掲示板トピックス
管理人Blog
Yahoo Search

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