如何通过phpmailer通过电子邮件发送数据

时间:2015-08-19 10:18:34

标签: php

<?php
      require 'mail/class.phpmailer.php';
      $mail = new PHPMailer();
      $mail->Host = 'mail.cancerbengal.com';
      $mail->Port = 465;
      $mail->SMTPSecure = 'ssl';
     /*** various $var declarations removed as irrelevant **/ 
     if(isset($_POST['submit']))
       {
       /**various irrelevant code removed**/
       }
       $mail->IsHTML(true); // if you are going to send HTML formatted emails
       $mail->SingleTo = true; 
      $mail->Subject = "Testing PHPMailer with localhost";
      $mail->Body = "You have received a new message. ".$messageContents;
      $file_to_attach = 'photo';
      $mail->AddAttachment( $file_to_attach , '$photo' );
      if(!$mail->Send())
                  {
                   echo "Message was not sent <br />PHPMailer Error: " .$mail->ErrorInfo;
                }
                else
                 {
        echo "<script>alert('Your Registration is Successfull')</script>";
                }

这是服务中的mail1.php,显示错误class.phmailer.php无法打开。怎么解决?实际上,我想发送带有两个附件的邮件,但附件不会发送。任何帮助都将受到高度赞赏。错误是

错误输出:

  

警告:require(mail / class.phpmailer.php):无法打开流:否   /home/cancerbengal/public_html/mail1.php上的此类文件或目录   第2行

     

致命错误:require():需要打开失败   'mail / class.phpmailer.php'(include_path ='。:/ usr / lib / php:   / usr / local / lib / php')/home/cancerbengal/public_html/mail1.php on   第2行

1 个答案:

答案 0 :(得分:0)

您真的应该更新PHPMailer脚本以使用更新的PHPMailer并使用自动加载器。我强烈建议从github下载最新的PHPMailer:

https://github.com/PHPMailer/PHPMailer

现在,您的问题是该文件在指定的位置不存在,

您在require 'mail/class.phpmailer.php';

指定的位置
<sourcefile>
     |
     |
     \-----> mail folder / class.phpmailer.php 

这意味着:

  • 您没有将类文件上传到远程服务器。

  • 您的<sourcefile>本身位于不同/不正确的位置

  • 如果您的<sourcefile>在其他地方的include处,则在其他脚本中,其中的包含相对于自己的位置,而不是它是'父'PHP文件。

<强>解决方案:

使用$_SERVER['DOCUMENT_ROOT']给出包含路径的绝对值,所以:

require "mail/class.phpmailer.php";

变为:

require $_SERVER['DOCUMENT_ROOT']."/mail/class.phpmailer.php";

无论你的<sourcefile>位于何处,这都会有效。