【问题标题】:PHP mail script with send file don't work [duplicate]带有发送文件的PHP邮件脚本不起作用[重复]
【发布时间】:2015-01-17 10:10:05
【问题描述】:

为什么我的脚本不起作用?
我尝试使用 xampp 和在线主机。
我试过$headers = "From: $from \r\n";
我得到“发送成功!”但我没有收到任何邮件。
$to = "********"; $from = $_POST['email']; $nume = $_POST['nume']; $prenume = $_POST['prenume']; $phone = $_POST['telefon']; $oras = $_POST['oras']; $adresa = $_POST['adresa']; $facultate = $_POST['facultate']; $titlu1 = $_POST['titlu1']; $desc1 = $_POST['desc1']; $titlu2 = $_POST['titlu2']; $desc2 = $_POST['desc2']; $titlu3 = $_POST['titlu3']; $desc3 = $_POST['desc3']; $subject = "Luminile Iernii - Inscriere: $nume $prenume"; $message = " Nume si Prenume: $nume $prenume \n Email: $from \n Nr. Telefon: $phone \n Oras: $oras \n Adresa: $adresa \n Institutia de invatamant: $facultate \n Titlu Fotografie 1: $titlu1 \n Descriere Fotografie 1: $desc1 \n Titlu Fotografie 2: $titlu2 \n Descriere Fotografie 2: $desc2 \n Titlu Fotografie 3: $titlu3 \n Descriere Fotografie 3: $desc3 \n ";

    // Temporary paths of selected files
    $file1 = $_FILES['file1']['tmp_name'];
    $file2 = $_FILES['file2']['tmp_name'];
    $file3 = $_FILES['file3']['tmp_name'];

    // File names of selected files
    $filename1 = "Fotografie 1";
    $filename2 = "Fotografie 2";
    $filename3 = "Fotografie 3";

    // array of filenames to be as attachments
    $files = array($file1, $file2, $file3);
    $filenames = array($filename1, $filename2, $filename3);

    // include the from email in the headers
    $headers = "From: $from";

    // boundary
    $time = md5(time());
    $boundary = "==Multipart_Boundary_x{$time}x";

</code>

附件是否需要边界?

    // 用于通过电子邮件发送附件的标题
    $headers .= "\nMIME-Version: 1.0\n" 。 “内容类型:多部分/混合;\n”。 "边界=\"{$边界}\"";

    // 多部分边界
    $message = "--{$boundary}\n" 。 “内容类型:文本/纯文本;字符集=\”iso-8859-1\“\n”。 “内容传输编码:7bit\n\n”。 $消息。 "\n\n";
$message .= "--{$boundary}\n";

    // 将附件附加到消息中
    foreach( $files as $key => $value )
    {
        如果(空($值))
        {
            未设置($files[$key]);
            未设置($filenames[$key]);
        }
    }

    for($x = 0; $x 

谁能给我解释一下?
我不明白...我做错了什么?

【问题讨论】:

  • 指定错误并准确说明是什么不工作..
  • 所以您正尝试使用带有附件的 php 发送电子邮件?
  • 我收到“发送成功!”但我没有收到任何邮件。
  • 您检查过收件箱的垃圾邮件吗?
  • 是的,@JasonBassett。

标签: php file email attachment


【解决方案1】:

尝试使用http://github.com/PHPMailer/PHPMailer

这是一个 PHP 插件,无需编写所有代码即可处理发送邮件的所有压力任务。

http://github.com/PHPMailer/PHPMailer 下载 PHPMailer 脚本并将其上传到您的服务器。

像这样包含该文件:&lt;?php require_once('/path/to/class.phpmailer.php'); ?&gt;

您的最终结果将如下所示:

require_once('/path/to/class.phpmailer.php');

$email = new PHPMailer();
$email->From      = 'you@example.com';
$email->FromName  = 'Your Name';
$email->Subject   = 'Message Subject';
$email->Body      = $bodytext;
$email->AddAddress( 'destinationaddress@example.com' );

$file_to_attach = 'PATH_OF_YOUR_FILE_HERE';

$email->AddAttachment( $file_to_attach , 'NameOfFile.pdf' );

$email->Send();

如果您尝试在没有此类文件的情况下发送附件,您将编写大量不需要的代码。这个插件使发送电子邮件变得更加容易,最终发送带有附件的电子邮件也变得更加容易。

我希望这会有所帮助。

【讨论】:

    【解决方案2】:

    您的 from 是否设置了发送文件的编码类型?

    <form action="upload.php" method="post" enctype="multipart/form-data">
    

    这可能会对您有所帮助:http://www.w3schools.com/php/php_file_upload.asp

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-09
    • 2013-09-15
    • 2020-01-04
    • 1970-01-01
    • 2015-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多