PhpMailer 不发送带有 .pdf 文件的电子邮件

用户9885084

我想通过 PhpMailer 发送文件。如果文件的扩展名为 .txt 或 .png ecc .. 它向我发送带有文件的电子邮件(它有效)但如果我想发送 .pdf 我没有收到电子邮件......这是我的一部分PHP代码:

$Name = $_POST['Name'];
$Email = $_POST['Email'];
$Surname = $_POST['Surname'];
$Residence = $_POST['Residence'];
$Phone = $_POST['Phone'];

$Name = filter_var($Name, FILTER_SANITIZE_STRING);
$Surname = filter_var($Surname, FILTER_SANITIZE_STRING);
$Email = filter_var($Email, FILTER_SANITIZE_EMAIL);
$Residence = filter_var($Residence, FILTER_SANITIZE_STRING);;
$Phone = filter_var($Phone, FILTER_SANITIZE_STRING);;

$mail = new PHPMailer();
$mail->SMTPAuth = true;
$mail->Host = "smtp.gmail.com"; // SMTP server
$mail->SMTPSecure = "ssl";
$mail->Username = "xxx"; //account with which you want to send mail. Or use this account. i dont care :-P
$mail->Password = "xxx"; //this account's password.
$mail->SetFrom('xxx');
$mail->Port = "465";
$mail->isSMTP();  // telling the class to use SMTP
$rec1="xxx"; //receiver. email addresses to which u want to send the mail.
$mail->AddAddress($rec1);
$mail->Subject  = "Eventbook";
$mail->isHTML(true);
$mail->Body     = "<h1>Contact from Website</h1>
<ul>
<li>Nome: {$Name}</li>
<li>Cognome: {$Surname}</li>
<li>Comune di residenza: {$Residence}</li>
<li>Email: {$Email}</li>
<li>Telefono: {$Phone}</li>
</ul>";
$mail->WordWrap = 200;
$mail->addAttachment($_FILES['curriculum']['tmp_name'], $_FILES['curriculum']['name']);
if(!$mail->Send()) {
echo 'Message was not sent!.';
$errore = $mail->ErrorInfo;
echo 'Mailer error: ' . $mail->ErrorInfo;
} else {
echo  //Fill in the document.location thing
'<script type="text/javascript">
                        if(confirm("Your mail has been sent"))
                        document.location = "/";
        </script>';
}

这是带有ajax的JS脚本:

var formData = new FormData();
        formData.append('Name', $('#Name').val());
        formData.append('Surname', $('#Surname').val());
        formData.append('Residence', $('#Residence').val());
        formData.append('Email', $('#Email').val());
        formData.append('Phone', $('#Phone').val());
        formData.append('Curriculum', $('#Curriculum')[0].files[0]);
        $.ajax({
            method: 'POST',
            url: "scripts/register.php",
            data: formData,
            processData: false,
            contentType: false,
            success: function (Curriculum) {
                alert('Success');
            }
        });

这是 HTML 文件输入部分:

<input type="file" name="Curriculum" id="Curriculum" style="display: none;" class="form__input" />
           <label for="Curriculum" id="LabelCurriculum" class="form__input" style="background-color: white; display: block; width: 100%; padding: 20px; font-family: Roboto; -webkit-appearance: none; border: 0; outline: 0; transition: 0.3s;">Click to upload</label>

似乎由于它的大小而无法上传...因为我上传了 50KB 的 .txt 和 .png 但 .pdf 是 1MB

更新:当我调试时,我可以看到文件已上传,所以我认为它没有发送电子邮件......为什么????

同步

不要直接使用来自$_FILES超全局变量的值,因为它们可能是可伪造的。您必须使用内置函数move_uploaded_fileis_uploaded_file函数来验证它们处理文件上传PHP 文档非常好,所以按照他们说的去做。

将您的代码基于PHPMailer 提供发送文件上传示例,示例move_uploaded_file在使用文件之前使用。不使用用户提供的文件名以避免文件覆盖攻击的可能性也是一个好主意 - 在示例中您将看到它使用文件名的散列(这将始终是安全的)来避免这样做。

检查关键函数的返回值是个好主意 -addAttachment()如果它无法读取您要求它读取的文件,则返回 false,例如:

if (!$mail->addAttachment($filename, 'file.pdf')) die('Could not read file!');

查看在您的 PHP 配置中设置的文件上传大小限制,并在您的表单中进行镜像 - 请参阅此处此处如果超过此限制,您可能会发现$_FILES数组中仍有条目,但它可能指向一个空文件或不存在的文件,这是验证和检查返回值的另一个原因。您可以var_dump($_FILES)准确地查看您的脚本正在接收的内容 - 它可能不包含您认为应该包含的内容。

我可以看到您的代码基于一个非常旧的示例,因此请确保您也运行最新版本的 PHPMailer。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

PHPMailer仅在SMTPDebug = true时发送电子邮件

来自分类Dev

php发送带有PDF附件的电子邮件

来自分类Dev

PHPmailer-多次发送电子邮件

来自分类Dev

PHPMailer返回ajax错误,但仍发送电子邮件

来自分类Dev

使用phpmailer类在电子邮件中发送附件:无法访问文件

来自分类Dev

PHPMailer电子邮件发送,但表单中没有值

来自分类Dev

发送电子邮件后无法删除PDF文件

来自分类Dev

phpMailer电子邮件未发送gmail SMTP

来自分类Dev

使用phpmailer发送带有动态附件(pdf)的邮件会返回pdf错误

来自分类Dev

PHPMailer发送重复的电子邮件

来自分类Dev

使用PHPMailer发送电子邮件后,无法打开FPDF PDF文件

来自分类Dev

如何附加视频文件并使用phpmailer通过电子邮件发送?

来自分类Dev

如何在App iOS中发送带有附件的电子邮件(PDF文件)?

来自分类Dev

SQL sp_send_dbmail发送带有附件的电子邮件,pdf文件已损坏

来自分类Dev

使用PHPMailer和html模板发送html电子邮件

来自分类Dev

PHPMailer发送带有循环的多封电子邮件

来自分类Dev

PHPMailer不发送电子邮件(如果构造)

来自分类Dev

php发送带有PDF附件的电子邮件

来自分类Dev

PHPmailer不发送电子邮件

来自分类Dev

使用phpmailer类在电子邮件中发送附件:无法访问文件

来自分类Dev

使用phpmailer发送带有动态附件(pdf)的邮件会在pdf中返回错误

来自分类Dev

PHPMailer发送电子邮件并返回带有回显的空白页

来自分类Dev

PHPMailer发送多封电子邮件失败

来自分类Dev

phpMailer邮件列表不发送

来自分类Dev

PHPMailer主站不发送电子邮件

来自分类Dev

将输入类型文件(HTML)转换为JavaScript并使用PHPmailer发送电子邮件

来自分类Dev

PHPMailer & STARTTLS 不发送电子邮件

来自分类Dev

PHPMailer PDF附件导致电子邮件无效

来自分类Dev

使用 phpmailer 发送两个不同的带有附件的电子邮件

Related 相关文章

  1. 1

    PHPMailer仅在SMTPDebug = true时发送电子邮件

  2. 2

    php发送带有PDF附件的电子邮件

  3. 3

    PHPmailer-多次发送电子邮件

  4. 4

    PHPMailer返回ajax错误,但仍发送电子邮件

  5. 5

    使用phpmailer类在电子邮件中发送附件:无法访问文件

  6. 6

    PHPMailer电子邮件发送,但表单中没有值

  7. 7

    发送电子邮件后无法删除PDF文件

  8. 8

    phpMailer电子邮件未发送gmail SMTP

  9. 9

    使用phpmailer发送带有动态附件(pdf)的邮件会返回pdf错误

  10. 10

    PHPMailer发送重复的电子邮件

  11. 11

    使用PHPMailer发送电子邮件后,无法打开FPDF PDF文件

  12. 12

    如何附加视频文件并使用phpmailer通过电子邮件发送?

  13. 13

    如何在App iOS中发送带有附件的电子邮件(PDF文件)?

  14. 14

    SQL sp_send_dbmail发送带有附件的电子邮件,pdf文件已损坏

  15. 15

    使用PHPMailer和html模板发送html电子邮件

  16. 16

    PHPMailer发送带有循环的多封电子邮件

  17. 17

    PHPMailer不发送电子邮件(如果构造)

  18. 18

    php发送带有PDF附件的电子邮件

  19. 19

    PHPmailer不发送电子邮件

  20. 20

    使用phpmailer类在电子邮件中发送附件:无法访问文件

  21. 21

    使用phpmailer发送带有动态附件(pdf)的邮件会在pdf中返回错误

  22. 22

    PHPMailer发送电子邮件并返回带有回显的空白页

  23. 23

    PHPMailer发送多封电子邮件失败

  24. 24

    phpMailer邮件列表不发送

  25. 25

    PHPMailer主站不发送电子邮件

  26. 26

    将输入类型文件(HTML)转换为JavaScript并使用PHPmailer发送电子邮件

  27. 27

    PHPMailer & STARTTLS 不发送电子邮件

  28. 28

    PHPMailer PDF附件导致电子邮件无效

  29. 29

    使用 phpmailer 发送两个不同的带有附件的电子邮件

热门标签

归档