php PHPMailer 根本不工作

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/20000869/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-25 02:46:52  来源:igfitidea点击:

PHPMailer is not working at all

phpphpmailer

提问by jq beginner

I'm trying to configure PHPMailer I've uploaded 1 file which is class.phpmailer.php and created another php file with this content:

我正在尝试配置 PHPMailer 我上传了 1 个文件,它是 class.phpmailer.php 并创建了另一个包含以下内容的 php 文件:

<?php
require('class.phpmailer.php');
$mail = new PHPMailer(); // create a new object
$mail->IsSMTP(); // enable SMTP
$mail->SMTPDebug = 1; // debugging: 1 = errors and messages, 2 = messages only
$mail->SMTPAuth = true; // authentication enabled
$mail->SMTPSecure = 'ssl'; // secure transfer enabled REQUIRED for GMail
$mail->Host = "smtp.gmail.com";
$mail->Port = 465; // or 587
$mail->IsHTML(true);
$mail->Username = "[email protected]";
$mail->Password = "mypassword";
$mail->SetFrom("the same email address");
$mail->Subject = "Test";
$mail->Body = "hello";
$mail->AddAddress("the same email address");
if(!$mail->Send())
{
echo "Mailer Error: " . $mail->ErrorInfo;
}
else
{
echo "Message has been sent";
}
?>

and i get nothing at all not a success message nor a failure message. http://www.mawk3y.net/mailtest/test.php

我什么也没有得到,不是成功消息也不是失败消息。http://www.mawk3y.net/mailtest/test.php

回答by Vishal Dodiya

The problem is with the require method.

问题在于 require 方法。

You first have to extract all file of phpMailer repository.

您首先必须提取 phpMailer 存储库的所有文件。

instead of writing

而不是写作

require('class.phpmailer.php');

you need to include path where your PHPMailerAutoload.php file extracted.so you can replace it with.

您需要包含提取 PHPMailerAutoload.php 文件的路径。这样您就可以将其替换为。

require('path-of-extracted-folder/PHPMailerAutoload.php');

for more reference you can visit it's GitHub link

如需更多参考,您可以访问它的 GitHub 链接

https://github.com/PHPMailer/PHPMailer

https://github.com/PHPMailer/PHPMailer

回答by Lakmi

I had same problem but I solved.This is the way I code

我有同样的问题,但我解决了。这就是我编码的方式

<?php 


require 'PHPMailer-master/PHPMailerAutoload.php';

//Create a new PHPMailer instance
$mail = new PHPMailer;
// Set PHPMailer to use the sendmail transport
$mail->isSMTP();
$mail->Host = 'smtp.gmail.com';              // Specify main and backup SMTP servers
$mail->SMTPAuth = true;                               // Enable SMTP authentication
$mail->Username = '[email protected]';                 // SMTP username
$mail->Password = 'abc';                           // SMTP password
$mail->SMTPSecure = 'tls';                            // Enable TLS encryption, `ssl` also accepted
$mail->Port = 587;                                    // TCP port to connect to

//Set who the message is to be sent from
$mail->setFrom('[email protected]', 'First Last');
//Set an alternative reply-to address

//Set who the message is to be sent to
$mail->addAddress('[email protected]', 'Shehan');
//Set the subject line
$mail->Subject = 'Test Mail';

$mail->Body = 'This is Test Mail';


//send the message, check for errors
if (!$mail->send()) {
    echo "Mailer Error: " . $mail->ErrorInfo;
} else {
    echo "Message sent!";
} 

?>

回答by Juliana Torres

all answers are outdated now. Most current version (as of Feb 2018) does not have autoload anymore, and PHPMailer should be initialized as follows:

现在所有的答案都过时了。大多数当前版本(截至 2018 年 2 月)不再具有自动加载功能,PHPMailer 应初始化如下:

<?php

  include_once(FCPATH.'PHPMailer/src/PHPMailer.php');
  include_once(FCPATH.'PHPMailer/src/SMTP.php');

    $msj="My complete message";
    $mail = new PHPMailer\PHPMailer\PHPMailer();
    $mail->IsSMTP(); // enable SMTP
    $mail->SMTPDebug = 1; // debugging: 1 = errors and messages, 2 = messages only
    //authentication SMTP enabled
    $mail->SMTPAuth = true; 
    $mail->SMTPSecure = 'ssl'; // secure transfer enabled REQUIRED for Gmail
    $mail->Host = "smtp.gmail.com";
    //indico el puerto que usa Gmail 465 or 587
    $mail->Port = 465; 
    $mail->Username = "xxxxxx";
    $mail->Password = "xxxx";
    $mail->SetFrom("[email protected]","Name");
    $mail->AddReplyTo("[email protected]","Name Replay");
    $mail->Subject = "Test";
    $mail->MsgHTML($msj);
    $mail->AddAddress("[email protected]");

 if(!$mail->Send()) {
    echo "Mailer Error: " . $mail->ErrorInfo;
 } else {
    echo "Message has been sent";
 }
?>