Вложения PHP-почты

Я использую этот скрипт для отправки электронных писем определенному персоналу, но из-за изменений в моей системе я должен теперь отправлять атташе с помощью электронной почты, и я попытался использовать многоуровневые фрагменты кода для этого, но был неудачным … Я все еще получаю электронной почты, но без прикрепления, которое совершенно бессмысленно в этом случае, я разместил сценарий, который я использую ниже

я удалил реальные адреса, которые я использовал, и smtp-сервер

require("PHPMailer/class.phpmailer.php"); $mail = new PHPMailer(); $mail->IsSMTP(); // set mailer to use SMTP $mail->Host = "SMTP.SErver.com"; $mail->From = "From@email.com"; $mail->FromName = "HCSC"; $mail->AddAddress("To@email.com", "Example"); $mail->AddReplyTo("Reply@email.com", "Hcsc"); $mail->WordWrap = 50; $mail->IsHTML(false); $mail->Subject = "AuthSMTP Test"; $mail->Body = "AuthSMTP Test Message!"; $mail->AddAttachment("matt.txt"); //this is basicly what i am trying to attach as a test but will be using excel spreadsheets in the production if(!$mail->Send()) { echo "Message could not be sent. <p>"; echo "Mailer Error: " . $mail->ErrorInfo; exit; } echo "Message has been sent"; 

Я также попробовал несколько других emtods для прикрепления файла, но никто, похоже, не работает, очень полезно

Ваш код выглядит довольно простым и синтаксически правильным. Является ли сценарий возвращением сообщений об ошибках?

Если вы получаете сообщение без каких-либо проблем, проблема не в вашем коде.

Несколько вещей, чтобы проверить:

  • Убедитесь, что файл «matt.txt» читается вашим веб-сервером и что путь правильный. Путь к файлу должен быть включен в вызов метода $ mail-> AddAttachment () и должен относиться к местоположению скрипта.
  • Убедитесь, что ваш почтовый сервер не удаляет вложения из-за ограничений и / или пытается отправить другой тип файла вложения (попробуйте файл .zip или .jpg)
  • Если вы используете более новую версию phpMailer, вы можете попробовать поймать все исключения, которые были выбраны (возможно, это не препятствует выходу сообщения, а просто предотвращает включение вложения) с использованием следующего синтаксиса: ( принято из кода примера phpMailer )

     require 'PHPMailer/PHPMailerAutoload.php'; $mail = new PHPMailer(true); try { $mail->IsSMTP(); // set mailer to use SMTP $mail->Host = "SMTP.SErver.com"; $mail->From = "From@email.com"; $mail->FromName = "HCSC"; $mail->AddAddress("To@email.com", "Example"); $mail->AddReplyTo("Reply@email.com", "Hcsc"); $mail->WordWrap = 50; $mail->IsHTML(false); $mail->Subject = "AuthSMTP Test"; $mail->Body = "AuthSMTP Test Message!"; $mail->AddAttachment("matt.txt"); echo "Message Sent OK<p></p>\n"; } catch (phpmailerException $e) { echo $e->errorMessage(); //Pretty error messages from PHPMailer } catch (Exception $e) { echo $e->getMessage(); //Boring error messages from anything else! } 

вам необходимо предоставить полный путь к файлу и функции имени файла, за исключением двух / трех аргументов

 // Setup mail class, recipients and body $mailer->AddAttachment('/home/mywebsite/public_html/file.zip', 'file.zip'); 

http://www.askapache.com/php/phpfreaks-eric-rosebrocks-phpmailer-tutorial.html#File_Attachments_PHP_Mail_PHPMailer

Хорошо, это еще не закрыто, поэтому я подумал, так как у меня была такая же проблема, я бы дал вам мое решение, которое сработало для меня. Я считаю, что предыдущая почтальона была права. Вам нужно определить абсолютный путь к вашему файлу. Это не всегда легко сделать, особенно если вы работаете на общем сервере. В любом случае я вложил следующий код на свою страницу, и он повторил точный путь к этой странице. Оттуда было легко разобраться, как сбросить уровень в каталог, в котором хранятся файлы, которые я хотел подключить.

  'var_dump(stream_resolve_include_path("Thankyou.php"));' 

Просто скопируйте и вставьте эту строку и поместите ее на свою страницу, вставьте имя своей страницы и замените Thankyou.php, который я вставил (сохраняйте речевые метки). Запустите страницу и получите абсолютный путь. Просто удалите его послесловие и вставьте новый путь в сегмент AddAttachment PHPMailer.