【问题标题】:Sending email through local smtp server通过本地 smtp 服务器发送电子邮件
【发布时间】:2017-05-19 16:23:56
【问题描述】:

代码:

<?php
require 'PHPMailer/PHPMailerAutoload.php';

$mail = new PHPMailer;

$mail->CharSet="utf-8";
$mail->isSMTP();                                   // Set mailer to use SMTP
$mail->Host = '172.17.224.12';                    // Specify main and backup SMTP servers
$mail->SMTPAuth = false;                            // Enable SMTP authentication
//$mail->Username = '***';          // SMTP username
//$mail->Password = '***'; // SMTP password
$mail->SMTPSecure = 'TLS';                         // Enable TLS encryption, `ssl` also accepted
$mail->Port = 25;                                 // TCP port to connect to

$mail->setFrom('itslt@example.com', 'Company.com');
$mail->addReplyTo('itslt@example.com');
$mail->addAddress('dichitslt@example.com');   // Add a recipient

$mail->isHTML(true);  // Set email format to HTML

$bodyContent = '<h1>How to Send Email using PHP in Localhost by CodexWorld</h1>';
$bodyContent .= '<p>This is the HTML email sent from localhost using PHP script by <b>CodexWorld</b></p>';

$mail->SMTPDebug = 2;
$mail->Subject = 'Email from Localhost by CodexWorld';
$mail->Body    = $bodyContent;

if(!$mail->send()) {
    echo 'Message could not be sent.<br>';
    echo 'Mailer Error: ' . $mail->ErrorInfo;

} else {
    echo 'Message has been sent';
}
?>

当我运行此代码时,它说消息已发送。但是,当我查看我的电子邮件时,有一条通知说通过我的代码发送的电子邮件被退回。

可能的问题是什么?是我代码中的配置还是服务器?

screencap of the bounce back email

【问题讨论】:

  • 我认为您尝试通过 php 发送电子邮件的服务器 - 您的本地服务器 - 未被授权发送电子邮件并被视为垃圾邮件(就像其他人试图使用您的凭据发送电子邮件一样)。当我需要让我的脚本从服务器发送电子邮件时,我将我的服务器 IP 添加为 DNS 记录中的 SPF 记录。这样,我的电子邮件服务器就知道 IP 正在我的知识范围内发送电子邮件并允许。在你的情况下,我认为你可以添加你的 IP 来暂时解决问题。但是您稍后也需要为生产服务器 IP 执行此操作。如果是这样的话……
  • 更多关于 SPF 记录的信息:mxtoolbox.com/problem/spf/txt-record
  • SMTPSecure 应该是tls,而不是TLS,尽管对于内部服务器,您可能根本不需要它。添加与您的发件人地址相同的回复没有意义。如果您的邮件服务器接受您的消息(即您的代码正常),PHPMailer 的参与就到此结束。之后发生的任何事情都是邮件服务器和域配置区域。
  • 查看退回邮件中的标题 - 它可能会为您提供更多关于它被拒绝原因的信息。

标签: php email localhost phpmailer localserver


【解决方案1】:

对于遇到同样问题的人来说,解决这个问题的是smozgur的回答。

我认为您尝试通过 php 发送电子邮件的服务器 - 您的 本地服务器 - 无权发送电子邮件并被视为垃圾邮件 (就像其他人试图使用您的凭据发送电子邮件一样)。 当我需要让我的脚本从服务器发送电子邮件时,我添加 我的服务器 IP 作为 DNS 记录中的 SPF 记录。这样,我的电子邮件 服务器知道我知道 IP 正在发送电子邮件并允许。在 你的情况,我认为你可以添加你的IP来临时解决 问题。但是您需要稍后为生产服务器 IP 执行此操作 好吧。当然如果是这样的话..

我联系了主管,并告诉他电子邮件功能的状态,即正在发送电子邮件,但邮件服务器将电子邮件返回给发件人。此外,问题的可能原因是本地服务器无权发送电子邮件并被视为垃圾邮件。最后,可能的解决方案是将服务器 IP 添加为 DNS 记录中的 SPF 记录。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-17
    • 1970-01-01
    • 1970-01-01
    • 2017-01-30
    • 2016-02-09
    • 1970-01-01
    • 2012-03-21
    • 1970-01-01
    相关资源
    最近更新 更多