ホームページ  >  記事  >  バックエンド開発  >  php を使用して添付ファイル付きメールを送信する - (PHPMailer を使用した例の分析)_PHP チュートリアル

php を使用して添付ファイル付きメールを送信する - (PHPMailer を使用した例の分析)_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-21 15:12:031138ブラウズ

コードをコピーします コードは次のとおりです:

/*PHPMailer は、メールを送信するための PHP 関数パッケージです。提供する機能は次のとおりです:
*. 電子メール送信時に複数の受信者、CC アドレス、BCC アドレス、返信アドレスを指定します
*. 8 ビット、base64、バイナリ、引用符付き印刷可能などの複数の電子メール エンコーディングをサポートします
*. SMTP 認証をサポートします
* .冗長 SMTP サーバーをサポート
*.添付ファイル付きの電子メールと Html 形式の電子メールをサポート
*.電子メール ヘッダーをカスタマイズ
*.電子メールへの画像の埋め込みをサポート
*.柔軟なデバッグ
* テスト済みの互換性のある SMTP サーバーには、Sendmail、qmail、 Postfix、Imail、Exchange など
*. どのプラットフォームでも実行可能

phpMailer は、送信メールアドレスと返信アドレス、メールの件名、リッチテキストコンテンツ、添付ファイルのアップロードなどを設定できる非常に強力な php メールクラスです。
公式ウェブサイト: http://phpmailer.worxware.com/
ダウンロードアドレス: http://code.google.com/a/apache-extras. org/p/phpmailer/downloads/list
*/
require_once(' include/PHPMailer/class.phpmailer.php'); //PHPMAILER クラスをインポートします
$mail = new PHPMailer(); //インスタンスを作成します
$mail - >文字セット
$mail -> SetLanguage('ch','include/PHPMailer/ language/') //言語の種類と言語ファイルが置かれているディレクトリを設定します。 /SMTP を使用して送信します
$mail -> //サーバーが SMTP 認証を必要とするかどうかを設定します
$mail -> //SMTP ホスト アドレス
$mail -> /SMTP ホスト ポート
$mail -> //送信者の EMAIL アドレス
$mail -> //送信者は SMTP ホストのユーザー名
$mail -> ; //送信者の名前
$mail -> //SMTP ホストの送信者のパスワード
$mail -> //メールの件名
$mail -> AltBody = 'text/html'; //メール本文がHTMLに対応していない場合のバックアップ表示を設定します
$mail -> Body = 'テストメールの内容 ';//メール本文を作成します
$mail - > IsHTML(true); // HTML メールです
$mail -> 相手のアドレスと名前を受け取ります
$mail -> ('chinajason2008#gmail.com','jasonxu') //受信者が返信するときに返信するアドレスと名前
$mail ->AddAttachment('include/ id.csv','att.csv'); /添付ファイルのパスと名前
if(!$mail -> Send()) //メールを送信
var_dump($mail -> ErrorInfo) // 送信されたエラーメッセージを確認してください

注: 追加する場合phpmailer で添付ファイルを作成する場合、添付ファイルのサフィックスを添付ファイル名に指定する必要があります。添付ファイルのサフィックスが指定されていない場合、デフォルトの添付ファイルのサフィックスは .txt になります。
例 $mail -> AddAttachment('include/id.csv','att');//添付ファイルのパスと名前
上記のように添付ファイルを追加して送信すると、最終的に受信する添付ファイルはatt.txt であること。
AddAttachment では、添付ファイルのエンコード方法と添付ファイルの種類を設定できます。たとえば、上記の添付ファイルの追加を
$mail ->AddAttachment('include/id.csv','att.csv',"binary", "text/comma - Separated-values");// 添付ファイルのパスと名前、
添付ファイルにはおそらくいくつかのエンコード方法があります: 8 ビット、base64、バイナリ、および quote-printable エンコードがサポートされています

MIME タイプCSV可
・application/octet-stream
・text/カンマ区切り値(推奨)
・text/csv
つまり、csv形式ファイルの添付ファイルの種類は上記3つのいずれかになります
簡単に適用できるように短縮バージョンにコンパイルされた、前のプロジェクトでの電子メール送信の例:


コードをコピーします コードは次のとおりです:

$body=$_smtp_body;
$mail=new PHPMailer();//PHPMailer インスタンスを取得します
//$mail->SMTPSecure='tls';
$mail->CharSet="utf-8" ; //エンコーディングを設定します
$mail->IsSMTP();//メール送信のSMTPメソッドを設定します
$mail->Host=$_smtp_server;//SMTPメールサーバーのアドレスを設定します
$mail- >Port= $_smtp_port;//メールサーバーのポートを設定します、デフォルトは25です
$mail->From=$_smtp_from_mail; //送信者のメールアドレスを設定します
$mail->FromName=$_smtp_from_name; //送信設定 相手の名前
$mail->Username=$_smtp_username;
$mail->Password=$_smtp_password;
$mail->AddAddress("$email","");//設定受信アドレス (パラメータ 1) と名前 (パラメータ 2)
$mail->SMTPAuth=true;//SMTP 認証を有効にする
$mail->Subject=$_smtp_subject;//メールのタイトルを設定します
// $mail->AltBody ="text/html";
$mail->Body=$body;//メールの内容
$mail->IsHTML(true);//内容がHTML形式かどうかを設定します
/ /$mail->WordWrap =50; // それぞれの文字数を設定しますline
//$mail->AddReplyTo("samzhang@tencent.com","samzhang"); $mail->Send()){//メールを送信
exit 'ok';
}else{
exit 'fail';
}


初めて PHPMailer を使用したとき、説明できない問題が発生したことをおそらく覚えています。そして私はオンラインで情報を探すのに多くの時間を費やし、最終的にそれらを解決しました。現時点ではサーバーPHP環境ではfsockopen関数を無効にできないとメールが送信できないと記憶していますが、解決策はあります。つまり、使い始めはいつも苦労するのですが、久しぶりなので具体的に何が変わったのかはよくわかりません。したがって、今後の利用の便宜と、この問題で困っている友人の便宜のために、現在使用している PHPMailer ディレクトリ ファイルをパッケージ化して CSDN にアップロードしてください。 PHPMailerのダウンロード: http://xiazai.jb51.net/201304/yuanma/PHPMailer_jb51net.rar
なお、その際に発生した問題の内容を以下に整理します

1. SMTPに接続できませんでした。ホスト
理由 1 : メール システムに必要な SMTP リクエストは異なりますが、すべて大文字が許可されます。NetEase や Tencent メールボックスなど、一部は小文字をサポートしません。 (実際にそうなるかどうかは試していませんが、いずれにせよ大文字に変更しても影響はありません)

解決策:


コードをコピーします コードは次のとおりです:
public function IsSMTP() {
$this->Mailer ='SMTP' // smtp ->SMTP を変更します。 、元々は小文字でしたが、現在は大文字になっています。
}

// メーラーを選択して送信しますswitch($this->Mailer) {

case 'sendmail':
return $this->SendmailSend($header, $body);
case 'SMTP':/ /同様に、smtp ->SMTP; を変更します。つまり、元々は小文字でしたが、現在は大文字になります。
return $this->SmtpSend($header, $body);
case 'mail':
デフォルト:
return $this->MailSend($header, $body);
}


2. : SMTP ホストに接続できませんでした

原因: 一部の仮想ホストまたはサーバーがセキュリティ上の理由から「fsockopen() 関数」をブロックしているため、電子メールを送信できません

解決策:

fsockopen関数を有効にする

まず、php.ini 内の以下の 2 つのセミコロンを削除します

;拡張子=php_sockets.dll

;拡張子=php_openssl.dll

fsockopen 関数を置き換えます

class.smtp.php ファイル内の fsockopen 関数を pfsockopen 関数に置き換えることができます

3. メール関数をインスタンス化できませんでした

理由:

設定されたパラメータが間違っています。Gmail を使用して基本的なテストを行ったので、他のパラメータを再度設定する必要があります。

解決策:

$mail->SMTPSecure = ‘tls’ //この文を追加するだけです

注: 私はこの種のエラーに遭遇したことがないため、上記の例ではこのコンテンツにコメントを追加しました。この種のエラーが発生した場合は、この文を試してみてください。

http://www.bkjia.com/PHPjc/326777.html

本当http://www.bkjia.com/PHPjc/326777.html技術記事次のようにコードをコピーします。 /*PHPMailer は、電子メールを送信するための PHP 関数パッケージです。提供する機能は次のとおりです: *. メール送信時に複数の受信者、CC アドレス、BCC アドレスを指定します...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。