Вопрос по html, email, php, sendmail, phpmailer – вложения почтовой программы php

1

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

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

    require("PHPMailer/class.phpmailer.php");

$mail = new PHPMailer();

$mail->IsSMTP();    // set mailer to use SMTP
$mail->Host = "SMTP.SErver.com";    

$mail->From = "[email protected]";    
$mail->FromName = "HCSC";  
$mail->AddAddress("[email protected]", "Example"); 
$mail->AddReplyTo("[email protected]", "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 прикрепления файла, но ни один, кажется, не работает, любая помощь сильно ценится

Ваш Ответ

3   ответа
5

возвращает какие-либо сообщения об ошибках?

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

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

Make sure that the file "matt.txt" is both readable by your webserver and that the path is correct. The path to the file needs to be included in the $mail->AddAttachment() method call and should be relative to the script's location. Verify that your mail server isn't stripping any attachments out due to restrictions and/or try sending a different attachment file type (try a .zip or a .jpg file)

If you're running a newer version of phpMailer, you can try catching any exceptions that are thrown (perhaps one that isn't preventing the message from going out, but just preventing the attachment from being included) using the following syntax: (taken from phpMailer Example Code)

require 'PHPMailer/PHPMailerAutoload.php';
$mail = new PHPMailer(true);
try {

  $mail->IsSMTP();    // set mailer to use SMTP
  $mail->Host = "SMTP.SErver.com";    

  $mail->From = "[email protected]";    
  $mail->FromName = "HCSC";  
  $mail->AddAddress("[email protected]", "Example"); 
  $mail->AddReplyTo("[email protected]", "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!

}
Да, электронное письмо отправляется без ошибок, так что вы должны указать путь, поэтому, если файл находится здесь, D: \ xampp \ htdocs \ excel \ files \ matt.txt & quot; Мне нужно включить это в AddAttachment (& quot; & quot;) .. Matthew
отлично, приятно слышать!
Я попытался добавить полный путь к файлу, и теперь, кажется, работает нормально, спасибо: D Matthew
1

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

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

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

2

а имя файла функций содержит два / три аргумента

// 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

Похожие вопросы