▼ 基本的な使い方
必ず、初期設定は行って下さい。
以下のようにします。
サーバーとの接続は、時間のかかる処理です。再び、送信する用事がある場合は、接続を切らずにおいたほうが高速に動作します。
以下のようにします。
$smtp -> to( 'address@example.com' ); $smtp -> data( 'ヘッダー + 本文' ); $smtp -> send();注意点
- dataは、ヘッダーも含んだすべての本文を指定します。ヘッダーと、本文の間は、改行コード(CRLF)で区切るようにしてください(これは、SMTP規格の仕様です)。
- したがって、toヘッダも自分で作成する必要があります。Fromヘッダだけは、ない時は、ほんとの場合、MTAが自動的につけてくれます(ご自分で作ったtoヘッダの内容と、$smtp->to() で指定する受取人は全く別の概念です。)。
- 宛先のアドレスは、アドレスのみを指定してください。name<address@example.com>は使用できません。
複数宛先の指定の仕方
$to = array( 'address1@example.com', 'address2@example.com', 'address3@example.com',); $smtp -> to( $to );
接続を持続する
送信の前に次のようにすると、送信が終わっても、サーバーとの接続を切らずに維持したままにします。サーバーとの接続は、時間のかかる処理です。再び、送信する用事がある場合は、接続を切らずにおいたほうが高速に動作します。
$smtp -> continueConnect( true );又は、初期設定にて次のように指定することもできます。
$param = array( 'host'=>'smtp.example.com', 'port'=> 25 , 'from'=>'from@example.com', 'protocol'=>'SMTP', 'continue'=> true, ); $smtp = & new QdSmtp($param);または
$smtp = & new QdSmtp( true ); (この場合は、パラメータは、$smtp->server()で指定しなければなりません。)
- TB-URL http://hal456.net/qdsmtp/04/tb/
-
▼
使い方(Howto)
Qdsmtp-Simple SMTP Mailer for PHP ■Qdsmtpの使い方(目次)共通の初期設定(SMTPサーバー設定)簡単な使い方(mail関数ライク)玄人的な使い方(高速動作)オプションログ機能■ダウンロードダウンロードページ
-
▼
Qdsmtpとは
Qdsmtp-Simple SMTP Mailer for PHP PHPにおいて標準のmail()関数が使用できない環境であっても、手軽にメールを送れるようにするライブラリです。具体的には、外部SMTPサーバーに接続してメールを送ります。localhostにSMTPサーバーがある場合は、mail()関数よりも早いかもしれ...
# めるばぐ 2009年02月27日(金) 午後5時28分
非常に使いやすいです。
ただ、ほげ<hohoge@hoge.com> 形式でToに送りたいのだが
2個同じアドレスが追加されてしまいどうしたら良いかわからないです。
サンプル付けますが、文字化けもせず行くですが、to2個アドレス追加されてしまう。
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/plain; charset={$encodeTo}' . "\r\n";
$headers .= "Content-Transfer-Encoding: 7bit\r¥n";
$headers .= "To: ほげ <hoge@hoge.com> \r\n";
$headers .= "From: ほげfrom <from@hoge.com> ";
$rt=$smtp->mail("hoge@hoge.com", $subject , $body, $headers);
# めるばぐ 2009年02月27日(金) 午後5時48分
2個Toに書き込まれてしまう不具合はこんな感じ
クラスを継承してオーバーライド逃げました。
でもこの対応は元クラスでもしてほしいですな。
一応ご参考に
//QdSmtpのカスタマイズ
class MyQdSmtp extends QdSmtp {
//-----------------------------------
// Override
//-----------------------------------
function makeData( $to , $subject , $message , $header=null , $option=null ){
$recip = array();
$recip = array_merge( $recip , $this->extractAddr( $to ) );
$recip = array_merge( $recip , $this->extractAddr( $this->extractHeader('CC' , $header) ) );
$recip = array_merge( $recip , $this->extractAddr( $this->extractHeader('BCC' , $header) ) );
$this->recipient( $recip );
//delete !!
//$head = trim( 'To: ' . $to . $this->smtpLFC . 'Subject: ' . trim( $subject ) . $this->smtpLFC . trim($header) );
//Toが二回送信されないように対応
$head = trim( 'Subject: ' . trim( $subject ) . $this->smtpLFC . trim($header) );
return $this->data = $head . $this->smtpLFC . $this->smtpLFC . $message ;
}
}
# 本文が送られてきません。 2010年03月26日(金) 午後5時33分
honmaと申します。
テストさせていただいているところですが本文の部分が送られてこないので困っています。
$mail_data = file_get_contents("php://stdin");
$param = array(
'host' => SMTP_SERVER ,
'port' => SMTP_PORT ,
'from' => $Mail['from'] ,
'protocol' =>'SMTP_AUTH' ,
'pop_host' => SMTP_SERVER ,
'pop_user' => SMTP_USER ,
'pop_pass' => SMTP_PASS ,
);
$smtp = new QdSmtp($param);
$smtp -> to( $meladd );
$smtp -> data( $mail_data );#'ヘッダー + 本文'
$smtp -> send();
途中の処理はありますが基本的にはqmeilでPHPに転送して設定によってメールを転送したいのですが
携帯のメールなので中身をいじりたくなかったので単純にそのまま転送したかったのですが本文が送られてこないのです。