PHPでメールを送信する

WBOY
WBOYオリジナル
2016-06-23 13:44:14811ブラウズ

テストコード

<?phpheader('Content-Type: text/xml; charset=utf-8');require_once('./PHPMailer-master/class.phpmailer.php');function sendMail() {    $mail = new PHPMailer();    //采用SMTP发送邮件    $mail->IsSMTP();    $mail->SMTPDebug = 0;    $mail->SMTPAuth = true;     $mail->SMTPSecure = "tls";      $mail->CharSet = "utf-8";    $mail->Encoding = "base64";     $mail->MessageID = time();     $mail->Host = 'email.163.com';    $mail->Port = 587;    $mail->Username = 'yourname';    $mail->Password = 'password';    $mail->From = 'yourname@163.com';    //发件人                       $mail->FromName = 'some name';    //收件人邮件组    $mail->AddAddress('dest@163.com', 'his name');    $body = "Hi all:<br/>                this is a test mail<br/>            <br/>";    $mail->Subject = 'a subject ';    $mail->MsgHTML($body);    $mail->Send();}sendMail();?>

これは、外部クラス PHPMailer を参照します。 このクラスの公式サイトは http://phpmailer.worxware.com/ で、github からダウンロードできるようです。

これを使ってメールを送信したところ、最初は送信できませんでしたが、デバッグスイッチ $mail->SMTPDebug = 2;

サーバー名が間違っていることがわかり、その後、このクラスファイルを調べに行きました。 class.phpmailer.php

serverHostname 関数で、_SERVER グローバル変数を出力すると、ホスト名が変数 _SERVER['SERVERNAME'] ではなく、_SERVER['HOSTNAME] に配置されていることがわかります。 ' ] の場合、解決策は、SERVERNAME を HOSTNAME に変更するか、プログラム内の $this->Hostname 変数に値を割り当てることです。状況に応じて自分で変更してください。 クラス内で直接変更しました。


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。