使用phpmailer通过smtp发送电子邮件

时间:2017-04-10 12:48:36

标签: php smtp mailer

我遇到了PHPMailer和SMTP发送邮件的问题。我编写了这段代码,但它并不适用于我的脚本。我有两个版本的邮件程序,第一个没有SMTP,但我需要使用SMTP。

  1. 没有SMTP版本。

  2. 第二个版本添加了PHPMailer但是当我按提交时,它没有发送任何内容,只在加载时停止:

  3. require_once(dirname(__FILE__).'/../../config.php');
    require(dirname("/mail/PHPMailerAutoload.php"); // path to the 
    PHPMailerAutoload.php file.
    
    $mail->$fromEmail = NO_REPLY;
    $mail->$headers = "MIME-Version: 1.0" . "\r\n";
    $mail->$headers .= "Content-Type: text/plain; charset=utf-8" . "\r\n";
    $mail->$headers .= "From: ".$fromEmail. "\r\n";
    $mail->$subject = $LANG["WBS_REGM_SUBJECT"];
    $mail->mail($user_email,$subject,$details,$headers);
    
    $mail = new PHPMailer();
    $mail->IsSMTP();
    $mail->Mailer = "smtp";
    $mail->Host = "localhost";
    $mail->Port = "465"; // 8025, 587 and 25 can also be used. Use Port 465 for SSL.
    $mail->SMTPAuth = true;
    $mail->SMTPSecure = 'tls';
    $mail->Username = "XXXXXXX";
    $mail->Password = "XXXXXXXXX";
    
    echo '<div id="mode">1</div>';
        } else {
            echo '<div id="mode">2</div>';
        }
    } else {
        echo '<div id="mode">3</div>';
    }
    }
    

    我将使用smtp做什么?我该如何修复这个错误?

2 个答案:

答案 0 :(得分:0)

您无法使用网址包含该文件。您可能希望使用本地路径,然后需要它:

require(dirname(__FILE__) . "/path/to/phpmailer/PHPMailerAutoload.php");

获取当前包含文件的目录:

<?php
dirname(__FILE__);
?>

例如,如果脚本名为&#39; database.init.php&#39;它包含在文件系统的任何地方,希望包含脚本&#39; database.class.php&#39;,它位于同一目录中,您可以使用:

<?php
include_once(dirname(__FILE__) . '/database.class.php');
?>

参考:http://php.net/manual/en/function.dirname.php

下一步是检查您的服务器是否配置为处理SMTP请求。确保您使用的SMTP端口已打开,并且可供您的程序使用。

答案 1 :(得分:0)

您的代码是在Web服务器上还是本地的?这可能是个问题!

$mail->Host = 'localhost'

如果您没有后缀电子邮件服务,则可能是本地代码的问题。

mail()