いつもお世話になっております。
今回はサイト利用者が管理者などに質問をメールするホームを作っております。
利用者は名前、メールアドレス、質問内容を入力し、送信ボタンを押すと、自動的に管理者のメールアドレスに送信される。そういった流れです。
プログラムそのものにはミスはないのですが、ひとつ問題があります。
質問メールをgoogleのGmailに送信できるようにしているのですが、Gmailをメールサーバーにする設定がよく分かりません。
いろいろサイトを調べて「php.ini」内にある
SMTP=localhostをsmtp.gmail.comに変更したのですが、メールを送信するとウイルス対策ソフトMcAfeeが出てきて
「プロトコルエラーのためメールが送信されませんでした」と出てしまいます。
どうすればgmailにちゃんと送信されるのでしょうか?
解決しなければいけない問題は3つだと思います。
1,Gmailの設定方法。
2,メールソフト(outlook,thunderbirdなど)の設定方法(現在この二つのメールソフトを使用しています)。
3、php.iniの設定
特に下記の部分。
[mail function]
; For Win32 only.
SMTP = smtp...
smtp_port = 25

; For Win32 only.
sendmail_from = :::::@example.jp
もしお分かりになる方がいらっしゃいましたら、もしくは参考になるサイトをご存知の方がいらっしゃいましたらよろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (3件)

環境を推測します。


・自宅設置のWindowsをWebサーバーとして使っている
・そのWebサーバーにメール送信のPHPを設置している
・そのメールの送り先はgmail.comの特定アカウントに固定

この場合、php.iniでは、gmail.comのSMTPサーバーを使うのではなく、
その回線で使うべきSMTPサーバー(自宅設置ならプロバイダのSMTPサーバー)を指定します。
メールの送り先(Toアドレス)に合わせて、いちいちPHPが使うSMTPサーバーを切り替える必要はありません。

もし、自分のプロバイダのSMTPサーバーを使えない理由があり、どうしてもsmtp.gmail.comをSMTPとして使いたいというのなら、すでにご回答のある通り、mail()やmb_send_mail()でなくPEAR::Mailなどを使って
SSL+SMTP-AUTHで送るようする必要があります。

しかし、smtp.gmail.comを使ってメール送信するとFromアドレスを強制的にその認証アカウントのものに書き換えるので(SPAM踏み台防止のため)、
どちらにせよ、PHPでのメール送信で使うのには不向きです。
    • good
    • 0
この回答へのお礼

お礼が遅くなってしまって大変申し訳ございません。
superside0さんのご指摘どおり、自分の使っているプロバイダーのSMTPを使ったらできました。
プロバイダーにSMTPについてメールで質問したのですが海外(オーストラリア)の業者はどこも、仕事が遅く、やっと先週SMTPについて教えてもらったもので、お礼が遅くなっていまった次第です。本当にありがとうございました。

お礼日時:2008/05/11 23:03

> 1,Gmailの設定方法。


> 2,メールソフト

1, をご覧になって 2, のメールソフトでは送信が出来ているのですよね?
1, の設定方法について何か疑問はありませんでしたか?
(ほかのメール設定異って SSL だったとか、ポートの番号が
違っていたとか)

> 「プロトコルエラーのためメールが送信されませんでした」

はい、そうなります、理由は後述します。

> 3、php.iniの設定
> 特に下記の部分。
(以下割愛)

Gmail は SSL 接続して SMTP-AUTH (認証)が必要なのでそのような
方法では送れません。
ご自身のお使いのプロバイダの SMTP(メール送信サーバ)を使うか、
別の方法(PEAR::Mailなど)を使って送ります。

# 別途 PEAR::Mail などのパッケージが必要なのです。
# コマンドプロンプトを使って php のディレクトリの go-pear.bat を
# 使ってインストールします。

gmail PEAR::Mail - Google 検索
http://www.google.co.jp/search?q=gmail+PEAR%3A%3 …

# 他にご質問がある時は急いで締め切らないで頂けると助かります。
    • good
    • 0
この回答へのお礼

x415f484fさん
ご解答ありがとうございます。まだご解答していただいたのはためしてはいないのですが、前回の質問の際に大変失礼なことをしてしまったのでまずそちらのお詫びをしたいと思い書き込みました。本当に前回の質問では大変申し訳ございませんでした。確かにまだ質問を書いたまま質問を締め切ってしまいました。こちらの方も解決はしていないのですが、まずメール送信・STMPサーバーの問題が解決しないとなにも始まらないので、今回の質問をさせていただいております。

GmailだけでなくほかのSMTP(プロバイダのなど)いろいろもっと調べてみます。PEAR::Mailなどについてもよく読ませていただきます。

前回の質問で失礼なことをしたにも関らずまたご解答していただきありがとうございました。まずはご解答していただいたことをためしてみてまた、質問があれば補足のところに書き込みますのでよろしくお願いいたします。

お礼日時:2008/04/18 00:41

そのサーバの動作環境はどういうのですか?


貴方のパソコンで動かしているなら、ウイルス検査サービスを停止する必要があります。

この回答への補足

ご解答ありがとうございます。ご指摘の通り、ウイルス検査を停止したのですが実行したら
というエラーが出てしまいました。
SMTP server response: 530 5.7.0 Must issue a STARTTLS command first. c20sm18273232rvf.3
ウイルス検査を通さないとこういったエラーが出てしまうのでしょうか?
動作環境ですが、
OS windows xp
Xampp 2.5
PHP 5.25
thunderbird 2.0.0.12
です。

補足日時:2008/04/17 23:41
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qアマチュア無線機の送信改造について。

アマチュア無線機の送信改造について。

最近、違法と思われる電波を受信しているのですが、
アマチュア無線機の送信改造で出せる送信波の
周波数範囲を何方か御教えいただけませんか?。

出来れば具体的に
特に改造後、出せる

『最大の周波数』

を知りたいです。

市販のハンディー型や固定型を改造した場合に出せる
周波数帯で結構なので、
是非、ご解答宜しくお願い致します。

Aベストアンサー

具体的な回答は控えますが、無線機は知識が有れば周波数の出せる範囲は比較的簡単にかえられます。しかし、アマチュア無線家ならまずそのような事はしないとおもいますし、アマチュア無線をされている方ならそのような電波を受信すれば仲間と連絡を取り合い送信している場所をも容易に突きとめたりします。 一般の方ではないでしょうか?昔はCB無線を楽しまれていた方々が違法な出力「通称下駄を履かせる」で周囲に迷惑を掛けていましたが・・・

>『最大の周波数』
文面から察するに最大の周波数?→最大出力の事では無いですか?
 無免許での使用や不正改造に繋がる回答は避けたいと思います。
 
 違法と思われる内容の補足説明等が有れば対策が投稿されると思います。

 

QPHPとPostgreSQLを使用した勤務管理

こんにちは、みなさん宜しくお願い致します。

現在PHPとPostgreSQLを使用して勤務管理を作成しているのですが
またまた躓き自分ではこれ以上解決出来なくなったので、再度こちらにて質問させて頂きます。

※自分が行おうとしている処理一覧です
下記のようなレアウトのテーブルがあります。
----------------------------------------
日付(曜日) | 労働時間 | チェックボックス | 登録ボタン
 当月15日
   |
 翌月15日
----------------------------------------
となっております。

1:日付表示は教えて頂いた処理で実現する事が出来ました。
<?php
$now = time();
$year = date('Y', $now);
$month = date('m', $now);
$day = date('d', $now);
if ($day < 15) $month--;
$numOfDays = date('t', mktime(0, 0, 0, $month, 1, $year));
for ($d = 0; $d < $numOfDays; $d++){
echo date("Y-m-d(D)", mktime(0, 0, 0, $month, 15+$d, $year)). "\n";
}
?>
2:労働時間を入力し、登録ボタンを押せば日付と労働時間がDataBaseに登録される様にしたい

3:出来るならば登録をチェックボックスが押されている項目だけをDatabaseに登録するようにしたいのです。

しかし自分が試した限りではcheckboxを押した項目だけを取得させDatabase
に登録させるという処理が出来ませんでした。
それどころか、労働時間を入力し登録ボタンを押せば労働時間を入力した
日付と労働時間がDataBaseに登録される処理すら出来ない状態です。

ご教授をお願いしたく質問させて頂きました。
よろしくお願いします。

こんにちは、みなさん宜しくお願い致します。

現在PHPとPostgreSQLを使用して勤務管理を作成しているのですが
またまた躓き自分ではこれ以上解決出来なくなったので、再度こちらにて質問させて頂きます。

※自分が行おうとしている処理一覧です
下記のようなレアウトのテーブルがあります。
----------------------------------------
日付(曜日) | 労働時間 | チェックボックス | 登録ボタン
 当月15日
   |
 翌月15日
----------------------------------------
となっております。

1:日...続きを読む

Aベストアンサー

$youbi = $weekday[$w];

echo "<TR>
<TD>$date</TD><TD>$youbi</TD>
<TD><INPUT TYPE='text' NAME='work_time'.$d SIZE='10'VALUE='work_time'.$d></TD>
<TD><INPUT TYPE='checkbox' NAME='work_check'$d></TD>

のところですが、

$youbi = $weekday[$w];
$ymddate = date("Ymd", mktime(0, 0, 0, $month, 15+$d, $year));

echo "<TR>
<TD>$date</TD><TD>$youbi</TD>
<TD><INPUT TYPE='text' NAME='work_time[$ymddate]' SIZE='10'></TD>
<TD><INPUT TYPE='checkbox' NAME='work_check[]' VALUE='$ymddate'></TD>

とかにしておくと、ユーザがチェックした日付(yyyymmdd形式)が、$_POST['work_check']の中に配列で入ります。

労働時間のデータは、例えば2007年04月10日のデータは、
$_POST['work_time']['20070410']とすれば取得できます。

なので、以下のようにすればINSERT用のデータ(チェックボックスがONになっている分)を得られます。
foreach ($_POST['work_check'] as $tmp) {
echo "INSERT用のデータです ";
echo "日付 $tmp : 労働時間 ". $_POST['work_time'][$tmp]. "\n";
}

具体的なSQLのところは、工夫してみてください。

$youbi = $weekday[$w];

echo "<TR>
<TD>$date</TD><TD>$youbi</TD>
<TD><INPUT TYPE='text' NAME='work_time'.$d SIZE='10'VALUE='work_time'.$d></TD>
<TD><INPUT TYPE='checkbox' NAME='work_check'$d></TD>

のところですが、

$youbi = $weekday[$w];
$ymddate = date("Ymd", mktime(0, 0, 0, $month, 15+$d, $year));

echo "<TR>
<TD>$date</TD><TD>$youbi</TD>
<TD><INPUT TYPE='text' NAME='work_time[$ymddate]' SIZE='10'></TD>
<TD><INPUT TYPE='checkbox' NAME='work_check[]' VALUE...続きを読む

Q受信機能だけの無線機ってありますか?

受信機能だけの無線機ってありますか?

受信機能だけの無線機だと免許は要りませんよね?

Aベストアンサー

広帯域レシーバーですね。
無線機器メーカーからも製品が出ています。
ただ、何ヶ所か受信出来ない周波数が設定されていますが、広い受信域があります。
当然免許は要りませんが、得られた情報は基本的に人には話せませんから注意が必要です。

QArGoMailサーバーを使用してphpでメール送信

ArGoMailサーバーを使用してphpでメール送信させるにはどうすればよいか教えてください。各々の設定を教えてください。
webサーバーはapache2.0、php4.4、osはwin98seです。

Aベストアンサー

#私ならSMTPにISPのメールサーバを指定しちゃいますけど(苦笑

perlで動くのであれば、php.iniでSMTPをコメントアウトしてUnix用のsendmail_path(送信用プログラム)を指定してやればどうでしょう。Perlで指定したのと同じpathでOKだと思います。

Q無線機から受信機へ

こんにちは。
アマチュア無線の免許を取ろうと思っています。
普通の交信のほかに、旅行に行ったときなどに免許を持っていない友達に情報を送りたいと思っています。
そこで、無線機から受信機に対して送信することは可能でしょうか。
また、法律的にも大丈夫でしょうか。
もし可能であれば、そのときの喋り方も教えていただけると助かります。

Aベストアンサー

アマチュア無線の用途は送受信機を所有している人同士の「雑談」に限定されています
「業務連絡」「情報提供」「宣伝行為」など禁止事項が沢山あります
アマチュア無線士以外の人に情報を提供することは「放送免許」がなければ出来ません

QPHPでメール送信する際、SMTPを利用するメリッ

PHPでメール送信する際、SMTPを利用するメリットについて教えてください。

ログイン認証でメールを送信したいのですが、
SMTPを利用した方がよいか、判断がつきません。

例えば、
http://www.sapphirus.biz/php/sformmail2/
http://www.sapphirus.biz/php/sformmail2s/
では、SMTPの方は「認証」が必要なので、
それだけ大変そうなのですが、

SMTPを利用する、しない場合の、
「メリット」「デメリット」を教えてください。

また、SMTPを利用しないやり方(メールアドレスを書いてmail関数を利用)は、
何方式と呼ぶのでしょうか? WEBメール方式?

環境) レンタルサーバ
現状) SMTPを利用せずにメールは送れるのですが、
   どういう仕組みで届くか理解できてません

Aベストアンサー

前に回答した者です。

> そうすると、PHPというかメールの仕組み自体の話で恐縮なのですが、
「何も認証しないで送る方法」というのは、
いきなり、SMTPでメールを送りつけて、
そのメールアドレスからメールサーバ(?)を割り出して、
もし、アドレスが違っても、エラーは返ってこない、
みたいな流れになるのでしょうか?


ほぼほぼその通りです。
認証なしに、@以降のドメインに向けてメールを送りつけます。
ちなみに認証する方法をとっても、自分が発出するメールサーバーに対しての認証です。

エラーがあった場合は、発出したメールサーバーに対してエラーが返ってくるといった感じです。

でも発出するメールサーバーも本来のメールサーバーアドレスでない定義ができるはずなので、その場合はネットの藻屑となります。(戻り先がないので)

Q業務用無線機での受信

業務用無線機で受信したいのですが、法に触れないでしょうか?
あと、業務機をアマ機として使用することはできないでしょうか?

Aベストアンサー

>業務用無線機で受信したいのですが、法に触れないでしょうか?
受信だけなら、受信内容を内容を漏らしたり、「窃用」したりしなければ、法には触れないと思います。

http://www.fujichan.jp/atc/atc_b04.html

>業務機をアマ機として使用することはできないでしょうか?
アマチュア局としてちゃんと無線局免許を受ければ使用できることになりますが、機器認定を受けていなかったりするわけですから、現実的ではないと思います。

QPHPで外部SMTPサーバーを利用したメールの送信方法

PHPで外部SMTPサーバーを利用したメールの送信方法を調べています。
過去の事例からPEARを使用すれば良いことが分かりPEARをインストールしたのですが、
実行すると「$smtp = Mail::factory("smtp", $params);」の所で、
「Fatal error: Class 'Mail' not found in C:\Inetpub\wwwroot\Mail.php on line 14」と
なってしまいます。

PEARのインストール後はサーバーの再起動は行っております。

※環境
OS:WindowsXP Pro SP3
WebServer:IIS
PHP:Ver.5.2.6

※PEARのインストール状態
C:\Documents and Settings\horie>C:\php\pear list
PHP Warning: Module 'mbstring' already loaded in Unknown on line 0
INSTALLED PACKAGES, CHANNEL PEAR.PHP.NET:
=========================================
PACKAGE VERSION STATE
Archive_Tar 1.3.2 stable
Console_Getopt 1.2.3 stable
PEAR 1.7.1 stable
Structures_Graph 1.0.2 stable

※Mail.php
<?php
$params["host"] = "smtp.mail.yahoo.co.jp";
$params["auth"] = true;
$params["username"] = "AAA-BBB";
$params["password"] = "9999";
$sender = "aaa**@yahoo.co.jp";
$recipient = "bbb**@yahoo.co.jp";
$subject = "TEST";
$subject = mb_convert_encoding($subject, "jis", "sjis");
$subject = mb_encode_mimeheader($subject, "jis");
$message = "テストメッセージ";
$message = mb_convert_encoding($message, "jis", "sjis");
require_once 'Mail.php';
$smtp = Mail::factory("smtp", $params);
if (PEAR::isError($smtp)) die($smtp->getMessage());
$headers['From'] = $sender;
$headers['Subject'] = $subject;
$headers['MIME-Version'] = "1.0";
$headers['Content-Type'] = 'text/plain; charset="iso-2022-jp"';
$headers['Content-Transfer-Encoding'] = "8bit";
$headers['X-Mailer'] = "PHP PEAR/Mail(smtp)";
$error = $smtp->send($recipient, $headers, $message);
if (PEAR::isError($error)) die($error->getMessage());
exit("メッセージを送信しました");
?>

PHPで外部SMTPサーバーを利用したメールの送信方法を調べています。
過去の事例からPEARを使用すれば良いことが分かりPEARをインストールしたのですが、
実行すると「$smtp = Mail::factory("smtp", $params);」の所で、
「Fatal error: Class 'Mail' not found in C:\Inetpub\wwwroot\Mail.php on line 14」と
なってしまいます。

PEARのインストール後はサーバーの再起動は行っております。

※環境
OS:WindowsXP Pro SP3
WebServer:IIS
PHP:Ver.5.2.6

※PEARのインストール状態
C:\Documents and...続きを読む

Aベストアンサー

>require_once 'Mail.php';
自分がMail.phpなのに自分自身を呼んでるのですか?

Mailクラスにfactory関数は宣言されていますか?

Qハンディ無線機(受信機)について

こんにちは。はじめまして。
愚問かもしれませんが、教えて下さい。

私は、アマチュア無線の資格も持っておりませんが
都内23区で比較的住宅が密集しているところに居住しています。
BGMがわりに、航空無線、タクシー無線を聞きたいと思っています。
盗聴等の犯罪行為のためではないので、コードレス電話や携帯電話は聞けなくても全くかまいません。

現在所有しているラジオは、ソニーICF-SW07
というラジオで、同梱されているアクティブアンテナ
を接続して、アマチュア無線やタクシー無線の受信を試みているのですがなかなかうまくいきません。
SSB機能もちゃんと使っているのですが・・・。

前置きが長くなりました。
つまり、私が所有しているソニーのラジオと
ハンディ無線機とでは、タクシー無線を受信する際、どちらがよいのでしょうか?
何か私の努力不足で、現在所有しているラジオで
受信できないのか、それとも、ハンディ無線機の方が一般的によく受信できるものなのでしょうか。

ハンディ無線機の場合、外にアンテナをはることなく
比較的どこでも受信できるようなことを記載されている文章をよく目にします。

周りに無線のことをよく知っている方がいないため
上記のような愚問で申し訳ありません。
何卒よろしくお願いいたします。

こんにちは。はじめまして。
愚問かもしれませんが、教えて下さい。

私は、アマチュア無線の資格も持っておりませんが
都内23区で比較的住宅が密集しているところに居住しています。
BGMがわりに、航空無線、タクシー無線を聞きたいと思っています。
盗聴等の犯罪行為のためではないので、コードレス電話や携帯電話は聞けなくても全くかまいません。

現在所有しているラジオは、ソニーICF-SW07
というラジオで、同梱されているアクティブアンテナ
を接続して、アマチュア無線やタクシー...続きを読む

Aベストアンサー

先ず貴方のレシーバーの上限は30Mhzです

タクシー無線は 350MHz・450MHzです、聞けません。
http://utilistenlife.bravepages.com/freq-taxi.htm


アマチュア無線も遠距離なら28Mhzでありますが、
24・21MhzはCW系統だから聞こえない。
ローカルで使用しているのは50Mhz・144MHz・430MHz帯ですから、やっぱり聞こえない。

貴方のレシーバーで聞こえる現在のアマチュア無線の帯域、でもHFは難しいですよ。
 7.000MHz~7.100MHz
 10.100MHz~10.150MHz
 14.000MHz~14.350MHz
 18.068MHz~18.168MHz
 21.000MHz~21.450MHz
 24.890MHz~24.990MHz
 28.000MHz~29.700MHz

QPHPを利用してメール送信時したときのSubjectの文字化け

PHPを利用し携帯電話を使って、件名(Subject)と本文を入力して送信した後、送信元のアドレスに入力した件名と本文を返信するプログラムを作成しています。
しかし、件名の返信内容が送信内容とは違う形で返ってきます。(本文はそのまま返ってきます)
例:件名「あ」、本文「か」と入力し送信
  返信内容→件名「=?ISO-2022-JP?B?GyRCJCIbKEI=?=」
       本文「か」

現在使用しているPHPのバージョンは 4.4.6 です。
「mb_convert_encoding」や「mb_encode_mimeheader」といった関数も使用しているのですがうまくいきません。
どのように記述すればよいでしょうか?
解答お待ちしています。

Aベストアンサー

$title = mb_encode_mimeheader(mb_convert_encoding("【タイトル】", "JIS", "auto"), "JIS");

ではどうでしょうか?
携帯向けではなく一般的なメール送信をいくつか作成してますが、これでmailで送信して文字化けは特にしてません。


人気Q&Aランキング

おすすめ情報