phpMailer не отправляет attachmnets - PullRequest
       19

phpMailer не отправляет attachmnets

1 голос
/ 21 февраля 2020

У меня есть следующая функция phpmailer, которая работает, за исключением того, что она не прикрепляет вложение. Функция отображает "найденное вложение". Существуют ли другие параметры, которые необходимо настроить, чтобы разрешить вложения?

function mailerExpressBlueHostSWAG(array $mailInputs){   

    require_once '../include/phpmailer/PHPMailerAutoload.php';

    $mail = new PHPMailer();
    $mail->IsMail();   
    $mail->SetFrom('swag@sustainablewestonma.org');
    $mail->addAddress($mailInputs['addAddress']);   // use for production; 


    if(file_exists("../uploads/" . $mailInputs['name']))echo 'found attachment';   
    $mail->addAttachment("../uploads/" . $mailInputs['name']);

    $mail->addEmbeddedImage("../../../uploads/2019/09/newswagimageSmall.jpg", "swag-logo");

    $body = $mailInputs['body'] ;   
    $mail->Subject = $mailInputs['subject'] ;
    $mail->Body    = $body;
    $mail->IsHTML(true);
    $mail->ContentType="text/HTML";   

    if(1==1){
        if(!$mail->send()) {
            echo 'mail not sent <br>' ;
            return 'Message could not be sent.' . 'Mailer Error: ' . $mail->ErrorInfo;
        }else{
            echo 'mail sent 2<br>';
            return 'Message has been sent';
       }
   }
   $mail->ClearAddresses();   
}

1 Ответ

0 голосов
/ 21 февраля 2020

Прежде всего, вы используете старую версию PHPMailer, поэтому получите последнюю .

Этот код несколько запутан:

if(file_exists("../uploads/" . $mailInputs['name']))echo 'found attachment';   
$mail->addAttachment("../uploads/" . $mailInputs['name']);

Это условие не будет применяться к вызову addAttachment, поскольку вокруг него нет {}.

Основная проблема заключается в том, что проверка существования файла не означает, что вы можете его прочитать. addAttachment возвращает истину, если он может прочитать файл, поэтому используйте его для прямой проверки:

if (!$mail->addAttachment("../uploads/" . $mailInputs['name'])) {
    echo 'File could not be read';
}

Если вы хотите, проверьте владение и разрешение файла.

...