背景
我一直使用PHPMailer通过我的网站发送电子邮件,但最近,某些人无法收到我的电子邮件。
我测试了这个问题,似乎无法将电子邮件发送到Outlook.com上的电子邮件。
另一方面,电子邮件可以发送到我测试过的所有其他电子邮件服务,包括Gmail和Zoho。
我尝试使用$mail->SMTPAuth = true
(link)和$mail->SMTPOptions
(link)变通方法,我发现这些变通方法来自其他地方。
$mail->send()
似乎返回true
,我从$mail->ErrorInfo
收到任何错误。
无论如何,我发送的电子邮件都不会发送到Outlook.com电子邮件地址。
我是否需要添加某种安全功能才能发送到Outlook电子邮件地址?
如果我能提供任何其他信息,请告诉我。任何帮助将不胜感激!
PHPMailer代码:
require 'Classes/mail/PHPMailerAutoload.php';
$mail = new PHPMailer;
$recipient = $_POST['email_address'];
$recipient = preg_replace( '/\s+/', '', $recipient );
$recipient = trim( $recipient, ';' );
$recipient_array = explode( ';', $recipient );
$subject = $_POST['email_subject'];
$body = nl2br( $_POST['email_message'] );
$footer = '<br />
<table id="email_footer">
<tr>
<td>
EMAIL SIGNATURE
</td>
</tr>
<tr>
<td>
<hr />
FOOTER IMAGE
<hr />
</td>
</tr>
<tr>
<td style="font-size:15px">
ADDRESS
</td>
</tr>
</table>';
$attachment = 'pdf/' . $_POST['attachment'];
$mail->isSMTP(); // Set mailer to use SMTP
$mail->Host = 'localhost'; // Specify main and backup SMTP servers
$mail->SMTPAuth = true; // Enable SMTP authentication
$mail->Username = 'webmaster@example.com'; // SMTP username
$mail->Password = 'password123'; // SMTP password
$mail->SMTPSecure = 'tls'; // Enable TLS encryption, `ssl` also accepted
$mail->Port = "25"; // TCP port to connect to
$mail->SMTPOptions = array (
'ssl' => array (
'verify_peer' => false,
'verify_peer_name' => false,
'allow_self_signed' => true
)
);
$mail->setFrom( 'webmaster@example.com', 'Business Name' );
$mail->addReplyTo( 'webmaster@example.com', 'Business Name' );
for ( $i = 0; $i < count( $recipient_array ); $i++ )
{
$mail->addAddress( $recipient_array[$i] );
}
$mail->addAddress( 'example@zoho.com' ); // Forwards to local email for records (cannot send email to own server [workaround])
$mail->Subject = $subject; // Subject
$mail->Body = $body . '<br />' . $footer; // Body of email
$mail->AddAttachment( $attachment, 'purchase-order.pdf' ); // Attach a file
$mail->isHTML( true ); // Set email format to HTML
if( !$mail->send() )
{
echo 'Message could not be sent.<br />';
echo 'Mailer Error: ' . $mail->ErrorInfo;
}
感谢您的时间。
答案 0 :(得分:0)
我认为您的代码可以正常工作。 我曾经尝试向朋友发送邀请,并且在OUTLOOK中遇到了类似的问题。
这里有两件事要考虑。
每个电子邮件提供商的过滤条件都不同|封锁政策
某些脚本可以将电子邮件发送给某些电子邮件提供商,但不能发送给其他电子邮件提供商。 通常,电子邮件提供商会首先阻止|过滤已发布的电子邮件帐户,如果他们对特定IP的垃圾邮件过多,则最终将阻止IP。
别看起来像垃圾邮件发送者
更改“ webmaster@example.com”。也许它会工作几次,但是最终可以被阻止。
建议您创建测试电子邮件帐户以发送测试电子邮件,如果您的脚本运行良好,请使用REAL电子邮件帐户。
您可以使用支持SMTP的电子邮件进行测试。否则,最好在计算机中拥有适当的域
不要一次发送给太多收件人,看起来像是垃圾邮件,对吗?一个又一个地更好,如果可以的话,请使用略有不同的电子邮件主题。
发送速度不要太快,请使用睡眠方法几秒钟并发送另一封电子邮件。否则,某些电子邮件提供商会认为您是DoS攻击者
查看邮件错误消息
您的机器<=>(您的侧面安全层)<=>(电子邮件提供者的安全层)<=>电子邮件服务器
他们进行通信并向您发送消息。
就您而言,您不会从$ mail-> ErrorInfo,
收到任何错误
案例1.如果您之前曾成功向Outlook发送电子邮件:
我想您的请求可能不会到达电子邮件服务器。 (我想你被封锁了)。请联系OUTLOOK。
案例2。如果您之前从未成功发送电子邮件到Outlook,则:
请检查电子邮件配置或您的防火墙和网络设置等。
希望这会为您提供简要指导。