我正在尝试使用Pear :: Mail通过smtp发送电子邮件(这样,他们将获得适当的DKIM标头-使用php的邮件无法在plesk上正确初始化DKIM-他们将其保存在修复列表中... )。我确定这在去年某个时候(当我使用较低版本的php版本时)有效,过去9个月中的电子邮件一直使用不同的路由,但现在希望直接从服务器发出。
我在这里看到了许多明显的修复,似乎没有一个对我有用。
邮件测试代码:
function Sendmail($to,$sub,$cont) {
include_once("Mail.php");
$username = xxxxx;
$password = xxxxx;
$email_from = xxxxx;
$headers = array ('From' => $email_from, 'To' => $to, 'Subject' => $email_subject);
$smtp = Mail::factory('smtp',
array (
'username' => $username ,
'password' => $password,
'auth' => 'PLAIN', // Note 1
'debug' => true,
'socket_options' => array('ssl' => array('verify_peer_name' => false, 'verify_peer' => false)) // Note 2
)
);
$mail = $smtp->send($to, $headers, $cont);
if (PEAR::isError($mail)) {
echo("<p>" . $mail->getMessage() . "</p>");
} else {
echo("<p>Message successfully sent!</p>");
}
}
我不断收到各种身份验证错误。我在这里寻找修复程序,并尝试了许多。其中大多数涉及更改注释1和注释2的行。全部失败,但错误消息不同。该服务器是最新版本,php 7.2,单个域。
使用auth => PLAIN和verify_Peer错误结果如下:
DEBUG: Recv: 220 xxxxx.co.uk ESMTP Postfix
DEBUG: Send: EHLO localhost
DEBUG: Recv: 250-xxxxx.co.uk
DEBUG: Recv: 250-PIPELINING
DEBUG: Recv: 250-SIZE 10240000
DEBUG: Recv: 250-ETRN
DEBUG: Recv: 250-STARTTLS
DEBUG: Recv: 250-AUTH DIGEST-MD5 CRAM-MD5 PLAIN LOGIN
DEBUG: Recv: 250-XFORWARD NAME ADDR PROTO HELO SOURCE PORT IDENT
DEBUG: Recv: 250-ENHANCEDSTATUSCODES
DEBUG: Recv: 250-8BITMIME
DEBUG: Recv: 250 DSN
DEBUG: Send: STARTTLS
DEBUG: Recv: 220 2.0.0 Ready to start TLS
DEBUG: Send: EHLO localhost
DEBUG: Recv: 250-xxxxx.co.uk
DEBUG: Recv: 250-PIPELINING
DEBUG: Recv: 250-SIZE 10240000
DEBUG: Recv: 250-ETRN
DEBUG: Recv: 250-AUTH DIGEST-MD5 CRAM-MD5 PLAIN LOGIN
DEBUG: Recv: 250-XFORWARD NAME ADDR PROTO HELO SOURCE PORT IDENT
DEBUG: Recv: 250-ENHANCEDSTATUSCODES
DEBUG: Recv: 250-8BITMIME
DEBUG: Recv: 250 DSN
DEBUG: Send: AUTH PLAIN
DEBUG: Recv: 334
DEBUG: Send: AHd3bWZAd2ltYm9ybmVmb2xrLmNvLnVrAFNqMiQzajR0
DEBUG: Recv: 535 5.7.8 Error: authentication failed: authentication failure
DEBUG: Send: RSET
DEBUG: Recv: 250 2.0.0 Ok
DEBUG: Send: QUIT
DEBUG: Recv: 221 2.0.0 Bye
使用auth => PLAIN并没有verify_Peer假,这与auth => true且没有socket_options一样。
DEBUG: Recv: 220 xxxxx.co.uk ESMTP Postfix
DEBUG: Send: EHLO localhost
DEBUG: Recv: 250-xxxxx.co.uk
DEBUG: Recv: 250-PIPELINING
DEBUG: Recv: 250-SIZE 10240000
DEBUG: Recv: 250-ETRN
DEBUG: Recv: 250-STARTTLS
DEBUG: Recv: 250-AUTH DIGEST-MD5 CRAM-MD5 PLAIN LOGIN
DEBUG: Recv: 250-XFORWARD NAME ADDR PROTO HELO SOURCE PORT IDENT
DEBUG: Recv: 250-ENHANCEDSTATUSCODES
DEBUG: Recv: 250-8BITMIME
DEBUG: Recv: 250 DSN
DEBUG: Send: STARTTLS
DEBUG: Recv: 220 2.0.0 Ready to start TLS
DEBUG: Send: RSET
DEBUG: Recv: MIAɿGCc�.�~q������(�?$f�JՖ���n�:�?�F=�r�$ �k;���Hk����sMj�XEU��O�\+�9���a>����OF~y+����:8k�N�{Nw�0���t�iݸ{���I��v|mY�#�Q������<��)��Hd���zO�_�I�U��msR�� �w����SX/*%?���j��Ğ�Z:�/$[��o� N���B{R涼��?�s�I���.*&=�L����q�%�>�&�^�S��y��
[�N26#l�s���:��
DEBUG: Send: QUIT
DEBUG: Recv: �f���� =,����8k�Q�.��#�.��3PI��.
不知道最后一个RECV中的象形文字是什么。
好主意想要。