Intereting Posts
Как создать массив для JSON с использованием PHP? mysql_fetch_assoc () ожидает, что параметр 1 будет ресурсом, boolean задан в C: \ xampp \ htdocs \ qcc \ truckdelivery.php в строке 9 не выбрана база данных Локализованные (короткие) месячные имена с использованием IntlDateFormatter в PHP? Получите дополнительный массив с определенным значением MySQL ORDER BY и while loop Запрещено: у вас нет разрешения на доступ / phpmyadmin на этом сервере Как архивировать динамический (PHP) сайт как статический HTML? PHP 5 и Zend MVC для Windows и IIS Проверьте, включен ли GPS-устройство пользователя Объединение значений многомерных массивов в PHP Создавать экземпляр класса с круглыми скобками или без них? Почему этот вызов PHP для json_encode бесшумно терпит неудачу – неспособность обрабатывать одиночные кавычки? Получить данные json с помощью PHP Использование Gridfs под Laravel 5.3 с драйвером mongo-php-library 2.2 Debian Jessie – Apache2 / PHP 5.6, не может загружать более 128 КБ

Отправить письмо с приложением через PHPMailer

Я готов создать страницу формы для веб-сайта, для которой потребуется заполнить много полей, которые будут отправлены по указанному электронному адресу.

Пока я создал страницу фиктивного php-email, которая получает ваше сообщение, 1 вложение и адрес электронной почты получателя, используя SMTP Google.

Вот мой код для uploadtest.html:

<body> <h1>Test Upload</h1> <form action="email.php" method="get"> Message: <input type="text" name="message"> Email: <input type="text" name="email"><br> Attach File: <input type="file" name="file" id="file"> <input type="submit"> </form> </body> 

uploadtest.html – это то, что пользователь увидит

Вот код для email.php:

 <?php require("class.phpmailer.php"); $mail = new PHPMailer(); $recipiant = $_GET["email"]; $message = $_GET["message"]; $mail->IsSMTP(); // telling the class to use SMTP $mail->SMTPAuth = true; // SMTP authentication $mail->Host = "smtp.gmail.com"; // SMTP server $mail->Port = 465; // SMTP Port $mail->SMTPSecure = 'ssl'; $mail->Username = "xxxxx@gmail.com"; // SMTP account username $mail->Password = "xxxxxxxx"; // SMTP account password $mail->AddAttachment($_FILES['tmp_name']); //****HERE'S MY MAIN PROBLEM!!! $mail->SetFrom('cinicraftmatt@gmail.com', 'CiniCraft.com'); // FROM $mail->AddReplyTo('cinicraftmatt@gmail.com', 'Dom'); // Reply TO $mail->AddAddress($recipiant, 'Dominik Andrzejczuk'); // recipient email $mail->Subject = "First SMTP Message"; // email subject $mail->Body = $message; if(!$mail->Send()) { echo 'Message was not sent.'; echo 'Mailer error: ' . $mail->ErrorInfo; } else { echo 'Message has been sent.'; } ?> 

Поэтому из того, что я могу здесь сказать, метод AddAttachment () PHPMailer принимает в качестве параметра URL-адрес файла DIRECTORY, который вы хотите добавить. И здесь моя главная проблема.

Каким будет имя переменной, которая будет получать местоположение моего файла (dir / upload.jpg), который я загрузил, чтобы я мог использовать его в качестве параметра в методе AddAttachment ()?

Solutions Collecting From Web of "Отправить письмо с приложением через PHPMailer"

Нет, он не требует URL-адресов или каталогов. Он имеет прямой путь к файлу.

например

 $mailer->AddAttachment( '/path/to/file/on/your/server.txt', 'name_of_file_in_email', 'base64', 'mime/type' ); 

Путь не требует объяснений. name_of_file_in_email позволяет вам «переименовать» файл, чтобы вы могли загрузить файл с именем «foo.exe» на своем сервере, он может отображаться как «bar.jpg» в электронном письме, которое получает клиент.

Ваша проблема заключается в том, что вы пытаетесь присоединить загруженный файл, но используете неправильный источник. Должен быть

 <input type="file" name="thefile" /> ^^^^^^^ $_FILES['thefile']['tmp_name'] ^^^^^^^ 

Обратите внимание на отношение имени поля к $ _FILES.

Тег <form> должен указывать атрибут enctype следующим образом:

 <form ... enctype="multipart/form-data"> ... </form> 

Это будет отправлено через PHPMailer Class

 $mail->AddAttachment($_FILES['tmp_name'],$_FILES['name']); //****HERE'S MY MAIN PROBLEM!!! So you would have to give file name also. 

попробуйте с этим

  include "phpMailerClass.php"; $email = new PHPMailer(); $email->From = $to; $email->FromName = $_POST['name']; $email->Subject = $subject; $email->Body = $EmailText; $email->AddAddress( 'shafiq2626@hotmail.com' ); $email->IsHTML(true); $file_to_attach = $_FILES['file']['tmp_name']; $filename=$_FILES['file']['name']; $email->AddAttachment( $file_to_attach , $filename ); $email->Send(); 

Это код работает нормально.