PHPのsendmailにて送信元を変更させたいのですが
現在
mb_send_mail($sendto,$subject,$text,"Form:送信元アドレス")
のようにしているのですが、反映されずサーバーのアドレスにて送信されてしまいます。
ini_set関数にてセットしてみても同じでした。
メールが返信された場合に当方のアドレスまで返信されるように当方のアドレスを送信元表示させたいのですが・・
sendmailの設定を変える必要があるのでしょうか?
なにか良い方法はありませんか?

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

A 回答 (3件)

使い方には問題のないような気が…



>mb_send_mail($sendto,$subject,$text,"Form:送信元アドレス")

"Form" → "From" の綴りの間違いだけだったりして?
    • good
    • 1
この回答へのお礼

綴り間違いでした・・・・・・・・・><
ご指摘いただきましてありがとうございました!!

お礼日時:2005/04/22 16:46

-------------------------sendmail.php


<?php
$to = "test@test.jp";
$from = "送信者名 <sample@test.jp>";
$rp = "admin@test.jp";
$org = 'テスト株式会社';

$head = '';
$head .= "Content-Type: text/plain \r\n";
$head .= "Return-Path: $rp \r\n";
$head .= "From: $from \r\n";
$head .= "Sender: $from \r\n";
$head .= "Reply-To: $rp \r\n";
$head .= "Organization: $org \r\n";
$head .= "X-Sender: $from \r\n";
$head .= "X-Priority: 3 \r\n";

$subject = "こんにちは、テスト株式会社です";
$body = "本日は晴天なり
さて先日は有難うございました";

mb_send_mail($to, $subject, $body, $head ,"-fsample@test.jp" ) ;
?>
-------------------------

こんな感じも可能


補足
sendmailのバージョンによっては-fオプションをつけると
X-Authentication-Warningがヘッダーに付く場合があるのでなんとなく気持ち悪い事があるので注意です
これは、-fオプションをつかって、送信元を書き換えられているが、信用できるとは限らない
っといいう意味で、まぁ、送信元を偽造するspam対策って感じ。


回避の仕方は有りますが、sendmailの設定を直接触れる権限がないとムリです
    • good
    • 0
この回答へのお礼

X-Authentication-Warningの表示がヘッダーにも表示されず無事解決することができました。
ヘッダーを直接書き換えられるのですね。
大変勉強になりました。ありがとうございました。

お礼日時:2005/04/22 16:50

メールヘッダだけでいいんだったら、


mb_send_mail($sendto,$subject,$text,"From:送信元アドレス")
でいいんだけど、エンベロープも変更する必要があるので、正解はこれ。
mb_send_mail($sendto,$subject,$text,"From:送信元アドレス", "-f送信元アドレス")
    • good
    • 0
この回答へのお礼

エンベローブも変更する必要がありましたので
大変助かりました!どうもありがとうございます!
無事解決しました!

お礼日時:2005/04/22 16:48

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

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

このQ&Aを見た人はこんなQ&Aも見ています

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

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

Qメール送信できません(泣)この文字はどういう意味?

すみません。

私はドコモのスマホで、相手はおそらくソフトバンクのiphoneなのですが
(変わっているかもしれないのですが)

相手のアドレスを入れても、
「送信不可能な文字が含まれています。メール設定の送信文字コードを確認してください」と
出てしまいます。


これはどういう意味ですか?

本当に困っています。
どこがアドレスが違うのでしょうか?

ちなみに今までのあいてのアドレスの@よりあとは
「@i.softbank.jp」でした。。


これは、今は違うのでしょうか???
ドコモに変わったということでしょうか?

教えてください。

Aベストアンサー

ANo.3 の回答ですが、機種依存文字を書いたら通常の文字表現に置き変わって投稿されてしまいました^^;

まあ、先ほどの「機種依存文字チェッカー」のページに画像で記載がありますので、ご参考まで。

Q$str=mb_ereg_replace('goo','グッド',$str);

によって
$strの中の'good'を'グッド'に変更したいのですが
'good'は大文字と小文字を区別しないようにしたいのですがどうしたらいいでしょうか?
例えば
'goOd'も'グッド'にしたいのです。
PHPマニュアルには詳しい使い方が載っていないので困っています。

Aベストアンサー

大文字小文字を無視するなら
mb_eregi_replace
では?

参考URL:http://jp2.php.net/manual/ja/function.mb-eregi-replace.php

Qam送信機について。 周波数逓倍回路で周波数をn倍にする意味がわかりません。 なぜn倍して高周波を

am送信機について。

周波数逓倍回路で周波数をn倍にする意味がわかりません。
なぜn倍して高周波を取り出さなくてはならないのでしょうか?

教えてください( ̄^ ̄)ゞ

Aベストアンサー

No1、2 さんの難しいが正しくて、
No4 さんが更に水晶について解説されています。
補足すると、低い発振周波数の水晶の方が安い、と言う面もあります。
例えば、USB2.0の480Mbps(480MHz)は、(メーカーによって違いますが)
12MHzとか6MHzの水晶から作ってます。

No3さんの振幅変調(AM)だからは、間違い。
周波数変調(FM)も逓倍していますし、
USBや、HDMI、PCのCPUクロックなども逓倍で、
逓倍では無いものの方が珍しいです。
逓倍しない代表例は、時計のクロック。

Q$_POST,$_GETの値が空...

はじめまして。まだまだPHP初心者なのですが..

PHP Ver 4.3.2

にて、$_POST 、 $_GET の値がどうしても
受け取れないのですが、何か設定がおかし
いのでしょうか...

ちなみに、register_global は OFF です。


GET は

URL http://***.com/xxx.php?ID=aaa

echo $_GET["ID"];
print_r ( $_GET );


POSTは、通常通り form の method を POSTに設定して
受け取っていますが、どちらにしても結果は、何も表示されません。

どなたか解決方法をご教授下さい。
また、既出でしたら申し訳ございませんがご指摘下さい。

Aベストアンサー

サーバ移行と言う事で、
恐らくサーバの設定が異なるせいではと思いました。

試しに
$HTTP_GET_VARS
を使ってみてはいかがでしょうか?

また一度
print_r($GLOBALS)
を行なって値がどこに行っているのか
見てみるのも良いかもしれません。

Q相手から送信されてきたIPアドレスの意味は?

 こんばんは。

 WEB等にアクセスすると、あなたのIPアドレスは、****.****.****.****と4桁の数字で送信されてくる時がありますが、
これは、どのようにして分かるのでしょうか。
よくIPアドレスを抜かれるとかという言葉も聞くのですが。

 また、私の環境では、プロバイダ経由でWEBに接続していますが、
本などには接続の度にIPアドレスは
変わると読んだことあります。
 その場合には、この送信されてきたIPアドレス自体に意味がないような気がするのですが、本当のところは
どうなのでしょうか。
よろしくお願いします。

Aベストアンサー

少しフォローも含めて、コメントします。

IPアドレスは、電話番号に相当するものになります。
電話と違うのは同時に何人もの人と同時に通信できることです。
この通信を区別するために、IPアドレスを使います。
どのIPアドレスから来た通信なのか、どのIPアドレスに返答すればいいのかを知るために、IPアドレスは必ずわからないといけません。

>接続の度にIPアドレスは変わる
この認識は正しいです。
常時接続であっても、PPPoEなどの認証を用いるサービスではIPアドレスは変わります。
(ずーっと通信がある場合には実質変わらないですが)
プロバイダでは、認証したユーザとそのときに割り振ったIPアドレスを記録します。
このことで犯罪などで調査が必要な場合には、誰からの通信化を特定することが可能になります。

先の方の回答で、MACアドレスも知られるとのことですが、
同じLAN内での通信ではないので、MACアドレスを通知することは意味がありません。
アプリケーションによっては通知することも可能ですが、ブラウザやメーラーからは通知することはありません。

少しフォローも含めて、コメントします。

IPアドレスは、電話番号に相当するものになります。
電話と違うのは同時に何人もの人と同時に通信できることです。
この通信を区別するために、IPアドレスを使います。
どのIPアドレスから来た通信なのか、どのIPアドレスに返答すればいいのかを知るために、IPアドレスは必ずわからないといけません。

>接続の度にIPアドレスは変わる
この認識は正しいです。
常時接続であっても、PPPoEなどの認証を用いるサービスではIPアドレスは変わります。
(ずーっと通...続きを読む

Qpreg_match( '/^(\D+)(\d*)$/' , $変数 , $regs )

if( ! preg_match( '/^(\D+)(\d*)$/' , $変数1 , $regs ) )
{echo ( 'invalid dirname: ' . htmlspecialchars( $変数1 ) );}
$変数2 = $regs[2] === '' ? '' : intval( $regs[2] ) ;

正規表現だと思うのですが、どういう意味か教えてください。

□分からないなりに考えてみました…
▽1行目
$変数の内容が、'/^(\D+)(\d*)$/'にマッチしなければ、$regs へ代入。
▽2行目
マッチしていた場合は、htmlspecialchars関数を実行した後、'invalid dirname: '+その結果を表示する。
▽3行目
$regs配列変数の1番目を、何かして、$変数2 へ代入する。

……誰か教えてください…。

Aベストアンサー

>どこら辺に問題ありそうでしょうか?

まずpreg_matchで$regsを生成していますが、マッチしないケース
すなわち「数字からはじまる文字列」の場合、$regsが未設定になります。
したがって$regs[2] === ''で評価すると$regsが未設定エラーになります。
またエラーレベルを下げた場合でも、$regs[2] === ''はfalseなので
数字ではない文字列をintvalで評価するため$変数2には0が代入されます。

やはりif分岐である程度場合分けをしっかりしてやらないといけないでしょう。
総じて$変数1に代入される文字列の想定を広げて、チェックしてやる必要があります。

また、仮にデータがきちんと通ったとして、$変数2は空文字か数字という
データ型が確定しないフローになっています
たしかにPHPは変数定義がいい加減ではありますが、あまりなんでも
かんでも入れればいいというものではありませんので、ある程度
変数の型が一律になるような工夫が必要だとおもいます。

Q著作権法に言う「公衆送信」の意味

著作権法の第2条の七の二に、次の『 』内のようにあります。

『公衆送信 公衆によつて直接受信されることを目的として無線通信又は有線電気通信の送信(電気通信設備で、その一の部分の設置の場所が他の部分の設置の場所と同一の構内(その構内が二以上の者の占有に属している場合には、同一の者の占有に属する区域内)にあるものによる送信(プログラムの著作物の送信を除く。)を除く。)を行うことをいう。』

このうちの「(電気通信設備で、その一の部分の設置の場所が他の部分の設置の場所と同一の構内(その構内が二以上の者の占有に属している場合には、同一の者の占有に属する区域内)」の部分(以下、この部分を「公衆送信但し書き」と言います)は、何のためにあるのでしょうか。言いかえると、公衆送信但し書きがなくても著作権法は完全無欠で何も困ることはないと思えるのですが、公衆送信但し書きがないと、何が困るのでしょうか。言いかえると、これは著作権法においてどんな役に立っているのでしょうか。

Aベストアンサー

ちょっと待ってください。
もう一度落ち着いて質問者さんの言う
公衆送信権但し書きのカッコの数を数えてみてください。

>(電気通信設備で、その一の部分の設置の場所が他の部分の設置の場所と同一の構内(その構内が二以上の者の占有に属している場合には、同一の者の占有に属する区域内)にあるものによる送信(プログラムの著作物の送信を除く。)を除く。)
までが但し書きになるはずです。

但し書きの範囲を正しく読み取ればその意味は分かると思いますが
但し書きの部分まで公衆送信権に含まれてしまうと
たとえば、一般に著作権者の経済的利益を不当に害する目的でない
小規模ネットワークにおけるファイルの共有まで
著作権の侵害にあたる可能性が発生してしまいます。
ただし、プログラムの著作物に関してのみは
人数分のライセンスを取得せず一本だけ購入したプログラムを
サーバー等にいれておいて複数のPCからアクセスしても
同一構内であれば問題がないことになってしまうために
但し書きから除外されています。

Q$str=preg_replace('/\u3000/','  ',$str);

によってutf-8の空白文字をhtmlの空白文字に変換しようとしたのですがエラーになります
どうしたらいいのでしょうか?

Aベストアンサー

>そもそも?のところにコード表現で空白文字を入力する手段はないのでしょうか?
\xE3\x80\x80
で一応いいかと思いますが…

Q送信エラーの意味

海外のホテルにメールで質問したのですが。次のメッセージが返ってきてうまく送れません。


This mail message has exceeded the maximum number of hops.

The requested destination was
********           (←ここは送信先のアドレス)

The message headers and first 50 body lines follow:



これはどういう間違いがあったためでしょうか?単語単語の意味は辞書で調べられますが、メールについての技術的な知識がないのでよく分かりません。
よろしくお願いします。

Aベストアンサー

今どき、あるんですねぇ。このエラー。
これだけwwwが普及したので、絶滅したかと思いました。

「メールのサーバー転送回数が多すぎ」の意味で、転送の履歴部分が長くなりすぎてイヤン。と言ってますね。

メールの転送ルートがループしている事も考えられますが、とりあえずは、管理者にヘッダーを送って「ルーティング設定を確認してくれ」と言うのがいいかと・・

Q$_SERVER["HTTP_HOST"]と$_SERVER["SERVER_NAME"]の違い(というか意味合い)は?

phpのバージョンは、5.1.6で、OSのバージョンはCentOS4.4です。

お聞きしたいのですが、
$_SERVER["HTTP_HOST"]と$_SERVER["SERVER_NAME"]の違い(というか意味合い)はなんでしょうか?

phpinfoでみても、同じの場合したことがみたことがないもので。

ご存じの方いらっしゃいましたら、お教えいただければ幸いです。

よろしくお願いいたします。

Aベストアンサー

$_SERVERはサーバーの環境変数やPHPの情報を保存した配列です。
$_SERVERのうち、環境変数はgetenv()でも取得できます。

$_SERVER["SERVER_NAME"]で取得できる名前は
Apacheの場合はhttpd.confで、
UseCanonicalNameがOnになっているときに、ServerNameで指定された値が使われます。
UseCanonicalNameがOffになっていると、ドメイン名やIPアドレスになります。
UseCanonicalNameがOffになっていて、http://127.0.0.1:8001/のようにポート指定でアクセスした場合は、ポート番号は除かれます。

HTTP_HOSTはHTTPでアクセスしたときのホスト名、つまりドメイン名+ポート番号がそれに当たります。
(厳密には違うかも知れませんが、、、)
http://www.ietf.org/rfc/rfc2616.txt

VirtualHostを使ってポート指定でアクセスすると違いが出ますが、
デフォルトでUseCanonicalNameはOffになっていますし、ホスティングサービスではOnにする理由もありません。
http://httpd.apache.org/docs/2.0/ja/mod/core.html#usecanonicalname
(「これが有用な場合の例は、」の段落参照。主にイントラネット向け?)

、、、と書くのはいいとして、私自身、UseCanonicalNameやホスト名の意味や使い方をわかっていません。
こうすれば違いが出るということだけですが、
ご参考まで。

$_SERVERはサーバーの環境変数やPHPの情報を保存した配列です。
$_SERVERのうち、環境変数はgetenv()でも取得できます。

$_SERVER["SERVER_NAME"]で取得できる名前は
Apacheの場合はhttpd.confで、
UseCanonicalNameがOnになっているときに、ServerNameで指定された値が使われます。
UseCanonicalNameがOffになっていると、ドメイン名やIPアドレスになります。
UseCanonicalNameがOffになっていて、http://127.0.0.1:8001/のようにポート指定でアクセスした場合は、ポート番号は除かれます。

HTTP_HOST...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング