zoukankan      html  css  js  c++  java
  • PHPMailer发送邮件(一)

    Github 地址:(已更新,适用于旧版)

    PHPMailer : https://github.com/PHPMailer/PHPMailer

    一、基本要求

    • Web访问正常(apache可以正常访问)
    • php 设置正确(Sockets Support、OpenSSL support 两项设置为enable)
    • gmail设置, 允许不够安全的应用:设置为已启用

    可以写一个简单的语句测试一下:info.php

    <?php
    phpinfo();
    ?>

    将下载好的phpmailer解压到web目录,我的目录结构如下:(主要的文件是红框中圈出的,目录中比你解压后多出的文件,请不要在意)

    二、发送邮件测试(一)

    标记为***xxx***的需要改成自己的信息。

    <?php
    require 'PHPMailerAutoload.php';                    // 跟gmailer同在phpmailer文件夹下
    $mail = new PHPMailer;
    $mail->SMTPDebug = 1;              // Enable verbose debug output
    $mail->isSMTP();                // Set mailer to use SMTP
    $mail->Host = 'smtp.gmail.com';          // Specify main and backup SMTP servers
    $mail->SMTPAuth = true;                  // Enable SMTP authentication
    $mail->Username = '***your_gmail_user_name@gmail.com***';  // SMTP username
    $mail->Password = '***your_gmail_password***';          // SMTP password
    $mail->SMTPSecure = 'ssl';          // Enable TLS encryption, `ssl` also accepted
    $mail->Port = 465;               // TCP port to connect to
    $mail->setFrom('***your_gmail_user_name@gmail.com***', 'Mailer');     // Add set from id
    $mail->addAddress('***starnight_cyber at foxmail.com***', 'Receiver');   // Add a recipient
    $mail->addAddress('***neverthinkaboutit at 163.com***', 'Receiver');     // Add a recipient
    $mail->Subject = 'Helo, it is a test!';
    $mail->Body    = 'This is the HTML message body <b>in bold!</b>';
    $mail->AltBody = 'This is the body in plain text for non-HTML mail clients';
    if(!$mail->send()) {
        echo 'Message could not be sent.';
        echo 'Mailer Error: ' . $mail->ErrorInfo;
    } else {
        echo 'Message has been sent';
    }
    ?>

    访问页面:http://localhost/phpmailer/gmailer.php, 您将得到如下输出,显示的是发送正确。(发送邮件的速度,即等待时间,跟连接到邮件服务器的速度有关)

    下面是收件人的情况:(邮件发送后,需要稍等一分钟左右可以看到邮件,用gmail会更快些)

    三、发送邮件测试(二)

      上面那个记不清是啥版本的,讲道理可能是phpmailer-5.2.18的例子,跟下面的phpmailer-5.2.16比较相像,但有少许不同,现补充如下:

      phpmailer-5.2.16下载地址:https://github.com/PHPMailer/PHPMailer/releases/tag/v5.2.16

    <?php
    /**
     * This example shows settings to use when sending via Google's Gmail servers.
     */
    
    //SMTP needs accurate times, and the PHP time zone MUST be set
    //This should be done in your php.ini, but this is how to do it if you don't have access to that
    date_default_timezone_set('Etc/UTC');
    
    require 'PHPMailerAutoload.php';
    
    //Create a new PHPMailer instance
    $mail = new PHPMailer;
    
    //Tell PHPMailer to use SMTP
    $mail->isSMTP();
    
    //Enable SMTP debugging
    // 0 = off (for production use)
    // 1 = client messages
    // 2 = client and server messages
    $mail->SMTPDebug = 2;
    
    //Ask for HTML-friendly debug output
    $mail->Debugoutput = 'html';
    
    //Set the hostname of the mail server
    $mail->Host = 'smtp.gmail.com';
    // use
    // $mail->Host = gethostbyname('smtp.gmail.com');
    // if your network does not support SMTP over IPv6
    
    //Set the SMTP port number - 587 for authenticated TLS, a.k.a. RFC4409 SMTP submission
    $mail->Port = 587;
    
    //Set the encryption system to use - ssl (deprecated) or tls
    $mail->SMTPSecure = 'tls';
    
    //Whether to use SMTP authentication
    $mail->SMTPAuth = true;
    
    //Username to use for SMTP authentication - use full email address for gmail
    $mail->Username = "starnightcyber@gmail.com";
    
    //Password to use for SMTP authentication
    $mail->Password = "your-password";        # look here, you need to change to your own mailer address and password
    
    //Set who the message is to be sent from
    $mail->setFrom('starnightcyber@gmail.com', 'starnightcyber');
    
    //Set an alternative reply-to address
    //$mail->addReplyTo('replyto@example.com', 'First Last');
    
    //Set who the message is to be sent to
    $mail->addAddress('zl15@foxmail.com', 'liuzhen');
    
    //Set the subject line
    $mail->Subject = 'PHPMailer GMail SMTP test';
    
    //Read an HTML message body from an external file, convert referenced images to embedded,
    //convert HTML into a basic plain-text alternative body
    $mail->msgHTML(file_get_contents('contents.html'), dirname(__FILE__));
    
    //Replace the plain text body with one created manually
    $mail->Body    = 'Hello, this is a test mail using phpmailer';
    $mail->AltBody = 'Hello, this is a test mail using phpmailer';
    //Attach an image file
    //$mail->addAttachment('images/phpmailer_mini.png');
    
    //send the message, check for errors
    if (!$mail->send()) {
        echo "Mailer Error: " . $mail->ErrorInfo;
    } else {
        echo "Message sent!";
    }

      发送邮件输出日志如下:

    SERVER -> CLIENT: 220 smtp.gmail.com ESMTP v22sm8729998pgb.65 - gsmtp
    CLIENT -> SERVER: EHLO 192.168.0.8
    SERVER -> CLIENT: 250-smtp.gmail.com at your service, [210.45.123.80]250-SIZE 35882577250-8BITMIME250-STARTTLS250-ENHANCEDSTATUSCODES250-PIPELINING250-CHUNKING250 SMTPUTF8
    CLIENT -> SERVER: STARTTLS
    SERVER -> CLIENT: 220 2.0.0 Ready to start TLS
    CLIENT -> SERVER: EHLO 192.168.0.8
    SERVER -> CLIENT: 250-smtp.gmail.com at your service, [210.45.123.80]250-SIZE 35882577250-8BITMIME250-AUTH LOGIN PLAIN XOAUTH2 PLAIN-CLIENTTOKEN OAUTHBEARER XOAUTH250-ENHANCEDSTATUSCODES250-PIPELINING250-CHUNKING250 SMTPUTF8
    CLIENT -> SERVER: AUTH LOGIN
    SERVER -> CLIENT: 334 VXNlcm5hbWU6
    CLIENT -> SERVER: c3Rhcm5pZ2h0Y3liZXJAZ21haWwuY29t
    SERVER -> CLIENT: 334 UGFzc3dvcmQ6
    CLIENT -> SERVER: MTIzQHdheW5lJmx6OTMj
    SERVER -> CLIENT: 235 2.7.0 Accepted
    CLIENT -> SERVER: MAIL FROM:<starnightcyber@gmail.com>
    SERVER -> CLIENT: 250 2.1.0 OK v22sm8729998pgb.65 - gsmtp
    CLIENT -> SERVER: RCPT TO:<zl15@foxmail.com>
    SERVER -> CLIENT: 250 2.1.5 OK v22sm8729998pgb.65 - gsmtp
    CLIENT -> SERVER: DATA
    SERVER -> CLIENT: 354 Go ahead v22sm8729998pgb.65 - gsmtp
    CLIENT -> SERVER: Date: Thu, 9 Nov 2017 01:49:55 +0000
    CLIENT -> SERVER: To: liuzhen <zl15@foxmail.com>
    CLIENT -> SERVER: From: starnightcyber <starnightcyber@gmail.com>
    CLIENT -> SERVER: Subject: PHPMailer GMail SMTP test
    CLIENT -> SERVER: Message-ID: <81fd574eec8f52c3080c06e671ff7e77@192.168.0.8>
    CLIENT -> SERVER: X-Mailer: PHPMailer 5.2.16 (https://github.com/PHPMailer/PHPMailer)
    CLIENT -> SERVER: MIME-Version: 1.0
    CLIENT -> SERVER: Content-Type: multipart/alternative;
    CLIENT -> SERVER: boundary="b1_81fd574eec8f52c3080c06e671ff7e77"
    CLIENT -> SERVER: Content-Transfer-Encoding: 8bit
    CLIENT -> SERVER: 
    CLIENT -> SERVER: This is a multi-part message in MIME format.
    CLIENT -> SERVER: 
    CLIENT -> SERVER: --b1_81fd574eec8f52c3080c06e671ff7e77
    CLIENT -> SERVER: Content-Type: text/plain; charset=us-ascii
    CLIENT -> SERVER: 
    CLIENT -> SERVER: Hello, this is a test mail using phpmailer
    CLIENT -> SERVER: 
    CLIENT -> SERVER: 
    CLIENT -> SERVER: --b1_81fd574eec8f52c3080c06e671ff7e77
    CLIENT -> SERVER: Content-Type: text/html; charset=us-ascii
    CLIENT -> SERVER: 
    CLIENT -> SERVER: Hello, this is a test mail using phpmailer
    CLIENT -> SERVER: 
    CLIENT -> SERVER: 
    CLIENT -> SERVER: 
    CLIENT -> SERVER: --b1_81fd574eec8f52c3080c06e671ff7e77--
    CLIENT -> SERVER: 
    CLIENT -> SERVER: .
    SERVER -> CLIENT: 250 2.0.0 OK 1510192199 v22sm8729998pgb.65 - gsmtp
    CLIENT -> SERVER: QUIT
    SERVER -> CLIENT: 221 2.0.0 closing connection v22sm8729998pgb.65 - gsmtp
    Message sent!
    phpmailer-5.2.16 gmail发送邮件输出日志

    最后,附上:Gmail,QMail,163邮箱的 IMAP/SMTP/POP3 地址

    欢迎给我留言联系...

  • 相关阅读:
    mybatis的xml文件中的CDATA的使用
    使用jedis执行lua脚本
    连接池中的maxIdle,MaxActive,maxWait等参数详解
    Unity3D脚本中文系列教程(十六)
    Unity3D脚本中文系列教程(十五)
    Unity3D脚本中文系列教程(十四)
    Unity3D脚本中文系列教程(十三)
    Unity3D脚本中文系列教程(十二)
    Unity3D脚本中文系列教程(十一)
    Unity3D脚本中文系列教程(十)
  • 原文地址:https://www.cnblogs.com/Hi-blog/p/7112088.html
Copyright © 2011-2022 走看看