我通过域邮件发送邮件时遇到问题,如下所示: 我的.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]
任何帮助,不胜感激!非常感谢!
答案 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电子邮件测试。
答案 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}";
}