使用 smtp mandrill 发送电子邮件的问题

Posted

技术标签:

【中文标题】使用 smtp mandrill 发送电子邮件的问题【英文标题】:Problems with sending an email using smtp mandrill 【发布时间】:2021-10-26 22:54:40 【问题描述】:

我的代码有问题,其意图是使用 smtp.mandrill.com 发送电子邮件并使用警报知道电子邮件何时发送,否则在发送电子邮件失败时发送另一个警报。我收到了确认电子邮件的警报,但没有发送。如果有人知道这个问题,我非常感谢你的帮助。 这是代码。

<?php

$name = $_POST["first_name"];
$telefono = $_POST["telephone"];
$texto = $_POST["text"];

$body =
    "Name: ".$name."<br>
    Telephone: ".$telephone."<br>
    Message: ".$text;

use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

require 'PHPmailer/Exception.php';
require 'PHPmailer/PHPMailer.php';
require 'PHPmailer/SMTP.php';

//Create an instance; passing `true` enables exceptions
$mail = new PHPMailer(true);

try 
    //Server settings
    $mail->SMTPDebug = 0;                      //"2" Enable verbose debug output. Change to "0" to hide all the letters n.n
    $mail->isSMTP();                                            //Send using SMTP
    $mail->Host       = 'smtp.mandrill.com';                     //Set the SMTP server to send through
    $mail->SMTPAuth   = true;                                   //Enable SMTP authentication
    $mail->Username   = 'example@example.com';                     //SMTP username
    $mail->Password   = 'Any API key';                              //SMTP password
    $mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS;            //Enable implicit TLS encryption
    $mail->Port       = 465;                     
    //Recipients
    $mail->setFrom('example@example', 'Example');
    $mail->addAddress('example@example');     //Add a recipient

    //Content
    $mail->ishtml(true);                                  //Set email format to HTML
    $mail->Subject = 'Contact';
    $mail->Body    = 'New message from <b>Contact</b><br><br>'.$body;
    $mail->CharSet = 'UTF-8';
    $mail->send();
    echo '<script>
    alert("The data was sent successfully.");
    window.history.go(-1);
    </script>';

 catch (Exception $e) 
    echo '<script>
    alert("An error occurred while sending the data.");
    window.history.go(-1);
    </script>';

?>

【问题讨论】:

这能回答你的问题吗? PHP mail function doesn't complete sending of e-mail 尝试将$mail-&gt;SMTPDebug 设置为2,以启用详细调试输出。它显示了什么? 【参考方案1】:

将您的 SMTP 安全和端口更新为:

$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
$mail->Port = 587;                           

这解决了我将 Mandrill 与 SMTP 结合使用的问题。

【讨论】:

以上是关于使用 smtp mandrill 发送电子邮件的问题的主要内容,如果未能解决你的问题,请参考以下文章

强制 mandrill API 发送邮件,而不是 django 与 smtp

当我尝试在 android 中使用 Mandrill SMTP 发送电子邮件时出错

.NET 使用 SmtpClient 和 Mandrill SMTP 发送失败

Mandrill SMTP 超时

如何在 mandrill 中更改 SMTP 用户名

通过 Mandrill 使用 Elmah 发送错误电子邮件