質問です。mb_send_mailを使おうとしたのですが・・・

PHPについてのコミュニティです。

Web言語の一種で、perlに並ぶ有名な言語です。
あの某有名動画サイトや、某SNSサイトでもPHPが使われています。
そんなPHPに少しでも可能性を見た人達が、とりあえず参加だけでもしておこうとうコミュニティです。
返信
アバター
MoNoQLoREATOR
記事: 284
登録日時: 8年前
住所: 東京

質問です。mb_send_mailを使おうとしたのですが・・・

#1

投稿記事 by MoNoQLoREATOR » 8年前

初めまして。
mb_send_mailを使ってメールを送ろうとしたのですが、下記のような「警告」が出ました。


Warning: mb_send_mail() [function.mb-send-mail]: Unsupported charset "'UTF-8'" - will be regarded as ascii in C:\xampp\htdocs\send_test\message_output.php on line 21

Warning: mb_send_mail() [function.mb-send-mail]: Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in C:\xampp\htdocs\send_test\message_output.php on line 21


前者は、私のパソコンのデフォルト文字コードがASCIIなのにUTF-8でエンコードしようとしたからだと思うのですが、どのように対処すればよいのかわかりません。

後者は、ポートを設定するかini_set()を使えという意味だと思うのですが、ポートはどのように知ればよいのでしょうか?


ご教授よろしくお願いいたします。m(_ _)m

アバター
御津凪
管理人
記事: 200
登録日時: 8年前
住所: 道内
連絡を取る:

Re: 質問です。mb_send_mailを使おうとしたのですが・・・

#2

投稿記事 by 御津凪 » 8年前

ローカル環境でHTTPサーバーを立ててテストしているならば、この場合はメールサーバーも立てないといけません。(送信するのでもちろんネットワークに接続されていなければなりません)

また、文字コードの方は、関数に渡す文字列を文字コード変換で Shift_JIS に変換して渡せば行けるはずです。

※双方とも自身が試していないので確証はありません。
This article was written by "Mitsunagi".

アバター
MoNoQLoREATOR
記事: 284
登録日時: 8年前
住所: 東京

Re: 質問です。mb_send_mailを使おうとしたのですが・・・

#3

投稿記事 by MoNoQLoREATOR » 8年前

メールサーバーを立てたのでその手のエラーは出なくなったのですが、依然、Unsupported charset "'UTF-8'"というエラーが出ます。エンコード方法をShift_JISに変えてみても、Unsupported charset "'Shift_JIS'"という結果になっただけでした。一応コード張っておきます。

コード:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head><body>

<?php

	//入力内容の受け取り
	$message = $_POST["mess"];
	
	//入力内容をUTF-8にエンコード
	$enedMess = mb_convert_encoding($message, "UTF-8", "auto");
	
	//日本語に設定。エンコード方法をUTF-8に設定
	mb_language("ja");
	mb_internal_encoding("UTF-8");
	
	//コンテンツタイプをUTF-8のプレーンテキストに設定
	$header = "Content-Type: text/plain;charset='UTF-8'";
	//送信先のアドレス設定
	$addres = "mailaddres@gmail.com";
	//件名設定
	$subject = "テスト";
	
		//送信されたかどうかで処理を分ける
	if(ini_get("safe_mode")){
		//送信が成功した場合
		mb_send_mail($addres, $subject, $enedMess, $header);
		echo "送信成功";
	}else{
		//送信が失敗した場合
		mb_send_mail($addres, $subject, $enedMess, $header, '-f' . $addres);
		echo "送信失敗";
	}

?>

</body></html>
実行すると、
送信者:自分
件名:??????
内容:なし
というメールが送り返されてきます。

アバター
サウス
記事: 78
登録日時: 8年前
住所: 千葉
連絡を取る:

Re: 質問です。mb_send_mailを使おうとしたのですが・・・

#4

投稿記事 by サウス » 8年前

コードの方はUTF-8を使おうとしているみたいですが、メールに使用する文字コードはSJISの方が良かったと思います(理由は忘れましたが)

http://www.php.net/manual/ja/mbstring.s ... odings.php

マニュアルを参照した所、「Shift_JIS」は「SJIS」を使用するみたいですがどうでしょう?

アバター
MoNoQLoREATOR
記事: 284
登録日時: 8年前
住所: 東京

Re: 質問です。mb_send_mailを使おうとしたのですが・・・

#5

投稿記事 by MoNoQLoREATOR » 8年前

レスありがとうございます。

SJISにしてみましたが、変わりありませんでした。
ASCIIでも試してみましたが、不思議な事に
Unsupported charset "'ASCII'" - will be regarded as ascii
という警告文も出るんですよね。これは、アパッチの設定がダメなのでしょうか?
それと、エンコードなしで送ろうとしたのですが、それすらもできないようです。
今度、ヤフーメールで試してみようと思います。

返信

“PHPに可能性を無限大” へ戻る