LARAVEL-使用域电子邮件发送邮件

时间:2019-04-18 01:33:00

标签: laravel email

我通过域邮件发送邮件时遇到问题,如下所示: 我的.env文件:

MAIL_DRIVER=smtp
MAIL_HOST=mail.my-domain.com
MAIL_PORT=465
MAIL_USERNAME=no-reply@my-domain.com
MAIL_PASSWORD=password
MAIL_ENCRYPTION=tls

它报告了以下错误:

Connection could not be established with host mail.my-domain.vn [Network is unreachable #101]

任何帮助,不胜感激!非常感谢!

2 个答案:

答案 0 :(得分:0)

首先,如果尚未配置邮件服务器,请使用cpanel或任何其他可用的服务器工具进行配置。然后,您应该获得可以在.env文件中使用的必需的邮件配置详细信息。

从报告的错误中,还请检查主机名是“ mail.my-domain.vn”,在.env中,它是“ mail.my-domain.com”

在设置了具有正确邮件配置详细信息的.env之后,请尝试清除.env缓存:

php artisan config:cache

php artisan cache:clear

在此之后,请尝试是否可以发送电子邮件。

注意:

有一台名为“ mailtrap”的假冒smtp测试服务器,用于虚拟smtp电子邮件测试。

https://mailtrap.io/

答案 1 :(得分:0)

我遇到了与您相同的问题,并最终尝试了不同的方法,并且有效!
您可以使用phpMailer实现目标。可以使用composer轻松安装:

composer require phpmailer/phpmailer

导入您的需求

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

和下面是您需要修改的代码

  $mail = new PHPMailer(true);

try {
    //Server settings
    $mail->SMTPOptions = array(
        'ssl' => array(
            'verify_peer' => false,
            'verify_peer_name' => false,
            'allow_self_signed' => true
        )
    );
    $mail->SMTPDebug = SMTP::DEBUG_SERVER;                      // Enable verbose debug output
    $mail->isSMTP();                                            // Send using SMTP
    $mail->Host       = 'your_mail_host';                    // Set the SMTP server to send through
    $mail->SMTPAuth   = true;                                   // Enable SMTP authentication
    $mail->Username   = 'Your username';                     // SMTP username
    $mail->Password   = '*********';                               // SMTP password
    $mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;         // Enable TLS encryption; `PHPMailer::ENCRYPTION_SMTPS` encouraged
    $mail->Port       = 587;                                    // TCP port to connect to, use 465 for `PHPMailer::ENCRYPTION_SMTPS` above

    //Recipients
    $mail->setFrom('your_mail_host', 'Mailer');
    $mail->addAddress('Receiver Mail address', 'Joe User');     // Add a recipient
    $mail->addCC('cc@example.com');
    $mail->addBCC('your_mail_host');

    // Content
    $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';

    $mail->send();
    echo 'Message has been sent';
} catch (Exception $e) {
    echo "Message could not be sent. Mailer Error: {$mail->ErrorInfo}";
}