実際、PHP メール送信機能は必ずしもすべてのプロジェクトで使用されるわけではありませんが、実際には、完成したすべてのプロジェクトには通常、PHP メール送信機能が含まれています。
一般的な電子メール送信機能は、登録のアクティブ化、パスワードの取得、メッセージの返信などによく使用されます。そして、これは多くの人にとって頭の痛い問題でもあります。結局のところ、この機能は数行のコードでは実現できず、時間とエネルギーを費やして作成することもできません。この関数は実際には完成品です。ここで必要なのは、それを使用する方法です。それでは、PHPMailer クラス ライブラリを使用して PHP メールボックス送信機能を実装する方法を説明します。
まず、メールを送信するためのメールアドレスとして独自のドメイン名を使用する方法について説明します
PHP環境では関数mail()を使用しますが、この関数にはサーバーが必要です。 sendmail をサポートするか、中継を必要としないメール送信サーバーをセットアップする必要がありますが、現在では認証を必要としないメール送信中継を見つけることはほとんど不可能であるため、メール機能を使用するとメール送信に失敗することがよくあります。では、PHP は電子メールを送信できないのでしょうか? 答えは「ノー」です。POP3/SMTP プロトコルに精通しており、それをソケット関数と組み合わせれば、効率的で安定した電子メール送信プログラムを作成できますが、この回避策は PHP を使用するのと同等です。 POP3/SMTP を作成するクライアントは、一般の開発者にとっては依然として難しいものです。
幸いなことに、今ではインターネットリソースが豊富にあり、PHPMailer はこの時に誕生しました。
PHPMailer の利点は何ですか?
どのプラットフォームでも実行できます
SMTP 検証をサポートします
メール送信時に複数の受信者、CC アドレス、BCC アドレス、返信アドレスを指定できます。 Win プラットフォームの SMTP モードでサポートされます
8 ビット、base64、バイナリ、quoted-printable を含む複数の電子メール エンコーディングをサポートします
冗長 SMTP サーバーをサポートします。つまり、メイン SMTP サーバー アドレスまたはバックアップのみを指定できます。
は添付ファイル付きの電子メールをサポートしており、任意の形式の添付ファイルを電子メールに追加できます -- もちろん、サーバーには
をサポートするのに十分な帯域幅が必要です。 電子メールのヘッダー情報をカスタマイズします。これは、PHP の header 関数を使用してヘッダー情報を送信するのと似ています。同様の
メール本文の HTMl コンテンツ化をサポートし、メール本文に画像を挿入できます
柔軟なデバッグ サポート
テスト済みで互換性のある SMTP サーバーには、Sendmail、qmail、Postfix、Imail、Exchange などがあります
PHPMailer コード パッケージをダウンロードするには?
PHPMailer プロジェクトのアドレス: https://github.com/PHPMailer/PHPMailer git コマンドを使用してローカルに複製するか、プロジェクトの右下にある [Download ZIP] をクリックします。完全な PHPMailer コード パッケージを入手するには、このページを参照してください。
qqメールボックス配下の「ドメイン名メールボックス」でPHPMailerを使用し、独自ドメイン名をメールアドレスとして使用してメールを送信する方法
====
以下、2回に分けて説明します。独自ドメイン名を利用してqqメールボックスを無料で開設する方法 PHP環境下の「ドメイン名メールボックス」でPHPMailerを使用し、新しく開設した「ドメイン名メールボックス」と連携してメールを自動送信します。
====
前編:qqメールボックス配下の「ドメイン名メールボックス」を開く
「ドメイン名メールボックス」を開くだけでは操作方法を理解するだけなので、この部分は簡単に議論するだけです。
QQ メールボックスに入り、ページの左上隅にある [設定] をクリックし、[メールボックス設定] の下の [アカウント] タブをクリックし、スクロール バーをドラッグすると、[ドメイン名メールボックス] が表示されます。 「ドメイン名メールボックスの管理」をクリックしてドメイン名メールボックスを追加するページに移動するか、 http://domain.mail.qq.com/
を直接クリックして「ドメイン名メールボックスの作成」をクリックし、ページに従ってください独自のドメイン名を追加して確認するよう求められます。 PS: qq メールボックスの下に「ドメイン名メールボックス」を正常に追加した場合は、qq メールボックスを入力した後、ページの左上にある「設定」ボタンの後に「ドメイン名メールボックス」というテキストが表示されます。ドメイン名メールボックスに自分専用のメールアドレスを入力し、承認された「ドメイン名メールボックス」の「メンバー管理」をクリックし、「メンバーを追加」をクリックし、ドメイン名の下に好きなメールボックス名を入力し、qqを追加します。番号 (qq 番号は、新しく追加されたメールボックスのユーザーとして機能します。qq アカウントは、デジタル アカウントを閉じるのではなく、qq メールボックスを開く必要があります)
入力したばかりの qq 番号の qq メールボックスには、通知メールを開き、メール内の「このメール アカウントを受け入れる」をクリックして使用します。 PHPMailer でメールを送信するための送信者のメール アドレスが設定されました。説明の便宜上、このメール アドレスを「送信者メール アドレス」と呼びます。 。
このQQアカウントのログインパスワードの安全性を確保するため、QQメールボックスの「設定」-「アカウント」-「アカウントセキュリティ」でこのQQアカウントに「独立したパスワード」を設定してください。そこで設定されるパスワードを、本稿では説明の便宜上「独立パスワード」と呼びます。
これでQQ Mailbox配下の「Domain Name Mailbox」が開かれ、後ほどPHPMailerを使って送信者のメールアドレスが送信されます。以下は、PHPMailer が後で使用する必要があるいくつかの重要な情報のリストです: QQ 番号、上記の 3 番目のステップで追加された QQ 番号、「独立したパスワード」、「送信者の電子メール アドレス」、送信者の名前...
パート 2: PHPMailer を使用して電子メールを送信するためのコードを作成します
PHPMailer には PHP のソケット拡張サポートが必要で、PHPMailer は qq ドメイン名メールボックスにリンクするときに SSL 暗号化を必要とします (qq メールボックスは最近制限されており、新しいドメイン名メールボックスはSMTP プロトコルのポート 25 を介した通常のリンクを許可し、SSL のポート 465 または 587 のみを許可します [ベータ期間中に開いたドメイン名メールボックスの 1 つは引き続きポート 25 に接続できます。これはセキュリティ ポリシーである可能性があります。新しい接続を制限します。PHP が openssl でサポートされている必要があります。次の 2 つの項目が存在する場合は、心配する必要はありません。 openssl のバージョン番号が異なると、多くの仮想ホストの PHP が openssl 拡張をサポートしていない場合、悲劇が起こる可能性があります。
ここで注意すべきこと、その前に、php 環境で openssl を有効にする必要があります
この部分は単なるコード例であり、開始点として機能するコード内にいくつかのコメントと説明があります。
ダウンロードした PHPMailer は解凍され、圧縮されています。class.phpmailer.php、class.pop3.php、class.smtp.php、PHPMailerAutoload.php の 4 つのファイルのみが必要です。主に言語フォルダーはオプションです。デバッグ中の情報の表示に使用されます。 class.phpmailer.php のファイルサイズを見てください。これは 110kb を超えています。これはかなり恐ろしいことです。
<?php //引入PHPMailer的核心文件 使用require_once包含避免出现PHPMailer类重复定义的警告 require_once("phpmailer/class.phpmailer.php"); //示例化PHPMailer核心类 $mail = new PHPMailer(); //是否启用smtp的debug进行调试 开发环境建议开启 生产环境注释掉即可 默认关闭debug调试模式 $mail->SMTPDebug = 1; //使用smtp鉴权方式发送邮件,当然你可以选择pop方式 sendmail方式等 本文不做详解 //可以参考http://phpmailer.github.io/PHPMailer/当中的详细介绍 $mail->isSMTP(); //smtp需要鉴权 这个必须是true $mail->SMTPAuth=true; //链接qq域名邮箱的服务器地址 $mail->Host = 'smtp.qq.com'; //设置使用ssl加密方式登录鉴权 $mail->SMTPSecure = 'ssl'; //设置ssl连接smtp服务器的远程服务器端口号 可选465或587 $mail->Port = 465; //设置smtp的helo消息头 这个可有可无 内容任意 $mail->Helo = 'Hello smtp.qq.com Server'; //设置发件人的主机域 可有可无 默认为localhost 内容任意,建议使用你的域名 $mail->Hostname = 'jjonline.cn'; //设置发送的邮件的编码 可选GB2312 我喜欢utf-8 据说utf8在某些客户端收信下会乱码 $mail->CharSet = 'UTF-8'; //设置发件人姓名(昵称) 任意内容,显示在收件人邮件的发件人邮箱地址前的发件人姓名 $mail->FromName = '晶晶在线'; //smtp登录的账号 这里填入字符串格式的qq号即可 $mail->Username ='888888'; //smtp登录的密码 这里填入“独立密码” 若为设置“独立密码”则填入登录qq的密码 建议设置“独立密码” $mail->Password = 'xxxxxxx'; //设置发件人邮箱地址 这里填入上述提到的“发件人邮箱” $mail->From = 'register@jjonline.cn'; //邮件正文是否为html编码 注意此处是一个方法 不再是属性 true或false $mail->isHTML(true); //设置收件人邮箱地址 该方法有两个参数 第一个参数为收件人邮箱地址 第二参数为给该地址设置的昵称 不同的邮箱系统会自动进行处理变动 //这里第二个参数的意义不大 $mail->addAddress('xxx@qq.com','晶晶在线用户'); //添加多个收件人 则多次调用方法即可 $mail->addAddress('xxx@163.com','晶晶在线用户'); //添加该邮件的主题 $mail->Subject = 'PHPMailer发送邮件的示例'; //添加邮件正文 上方将isHTML设置成了true,则可以是完整的html字符串 //如:使用file_get_contents函数读取本地的html文件 $mail->Body = "这是一个PHPMailer发送邮件的一个测试用例"; //为该邮件添加附件 该方法也有两个参数 第一个参数为附件存放的目录(相对目录、或绝对目录均可) 第二参数为在邮件附件中该附件的名称 $mail->addAttachment('./d.jpg','mm.jpg'); //同样该方法可以多次调用 上传多个附件 $mail->addAttachment('./Jlib-1.1.0.js','Jlib.js'); //发送命令 返回布尔值 //PS:经过测试,要是收件人不存在,若不出现错误依然返回true 也就是说在发送之前 自己需要些方法实现检测该邮箱是否真实有效 $status = $mail->send(); //简单的判断与提示信息 if($status) { echo '发送邮件成功'; }else{ echo '发送邮件失败,错误信息未:'.$mail->ErrorInfo; } ?>
特別な注意事項: 上記のコード スニペットは参照用です。Web サイト システムに統合する場合は、コード スニペットを関数またはクラス ライブラリにカプセル化して呼び出すことができます。さらに、PHPMailer は CC と BCC の追加をサポートしています。 win32 プラットフォームの下で。私はサーバーで centos を使用しているため、テストしていません。