| 投稿者 | 
			投稿 | 
		
		
			| 
				
			 | 
			
				
				#1 2009 年 5 月 7 日(木) 17:33  
			 | 
		
		
			| 
				会員
				
				 登録者: 5 月 2009 
				返信数: 4 
				
			 | 
			
				 初めまして
  現在、正常に動作している環境を下記に入替を行いました。
  httpd-2.0.51-25   → 2.2.6-10 php4-4.3.11-8    → 5.2.4-18 sendmail-8.13.1-3  → postfix-2.4.5-10
 
  メール送信でどうしても件名が下記のようになります
  =?ISO-2022-JP?B?GyhJJVUlISUkJRskQnYnGyhJQCUmJRsoQj8bJEJ6IxsoSTwlSRsoQgo=?=
 
  メールのソースを見ると下記のように途中で改行されています。
  Subject: =?ISO-2022-JP?B?PT9JU08tMjAyMi1KUD9CP0d5aEpK?=  =?ISO-2022-JP?B?VlVsSVNVa0pSc2tRblluR3loSlFDVW1KUnNvUWo4YkpFSjZJeHNvU1R3?=  =?ISO-2022-JP?B?bFNSc29RZ289Pz0=?=
  正常に動作している環境は改行されずに1行です。
  最後の =?= が ?= になっているのが原因だと思いまが、色々調べましたが回避方法が分かりません。
  --------------------------------
  $txtSubject = "=?ISO-2022-JP?B?" . base64_encode(mb_convert_encoding("ファイルダウンロード\n","JIS","SJIS")) . "?=";
  省略
  mb_send_mail($UserMail[0], $txtSubject, $txtMailMsg, gcMailFrom); 
			 | 
		
		
			| 
				
			 | 
			
				
				#2 2009 年 5 月 8 日(金) 10:06  
			 | 
		
		
			| 
				会員
				
				 登録者: 10 2007 
				返信数: 71 
				
			 | 
			
				PHP4からPHP5に移行されたということですので、php.iniでの設定内容が変わったということはありませんか?。マルチバイトの設定が変わるとmb_send_mail()での挙動が(たしか)変わったと思います。 php.iniでmbstring.languageの設定がJapanese等に指定されていると、mb_send_mail()での件名と本文は自動的にエンコードされます。ですので、直接件名を書く mb_send_mail($UserMail[0], "ファイルダウンロード\n", $txtMailMsg, gcMailFrom); という方法も試されてみてはいかがでしょうか?。 参考: mb_send_mail() 
			 | 
		
		
			| 
				
			 | 
			
				
				#3 2009 年 5 月 8 日(金) 11:56  
			 | 
		
		
			| 
				会員
				
				 登録者: 5 月 2009 
				返信数: 4 
				
			 | 
			
				 ご回答ありがとうございます。
  直接件名を書く方法で解決しましたが、複数のソースを変更する必要があります。
  他の方法がありましたらお願いいたします。 
			 | 
		
		
			| 
				
			 | 
			
				
				#4 2009 年 5 月 8 日(金) 13:23  
			 | 
		
		
			| 
				会員
				
				 登録者: 10 2007 
				返信数: 71 
				
			 | 
			
				PHP 5.2.8 (Windows Binary CLI)でちょっと試してみましたが、残念ながら今のところmb_send_mail()を mail()関数にそのまま置き換える方法ぐらいしかみつかりませんでした。 mb_language()でどう設定してもmb_send_mail()では自動的に何かしらエンコードされてしまうみたいなので、php.iniを変更してもダメかな?と思っています・・・。  
			 |