Nano Hash - криптовалюты, майнинг, программирование

PHP: отправить текстовое сообщение с загруженным изображением в качестве вложения

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

if ( isset($_POST['submit']) ):

        /* GET File Variables */ 
        $tmpName = $_FILES['attachment']['tmp_name']; 
        $fileType = $_FILES['attachment']['type']; 
        $fileName = $_FILES['attachment']['name']; 

        if ( file($tmpName) ) { 
          /* Reading file ('rb' = read binary)  */
          $file = fopen($tmpName,'rb'); 
          $data = fread($file,filesize($tmpName)); 
          fclose($file); 

          /* a boundary string */
          $randomVal = md5(time()); 
          $mimeBoundary = "==Multipart_Boundary_x{$randomVal}x"; 

          /* Header for File Attachment */
          $headers .= "\nMIME-Version: 1.0\n"; 
          $headers .= "Content-Type: multipart/mixed;\n" ;
          $headers .= " boundary=\"{$mimeBoundary}\""; 

          /* Multipart Boundary above message */
          $message = "This is a multi-part message in MIME format.\n\n" . 
          "--{$mimeBoundary}\n" . 
          "Content-Type: text/plain; charset=\"iso-8859-1\"\n" . 
          "Content-Transfer-Encoding: 7bit\n\n" . 
          $message . "\n\n"; 

          /* Encoding file data */
          $data = chunk_split(base64_encode($data)); 

          /* Adding attchment-file to message*/
          $message .= "--{$mimeBoundary}\n" . 
          "Content-Type: {$fileType};\n" . 
          " name=\"{$fileName}\"\n" . 
          "Content-Transfer-Encoding: base64\n\n" . 
          $data . "\n\n" . 
          "--{$mimeBoundary}--\n"; 
        } 

        $headers = "From: [email protected]" . "\r\n";
        $headers .= "Content-Type: text/plain; charset=UTF-8\r\n";
        $headers .= "Reply-To: " . $mail . " \r\n";

        $subject = "Errormessage: " . $error;

        $message .= "this is some text that get's sent properly!";

        // Send Error
        $success = mail( $mail, $subject, $message, $headers ); ?>

Любая идея, что я делаю неправильно здесь? Я хотел бы получить некоторую помощь.

Заранее спасибо.

31.08.2014

  • Лучшее начало для отладки таких проблем — использовать сообщение, отправленное обычным почтовым клиентом, и сравнить его структуру (просмотреть источник сообщения) со структурой сообщения, которое вы отправляете через php. 31.08.2014
  • Попробуйте добавить заголовок Content-Disposition: attachment в заголовки вложения. 31.08.2014

Ответы:


1
please try this code
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Email Attachment Without Upload - Excellent Web World</title>
<style>
body{ font-family:Arial, Helvetica, sans-serif; font-size:13px;}
th{ background:#999999; text-align:right; vertical-align:top;}
input{ width:181px;}
</style>
</head>
<body>
<form action="emailSend.php" method="post" name="mainform" enctype="multipart/form-         data">
<table width="500" border="0" cellpadding="5" cellspacing="5">
   <tr>
    <th>Your Name</th>
    <td><input name="fieldFormName" type="text"></td>
</tr>
<tr>
<tr>
    <th>Your Email</th>
    <td><input name="fieldFormEmail" type="text"></td>
</tr>
<tr>
    <th>To Email</th>
    <td><input name="toEmail" type="text"></td>
</tr>

<tr>
    <th>Subject</th>
    <td><input name="fieldSubject" type="text" id="fieldSubject"></td>
</tr>
<tr>
    <th>Comments</th>
    <td><textarea name="fieldDescription" cols="20" rows="4" id="fieldDescription"></textarea></td>
</tr>
<tr>
  <th>Attach Your File</th>
  <td><input name="attachment" type="file"></td>
</tr>
<tr>
    <td colspan="2" style="text-align:center;"><input type="submit" name="Submit" value="Send"><input type="reset" name="Reset" value="Reset"></td>
</tr>
</table>
</form>

Ниже приведен код PHP для отправки этого файла в приложении электронной почты.

<?php

$to = $_POST['toEmail'];
$fromEmail = $_POST['fieldFormEmail']; 
$fromName = $_POST['fieldFormName']; 
$subject = $_POST['fieldSubject']; 
$message = $_POST['fieldDescription'];

/* GET File Variables */ 
$tmpName = $_FILES['attachment']['tmp_name']; 
$fileType = $_FILES['attachment']['type']; 
$fileName = $_FILES['attachment']['name']; 

/* Start of headers */ 
$headers = "From: $fromName"; 

if (file($tmpName)) { 
/* Reading file ('rb' = read binary)  */
$file = fopen($tmpName,'rb'); 
$data = fread($file,filesize($tmpName)); 
fclose($file); 

 /* a boundary string */
 $randomVal = md5(time()); 
 $mimeBoundary = "==Multipart_Boundary_x{$randomVal}x"; 

 /* Header for File Attachment */
 $headers .= "\nMIME-Version: 1.0\n"; 
 $headers .= "Content-Type: multipart/mixed;\n" ;
 $headers .= " boundary=\"{$mimeBoundary}\""; 

 /* Multipart Boundary above message */
 $message = "This is a multi-part message in MIME format.\n\n" . 
 "--{$mimeBoundary}\n" . 
 "Content-Type: text/plain; charset=\"iso-8859-1\"\n" . 
 "Content-Transfer-Encoding: 7bit\n\n" . 
 $message . "\n\n"; 

 /* Encoding file data */
 $data = chunk_split(base64_encode($data)); 

 /* Adding attchment-file to message*/
 $message .= "--{$mimeBoundary}\n" . 
 "Content-Type: {$fileType};\n" . 
 " name=\"{$fileName}\"\n" . 
 "Content-Transfer-Encoding: base64\n\n" . 
 $data . "\n\n" . 
 "--{$mimeBoundary}--\n"; 
 } 

 $flgchk = mail ("$to", "$subject", "$message", "$headers"); 

 if($flgchk){
 echo "A email has been sent to: $to";
 }
 else
 {
 echo "Error in Email sending";
 }
 ?>
31.08.2014
  • как добавить к этому обычный текст электронной почты? Это учебник, из которого я получил свой код, но он у меня не работает. 31.08.2014

  • 2
  • Что такое mysomefile.zip и переменная $mypath? Можете ли вы показать мне, как связать это с формой, в которую я загружаю файл? 01.09.2014
  • имя файла mysomefile.zip и $mypath означает путь к файлу 06.09.2014
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

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

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..