コアポイント
mail()
関数は、電子メールの送信に使用されます。簡単なメールの場合、受信者のアドレス、主題、および電子メールの本文の3つのパラメーターのみが必要です。 興味深い返信アドレスを含むメールを友人に送信するためにPHPでスクリプトを書きたいかもしれませんが、もっと意味のあることがあります!もちろん、他の理由があるかもしれません:たとえば、問題を通知するためにCronジョブが必要な場合があるか、ユーザーがスクリプトを開始したときに通知されるか、メッセージを転送するための連絡先フォームがあります。そして、それはとても簡単です!ほとんどの場合、PHPのインストールはメールを送信できます。共有ホスティングを使用している場合、またはAPT-Getのようなパッケージ管理システムを使用してPHPをインストールしている場合、おそらくすでにセットアップされます。 SourceからPHPをコンパイルしたり、WindowsでPHPを実行したりする場合にのみ、追加の構成を心配する必要があります。どちらの場合でも、あなたを助けるためにオンラインで利用できる多くのリソースがあります。これはこの記事の範囲を超えているので、私はあなたがそれをセットアップしたと思います。そうでない場合、Googleはあなたの友達になります。
スーパーベーシックの例
非常に簡単なメールを送信するには、コードは次のとおりです。実際には、基本的なプレーンテキストメールを送信することがすべてです(PHPを適切に構成する方法については、Googleをもう一度確認してください)。次に、これがスクリプトでどのように見えるか見てみましょう。たとえば、クエリが失敗するたびにスクリプトに電子メールを送信したいとします:
<?php mail($address, $subject, $message); ?>
クエリ実行に予期せぬエラーがいくつかある場合、どのスクリプトにエラーがあり、何がエラーがあるかを知らせるメールが届きます。
<?php $query = "SELECT left_arm AS arm_in, right_leg AS leg_in, front_head AS head_in FROM hokey_pokey WHERE its_about = 'all'"; try { $result = $db->query($query); // ... } catch (PDOException $e) { mail("bad_things@my_database.com", "Error in " . $_SERVER["SCRIPT_NAME"], $e->getMessage()); } ?>
さあ、HTMLボディとプレーンテキストの代替手段とファイル添付ファイルを含む完全なマルチパート
例を見てみましょう。<?php mail($address, $subject, $message); ?>
基本概念を理解しやすくするために、より典型的な電子メールスクリプトのいくつかの側面が簡素化されていますが、このセクションで説明します。まず、$emailList
配列には、メールを共有したいメールアドレスがいくつかあります。配列はスクリプトの最後に反復され、各アドレスは私のメールのコピーを受け取ります。次に、$headers
文字列はさまざまな電子メールヘッダーで構築されます。文字列内の各ヘッダーはCRLF(rn
)で区切られ、電子メールメッセージの形式を定義するRFC 2822標準に準拠しています。 「from: "fluffy mumsy"$boundary = md5(time())
などの境界としてランダムに生成されたハッシュを割り当てます。 novyrus.zip
(ここにスクリプトと同じディレクトリにあります)の内容は、base64によってエンコードされ、「ブロック」に分割されているため、メールクライアントの処理が容易になります。結果は$goodAttachment
に保存され、後で表示されます。最後に、電子メール本体の構成... "-yagottakeepemseparatedrn"これは、以前に定義された境界を使用し、メールクライアントに「これは電子メールメッセージの最初の部分の始まりです」というメールクライアントに伝える最初の例です。 「コンテンツタイプ:マルチパート/代替、境界= "afferemailalternative" rn "メールヘッダーに記載されている「マルチパート/混合」に加えて、ボディと異なる境界(このブレークダウンに固有)で「マルチパート/代替」を使用して、メッセージの代替形式を提供することもできます。 「-everemailalternativen」これはネストされた境界の最初のインスタンスであり、メッセージの最初の代替バージョンを起動します。 「Content-Type:Text/Plain; charset = "ISO-8859-1" RN "このコンテンツタイプのヘッダーは、この代替手段がプレーンテキストであることをメールクライアントに伝えます。クライアントがより複雑な形式(HTMLなど)を表示できない場合、このバージョンのメッセージを使用します。 「コンテンツトランスファーエンコード:7bitrn」コンテンツトランスファーエンコードヘッダーは、メッセージで使用されるエンコードスキームを指定します。歴史的な理由から、「7ビット」がデフォルト値であるため、省略できます。私はあなたに知らせるためだけにそれを含めました。 「あなたはお金がない安いテキストメールを持っています。 「-evemailalternativen」最初の代替案は終了し、次の代替案を開始できます。 「Content-Type:Text/HTML; charset = "ISO-8859-1" RN "このコンテンツタイプのヘッダーは、このバージョンがHTMLとしてフォーマットされていることをクライアントに通知し、使用される文字セットをクライアントに通知します。 「... rn」このバージョンのコンテンツは、HTMLタグが含まれていることを除いて、プレーンテキストバージョンとは大きく異なることに注意してください。一部のスパムフィルターは、これを私のメールが私の受信トレイに届かないようにする別の理由と見なすかもしれません。 "-yagottakeepemseparatedrn"これはマルチパート/混合境界であり、すべての選択肢を含むメッセージ本文セクションの終わりに到達したことを示します。 「コンテンツタイプ:アプリケーション/zip; name = "novyrus.zip" rn "コンテンツタイプのヘッダーは、電子メールの次の部分が添付ファイル(novyrus.zip
ファイル)であり、zipファイルであることを示します。 「コンテンツトランスファーエンコード:base64RN」7ビットエンコード文字を7ビットに制限し、ZIPファイルに必要なすべてのバイナリ文字を忠実に表すことはできません。そのため、ファイルはbase64エンコードおよびチャンクされています。ここでのコンテンツ転移エンコードヘッダーは、クライアントに添付ファイルをデコードする方法を知らせます。 「コンテンツディスポジション:AttachmentRn」コンテンツディスポジションヘッダーは、コンテンツのレンダリング方法を示しています。zipファイルをメッセージにインライン要素として表示することはほとんど意味がありませんが、画像を埋め込むのに非常に役立ちます。 $goodAttachment . "rn"
添付ファイルの内容は、単にミックスにダンプされます。 「-yagottakeepemseparated-」これは最終境界であり、宣言はコンテンツなしで最後にダブルダッシュのセットを追加することで終了します。
概要
それだけです! Ultra-Basic Textメールと添付ファイル付きの完全なHTMLメールを送信する方法を学びました。簡単な電子メールは、単にmail()
関数を呼び出すだけです。 HTMLメッセージの場合、MIME標準を使用して電子メールをセクションに分解し、選択した境界で分離する必要があります。次に、コンテンツとは何か、エンコードされている方法、コンテンツの処理方法、およびコンテンツ自体を定義します。メールを送信する予定の人に応じて、実際に何か深刻なものを送りたい場合に備えて、メールをスパムとしてマークする可能性が高くなる可能性があるものを認識する必要があります。 Photosani / shutterstockの写真
php で電子メールを送信することについてのFAQ
(長さが長すぎて擬似オリジナルの目標と一致しないため、FAQパーツはここでは省略されています。FAQパーツの内容は元のテキストと一致しています。元のテキストに簡単なステートメント調整を行い、擬似オリジナルを完成させます。)以上がPHPでメールを送信しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。