繁体   English   中英

PHP在电子邮件中附加音频文件

[英]PHP attach audio file in email

我正在使用以下SMTP邮件代码发送音频附件:

<?php

session_start();

$title = $_POST['title'];
$first_name = $_POST['name'];
$last_name = $_POST['lastname'];
$email_from = $_POST['email'];
$scaptcha = strtolower($_POST['scaptcha']);
if ($scaptcha != $_SESSION['captcha']) {
    echo 'You have entered wrong captcha';
    exit(0);
}

require('./class.phpmailer.php');

function clean_string($string) {
    $bad = array("content-type", "bcc:", "to:", "cc:", "href");
    return str_replace($bad, "", $string);
}

$email_message = "";
$email_message .= "Title: "      . clean_string($title)      . "\n";
$email_message .= "First Name: " . clean_string($first_name) . "\n";
$email_message .= "Last Name: "  . clean_string($last_name)  . "\n";
$email_message .= "Email: "      . clean_string($email_from) . "\n";

$allowedExts = array("mp3","wav","dss");
$temp = explode(".", $_FILES["file"]["name"]);
$extension = end($temp);
if ((($_FILES["file"]["type"] == "audio/mpeg")) && in_array($extension, $allowedExts)) {
    if ($_FILES["file"]["error"] > 0) {
        echo "<script>alert('Error: " . $_FILES["file"]["error"] . "')</script>";
    } else {
        $d = 'Audio/Uploads/';
        $de = $d . basename($_FILES['file']['name']);
        move_uploaded_file($_FILES["file"]["tmp_name"], $de);
        $fileName = $_FILES['file']['name'];
        $filePath = $_FILES['file']['tmp_name'];
    }
} else {
    echo "<script>alert('Invalid file')</script>";
}

$headers = 'From: ' . $email_from . "\r\n" .
           'Reply-To: ' . $email_from . "\r\n" .
           'X-Mailer: PHP/' . phpversion();
$mail = new PHPMailer();
$mail->IsSMTP();
$mail->SMTPDebug = 0;
$mail->Debugoutput = 'html';
$mail->Host = "smtp.gmail.com";
$mail->Port = 25;
$mail->SMTPAuth = true;
$mail->Username = "saro17.ams@gmail.com";
$mail->Password = "*****";
$mail->SetFrom($email_from, $first_name . ' ' . $last_name);
//$mail->AddReplyTo('replyto@example.com','First Last');
$mail->AddAddress('saro17.ams@gmail.com', 'Saravana');
$mail->Subject = 'New audio file received';
$mail->MsgHTML($email_message);
$mail->AltBody = 'This is a plain-text message body';
$mail->AddAttachment($_FILES['file']['tmp_name'], $_FILES['file']['name']);

if (!$mail->Send()) {
    echo "<script>alert('Mailer Error: " . $mail->ErrorInfo . "')</script>";
} else {
    echo "<script>alert('Your request has been submitted. We will contact you soon.')</script>";
    Header('Location: contact.php');
}

?>

请帮助我解决此问题。 我已经尝试了一个多星期。 还是我不明白。 我也尝试过PHP邮件程序。 那也行不通。

更新:我收到以下错误:

Mailer错误:以下“发件人”地址失败:saro17.ams@gmail.com:未连接即被称为“邮件发件人”,

发送消息中的音频文件链接而不是内联附件。

$ mail-> AddAttachment方法用于内联附件。

由于文件的加密和文件的大小,最大服务器不允许发送音频,视频或zip文件的内联附件。

嗯..使用PHPMailer附加任何东西真的非常容易,这是代码:

PHPMailer链接: https : //github.com/PHPMailer/PHPMailer

您可以添加附件,例如:

$mail->addAttachment('/var/tmp/file.tar.gz');         // Add attachments

这里是完整的代码:

<?php
require 'PHPMailerAutoload.php';

$mail = new PHPMailer;

//$mail->SMTPDebug = 3;                               // Enable verbose debug output

$mail->isSMTP();                                      // Set mailer to use SMTP
$mail->Host = 'smtp1.example.com;smtp2.example.com';  // Specify main and backup SMTP servers
$mail->SMTPAuth = true;                               // Enable SMTP authentication
$mail->Username = 'user@example.com';                 // SMTP username
$mail->Password = 'secret';                           // SMTP password
$mail->SMTPSecure = 'tls';                            // Enable TLS encryption, `ssl` also accepted
$mail->Port = 587;                                    // TCP port to connect to

$mail->setFrom('from@example.com', 'Mailer');
$mail->addAddress('joe@example.net', 'Joe User');     // Add a recipient
$mail->addAddress('ellen@example.com');               // Name is optional
$mail->addReplyTo('info@example.com', 'Information');
$mail->addCC('cc@example.com');
$mail->addBCC('bcc@example.com');

$mail->addAttachment('/var/tmp/file.tar.gz');         // Add attachments
$mail->addAttachment('/tmp/image.jpg', 'new.jpg');    // Optional name
$mail->isHTML(true);                                  // Set email format to HTML

$mail->Subject = 'Here is the subject';
$mail->Body    = 'This is the HTML message body <b>in bold!</b>';
$mail->AltBody = 'This is the body in plain text for non-HTML mail clients';

if(!$mail->send()) {
    echo 'Message could not be sent.';
    echo 'Mailer Error: ' . $mail->ErrorInfo;
} else {
    echo 'Message has been sent';
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM