jquery 发送带附件的邮件

Posted

技术标签:

【中文标题】jquery 发送带附件的邮件【英文标题】:jquery send email with attachment 【发布时间】:2011-12-09 22:13:16 【问题描述】:

我有一种收集用户信息的表格

Name
Age
CV

然后我通过 jquery 提交该表单以发送电子邮件

我有以下代码

var a= $('#a').attr('value');
var b= $('#b').attr('value');

          $j.ajax(
            type: "POST",
            url: "sendemail.php",
            data: "a="+ a +"&b="+ b,
            success: function(html)
                         .............

此功能适用于文件,但我无法找到一种方法将文件验证为 MSWORD 或 PDF,然后附加并发送电子邮件。

我正在使用 php mail() 函数发送电子邮件

$Headers  = "MIME-Version: 1.0\n";
$Headers .= "Content-type: text/html; charset=iso-8859-1\n";
$Headers .= "From: ".$FromName." <".$FromEmail.">\n";
$Headers .= "Reply-To: ".$ReplyTo."\n";
$Headers .= "X-Sender: <".$FromEmail.">\n";
$Headers .= "X-Mailer: PHP\n"; 
$Headers .= "X-Priority: 1\n"; 
$Headers .= "Return-Path: <".$FromEmail.">\n";  
        if(mail($ToEmail, $Subject, $Content, $Headers) == false) 
    echo "2";
        
        else
         
        echo "1" ;
        


my basic question is:
1. how to validate file (only MSWORD and PDF)
2. send file to sendemail.php via AJAX to attach with email.

谢谢

【问题讨论】:

看这里webcheatsheet.com/PHP/send_email_text_html_attachment.php 您只是通过电子邮件发送文件还是将其存储在您的服务器上? 将文件作为附件发送到电子邮件中 【参考方案1】:

您可以使用PHPMailer 库,它可以很好地处理电子邮件。您可以使用此库一次将带有附件的电子邮件发送给多个收件人。

【讨论】:

亲爱的朋友感谢您的回复,我知道这个 PHPMailer,我也使用过这个。但我需要为此使用 Jquery 和 php。 PHPMailer 是一个 PHP 库。您可以根据自己的要求在 sendemail.php 文件中使用这个库。 是的,但我的基本问题仍然相同,如何验证文件,然后通过 jquery 传递给 sendemail.php 以作为附件。谢谢 你不能用 jquery 管理文件。无论如何,首先您必须将其发送到服务器,然后进行验证。您不能信任文件大小,也不能信任来自用户的任何内容。您可以使用 iframe 在后台上传文件,然后使用 jquery 重播。 @Ernestas Stankevičius:他可以使用JQuery上传文件,你可以考虑像uploadify这样的JQuery插件(www.uploadify.com/)。使用这个你可以验证用户的文件,在验证和上传后使用 PHPMailer 和 bang.. 你完成了。【参考方案2】:

在你的函数中包含PHPMailer

试试这个:

require("class.phpmailer.php");
$mail = new PHPMailer();
$mail->IsMail();

$mail->From="mailer@example.com";
$mail->FromName="My site's mailer";
$mail->Sender="mailer@example.com";
$mail->AddReplyTo("replies@example.com", "Replies for my site");

$mail->AddAddress("email@example.com");
$mail->Subject = "Your invoice";

$mail->IsHTML(false);
$mail->AddAttachment('files/invoice-user-1234.pdf', 'invoice.pdf');
$mail->Body = "Please find your invoice attached.";
if(!$mail->Send())

   echo "Error sending: " . $mail->ErrorInfo;;

else

   echo "Letter is sent";

【讨论】:

谢谢,但我的问题还是一样,$mail->AddAttachment('files/invoice-user-1234.pdf', 'invoice.pdf');这不是固定文件,这是来自用户的文件。我如何将选定的文件从 FORM 发送到 sendemail.php 文件以进行进一步处理? 但是用户选择输入文件类型或选择文件名的表单在系统上已经存在?

以上是关于jquery 发送带附件的邮件的主要内容,如果未能解决你的问题,请参考以下文章

Word邮件合并不能发送HTML格式以及怎么带附件?

Python向多人发送、抄送带附件的邮件(含详细代码)

用Python实现带附件发送邮件的功能

用Python实现带附件发送邮件的功能

用Python实现带附件发送邮件的功能

用Python实现带附件发送邮件的功能