致命错误:未找到类'Swift_smtpTransport'

时间:2015-04-14 11:56:19

标签: php mysql email smtp

我正在尝试添加功能,以便从我的网站后端向我的客户发送电子邮件,并尝试使用swiftmailer执行此操作。 我很遗憾地收到错误消息

Fatal error: Class 'Swift_smtpTransport' not found in /home/u312041955/public_html/cust/modules/customer/email.php on line 94

虽然在我看来,swiftmailer类没有被正确包含,但它必须与页面根本不显示任何信息一样。 我使用swiftmailer的页面中的代码如下。

<?php require_once("include.php");
    //Required for swift mailer
    require_once (INCLUDE_URL.'/swift/lib/swift_required.php');
    if(!xml2php("customer")) {
    $smarty->assign('error_msg',"Error in language file");
    }
    // Lets grab some variables we need
    $email_username = $VAR['email_username'];
    $email_password = $VAR['email_password'];
    $email_server = $VAR['email_server2'];
    $email_server_port = $VAR['email_server_port2'];
    $customer_id = $VAR['customer_id'];
    $c2 = $VAR['c2'];
    $download_id = $VAR['download_id'];
    $submit = $VAR['submit'];
    $email_to = $VAR['email_to'];
    $email_from = $VAR['email_from'];
    $email_subject = $VAR['email_subject'];
    $message_body = $VAR['message_body'];
    $attachment = $VAR['attachment'];
    $rr_email = $VAR['rr'];
    $cus_name = $VAR['cus_name'];
    $sig = "<br>Regards,<br>".$employee_details ['EMPLOYEE_FIRST_NAME']."<br>MD-PC";

//Get All customer Emails
$q = "SELECT * FROM ".PRFX."TABLE_CUSTOMER_EMAILS WHERE CUSTOMER_ID ='".$customer_id."' ORDER BY CUSTOMER_EMAIL_ID DESC" ;
$rs = $db->Execute($q);
$customer_emails = $rs->GetArray();
$smarty->assign('customer_emails', $customer_emails);
/*Get Customer Info */
$q = "SELECT * FROM ".PRFX."TABLE_CUSTOMER WHERE CUSTOMER_ID ='".$customer_id."'" ;
$rs = $db->Execute($q);
$customer_details = $rs->GetArray();
$smarty->assign('customer_details', $customer_details);
/*Get Employee Info */
$q = "SELECT * FROM ".PRFX."TABLE_EMPLOYEE WHERE EMPLOYEE_DISPLAY_NAME ='".$login."'" ;
$rs = $db->Execute($q);
$employee_details = $rs->FetchRow();
$smarty->assign('employee_details', $employee_details);
// assign the arrays
$smarty->assign('open_work_orders', display_open_workorders($db, $customer_id));
$smarty->assign('closed_work_orders',   display_closed_workorders($db, $customer_id));
//$smarty->assign('customer_details',   display_customer_info($db, $customer_id));
$smarty->assign('customer_details',$customer_details);
$smarty->assign('unpaid_invoices', display_unpaid_invoices($db,$customer_id));
$smarty->assign('paid_invoices', display_paid_invoices($db,$customer_id));
$smarty->assign('memo', display_memo($db,$customer_id));
$smarty->assign('gift', display_gift($db, $customer_id));
$smarty->assign('company_details',display_company_info($db, $company_id));
//Lets Get the file downloaded to have a look at it from the database
if(isset ($download_id)){
 /*Get All customer Emails */
$q = "SELECT CUSTOMER_EMAIL_ATT_NAME1, CUSTOMER_EMAIL_ATT_TYPE1, CUSTOMER_EMAIL_ATT_SIZE1, CUSTOMER_EMAIL_ATT_FILE1,  FROM ".PRFX."TABLE_CUSTOMER_EMAILS WHERE CUSTOMER_EMAIL_ID ='".$download_id."'" ;
$rs = $db->Execute($q);
//header("Content-length: $rs->fields['CUSTOMER_EMAIL_ATT_SIZE1']");
//header("Content-type: $rs->fields['CUSTOMER_EMAIL_ATT_TYPE1']");
//header("Content-Disposition: attachment; filename=$rs->fields['CUSTOMER_EMAIL_ATT_NAME1']");
$file_download= $rs->fields['CUSTOMER_EMAIL_ATT_FILE1'];
$smarty->assign('file_download', $file_download);
//Print $CUSTOMER_EMAIL_ATT_NAME1;
 exit;

 }
// BOF Email Message details
//Mail
if(isset ($submit)){
    if($_FILES['attachment1']['size'] >  0 ){
    $fp      = fopen($_FILES['attachment1']['tmp_name'], 'r');
    $content1 = fread($fp, filesize($_FILES['attachment1']['tmp_name']));
    $content1 = addslashes($content1);
    fclose($fp);
    }
    $sql = "INSERT INTO ".PRFX."TABLE_CUSTOMER_EMAILS SET
            CUSTOMER_ID             = ". $db->qstr($VAR["c2"]).",
            CUSTOMER_EMAIL_ADDRESS  = ". $db->qstr( $VAR["email_to"]).",
            CUSTOMER_FROM_EMAIL_ADDRESS = ". $db->qstr( $VAR["email_from"]).",
            CUSTOMER_EMAIL_SENT_BY      = ". $db->qstr( $login ).", 
            CUSTOMER_EMAIL_SENT_ON      = ". $db->qstr( time()).",
            CUSTOMER_EMAIL_SUBJECT      = ". $db->qstr( $VAR["email_subject"]).",
            CUSTOMER_EMAIL_BODY = ". $db->qstr( $VAR["message_body"]).",
            CUSTOMER_EMAIL_ATT_NAME1    = ". $db->qstr( $_FILES['attachment1']['name']).",
            CUSTOMER_EMAIL_ATT_TYPE1        = ". $db->qstr( $_FILES['attachment1']['type']).",
            CUSTOMER_EMAIL_ATT_SIZE1        = ". $db->qstr( $_FILES['attachment1']['size']).",
            CUSTOMER_EMAIL_ATT_FILE1    = ". $db->qstr( $content1 ); 



    if(!$result = $db->Execute($sql)) {
        force_page('core', 'error&error_msg=MySQL Error: '.$db->ErrorMsg().'&menu=1&type=database');
        exit;
    }
//print $sql ;
    $transport = Swift_smtpTransport::newInstance( "mx1.hostinger.co.uk" , 2525 )
    ->setUsername('noreply@example.co.uk')
    ->setPassword('******');
    $mailer = Swift_Mailer::newInstance($transport);
    //Create a message
    $message = Swift_Message::newInstance($email_subject)
      ->setFrom(array($email_from => $employee_details['EMPLOYEE_FIRST_NAME']))
     ->setTo(array($email_to => $cus_name))
     ->setBody($strip )
     ->addPart('Hello '.$cus_name , 'text/html')
     ->addPart($message_body, 'text/plain')
     ->attach(Swift_Attachment::fromPath($target_path));
     //Send the message
     $numSent = $mailer->send($message);
     //Display how many messages were sent
     echo "<script>alert('Email Information')</script>";
     echo "Sent %d messages\n", $numSent;
     exit(); 

    }
    ?>

我现在或一段时间一直在努力解决这个问题,可能会朝着正确的方向发展。

更新1:我一直在继续玩这个,当我改变线

$transport = Swift_smtpTransport::newInstance( "mx1.hostinger.co.uk" , 2525 )
->setUsername('noreply@example.co.uk')
->setPassword('******');

简单地

$transport = Swift_MailTransport::newInstance()

所以它不再使用SMTP我收到成功通知的消息但由于某种原因它将其发送到来自电子邮件地址并且也被标记为垃圾邮件,因为它可能不是来自帐户因此为什么我想用smtp。 更新2:阅读其他帖子后我发现

$transport = Swift_smtpTransport::newInstance( "mx1.hostinger.co.uk" , 2525 );

实际上应该是

$transport = Swift_SmtpTransport::newyInstance( "mx1.hostinger.co.uk" , 2525 )
;

这摆脱了类未找到的错误,但我现在得到超时错误。我确定我正在使用正确的邮件服务器详细信息,因为我从主机获取它们。 任何帮助非常感谢。

1 个答案:

答案 0 :(得分:1)

最终解决了

$transport = Swift_smtpTransport::newInstance( "mx1.hostinger.co.uk" , 2525 );

实际上应该是

$transport = Swift_SmtpTransport::newyInstance( "mx1.hostinger.co.uk" , 2525 );

然后我的托管服务提供商不允许在我的计划上通过SMTP发送邮件。