Sending emails through SMTP with PHPMailer(使用 PHPMailer 通过 SMTP 发送电子邮件)
问题描述
我正在尝试使用 PHPMailer 发送 SMTP 电子邮件,但我不断收到此错误消息,有什么办法可以摆脱它吗?
我正在尝试通过端口 465 上的 SSL 进行连接.
I'm trying to send SMTP e-mails using PHPMailer, but I keep getting this error message, any ideas how to get rid of it?
I'm trying to connect via SSL on port 465.
SMTP -> FROM SERVER:
SMTP -> FROM SERVER:
SMTP -> ERROR: EHLO not accepted from server:
Notice: fputs() [function.fputs]: send of 18 bytes failed with errno=32 Roura přerušena (SIGPIPE) in /home/www/amazonek.cz/subdomains/library/PHPMailer_v5.1/class.smtp.php on line 494
SMTP -> FROM SERVER:
SMTP -> ERROR: HELO not accepted from server:
Notice: fputs() [function.fputs]: send of 12 bytes failed with errno=32 Roura přerušena (SIGPIPE) in /home/www/amazonek.cz/subdomains/library/PHPMailer_v5.1/class.smtp.php on line 212
SMTP -> ERROR: AUTH not accepted from server:
SMTP Error: Could not authenticate.
我的代码:
require_once('../library/PHPMailer_v5.1/class.phpmailer.php');
try{
$mail = new PHPMailer(true);
$mail->IsSMTP();
$mail->SMTPAuth = true;
$mail->Host = SMTP_SERVER;
$mail->Port = SMTP_PORT;
$mail->Username = SMTP_USERNAME;
$mail->Password = SMTP_PASSWORD;
$mail->SMTPDebug = 2;
$mail->SetFrom(MAIL_ORDERS_ADDRESS, MAIL_ORDERS_NAME);
$mail->Subject = 'AMAZONEK.cz - objednávka číslo '.$_SESSION['orderId'];
$mail->MsgHTML('<b>Ahoj</b>');
$mail->AddAddress($_SESSION['user']['email'], $_SESSION['user']['name'].' '.$_SESSION['user']['surname']);
$mail->AddBCC(MAIL_ORDERS_ADDRESS, MAIL_ORDERS_NAME);
if(!$mail->Send()) throw new Exception($mail->ErrorInfo);
}
catch(Exception $e){
echo $e->getMessage();
}
常量定义:
define('SMTP_SERVER', 'smtp.ebola.cz');
define('SMTP_PORT', 465);
define('SMTP_USERNAME', 'myEmail@myDomain.tld');
define('SMTP_PASSWORD', '***CENSORED***');
define('MAIL_ORDERS_ADDRESS', 'myEmail@myDomain.tld');
define('MAIL_ORDERS_NAME', 'My Name');
有什么想法吗?
推荐答案
据我所知,您的代码一切正常.你的错误是:
As far as I can see everything is right with your code. Your error is:
SMTP 错误:无法验证.
SMTP Error: Could not authenticate.
这意味着您发送的凭据被 SMTP 服务器拒绝.确保主机、端口、用户名和密码正确.
Which means that the credentials you've sending are rejected by the SMTP server. Make sure the host, port, username and password are good.
如果您想使用 STARTTLS,请尝试添加:
If you want to use STARTTLS, try adding:
$mail->SMTPSecure = 'tls';
如果您想使用 SMTPS (SSL),请尝试添加:
If you want to use SMTPS (SSL), try adding:
$mail->SMTPSecure = 'ssl';
请记住:
- 一些 SMTP 服务器可以禁止来自外部"的连接.
- 某些 SMTP 服务器不支持 SSL(或 TLS)连接.
也许这个例子 可以提供帮助(GMail 安全 SMTP).
Maybe this example can help (GMail secure SMTP).
[来源]
这篇关于使用 PHPMailer 通过 SMTP 发送电子邮件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:使用 PHPMailer 通过 SMTP 发送电子邮件
- Mod使用GET变量将子域重写为PHP 2021-01-01
- 从 PHP 中的输入表单获取日期 2022-01-01
- 正确分离 PHP 中的逻辑/样式 2021-01-01
- 带有通配符的 Laravel 验证器 2021-01-01
- SoapClient 设置自定义 HTTP Header 2021-01-01
- Laravel 仓库 2022-01-01
- 没有作曲家的 PSR4 自动加载 2022-01-01
- Oracle 即时客户端 DYLD_LIBRARY_PATH 错误 2022-01-01
- PHP Count 布尔数组中真值的数量 2021-01-01
- 如何定位 php.ini 文件 (xampp) 2022-01-01