每当我尝试使用以下方法发送电子邮件(Outlook SMTP(时: Phpmailer,我收到此错误:
2020-06-05 18:45:05 Connection: opening to smtp.office365.com:587, timeout=300, options=array()
2020-06-05 18:45:05 Connection: opened
2020-06-05 18:45:05 SERVER -> CLIENT: 220 AM0PR10CA0059.outlook.office365.com Microsoft ESMTP MAIL Service ready at Fri, 5 Jun 2020 18:45:05 +0000
2020-06-05 18:45:05 SERVER -> CLIENT: 250-AM0PR10CA0059.outlook.office365.com Hello [82.165.86.40]250-SIZE 157286400250-PIPELINING250-DSN250-ENHANCEDSTATUSCODES250-STARTTLS250-8BITMIME250-BINARYMIME250-CHUNKING250 SMTPUTF8
2020-06-05 18:45:05 CLIENT -> SERVER: STARTTLS
2020-06-05 18:45:05 SERVER -> CLIENT: 220 2.0.0 SMTP server ready
2020-06-05 18:45:05 SERVER -> CLIENT: 250-AM0PR10CA0059.outlook.office365.com Hello [82.165.86.40]250-SIZE 157286400250-PIPELINING250-DSN250-ENHANCEDSTATUSCODES250-AUTH LOGIN XOAUTH2250-8BITMIME250-BINARYMIME250-CHUNKING250 SMTPUTF8
2020-06-05 18:45:05 CLIENT -> SERVER: AUTH LOGIN
2020-06-05 18:45:05 SERVER -> CLIENT: 334 VXNlcm5hbWU6
2020-06-05 18:45:05 CLIENT -> SERVER: [credentials hidden]
2020-06-05 18:45:05 SERVER -> CLIENT: 334 UGFzc3dvcmQ6
2020-06-05 18:45:05 CLIENT -> SERVER: [credentials hidden]
2020-06-05 18:45:10 SERVER -> CLIENT: 535 5.7.3 Authentication unsuccessful [AM0PR10CA0059.EURPRD10.PROD.OUTLOOK.COM]
2020-06-05 18:45:10 SMTP ERROR: Password command failed: 535 5.7.3 Authentication unsuccessful [AM0PR10CA0059.EURPRD10.PROD.OUTLOOK.COM]
SMTP Error: Could not authenticate.
2020-06-05 18:45:10 CLIENT -> SERVER: QUIT
2020-06-05 18:45:10 SERVER -> CLIENT: 221 2.0.0 Service closing transmission channel
2020-06-05 18:45:10 Connection: closed
SMTP Error: Could not authenticate.
我也尝试过使用Codeigniter
Failed to authenticate password. Error:
Unable to send email using PHP SMTP. Your server might not be configured to send mail using this method.
我尝试了两种方式,但没有工作...
我正在使用代码点火器默认邮件类
这是配置:
$config = array(
'smtp_crypto' => 'tls', or 'startTls'
'smtp_auth' => true,
'protocol' => 'smtp',
'smtp_host' => 'smtp.office365.com',
'smtp_port' => 587,
'smtp_timeout' => '7',
'smtp_user' => 'email@account.com',
'smtp_pass' => 'emailPassword', or 'APPPASSWORD'
'mailtype' => 'html',
'charset' => 'iso-8859-1',
'wordwrap' => TRUE,
'validation' => TRUE
);
这是Phpmailer配置:
$mail->isSMTP();
$mail->Host = 'smtp.office365.com';
$mail->SMTPAuth = false;
$mail->Username = 'email@account.com';
$mail->Password = 'emailPassword'; or 'APPPASSWORD'
$mail->SMTPSecure = 'tls', or 'startTls',
$mail->Port = 587
有人面临问题类型吗? 寻求帮助!!
我遇到了一些证书问题,这就是我最终使用它的方式:
<?php
$mailusername= "******";
$mailpassword= "******";
$mailhost= "smtp.office365.com";
$to="*******";
$subject="test";
$body="abcdef";
require_once('PHPMailer-master/class.phpmailer.php');
require_once('PHPMailer-master/class.smtp.php');
$mail = new PHPMailer();
$mail->IsSMTP();
$mail->IsHTML(true);
$mail->Host = $mailhost;
$mail->SMTPDebug = 1;
$mail->SMTPAuth = true;
$mail->Port = 587;
$mail->SMTPSecure = 'tls';
$mail->SMTPOptions = array(
'ssl' => array(
'verify_peer' => false,
'verify_peer_name' => false,
'allow_self_signed' => true
)
);
$mail->Username = $mailusername;
$mail->Password = $mailpassword;
$frommail = $mailusername;//$this->from;
$fromname = "Mailbot";
$mail->SetFrom($frommail, $fromname);
$address = $to;
$adrname = "";
$mail->AddAddress($address, $adrname);
$mail->Subject = $subject;
$mail->Body = $body;
if(!$mail->Send()) {
//echo "Mailer Error: " . $mail->ErrorInfo;
print( "sendViaSMTP() - failed to send email");
} else {
print( "sendViaSMTP() - success sending email");
// all good
}
?>
(1(对我来说,棘手的部分是SMTPOptions()
。
(2(另一个棘手的部分是使用最新的PHPMailer()
库。因为SMTPOptions()
仅受较新的PHPMailer()
支持
(3( 使用"无验证"选项不安全。但是,由于设置/配置问题,在某些服务器上需要。
更新了我的代码
我正在使用 PHPMailer
public $Version = '5.2.8';