沃梦达 / 编程问答 / php问题 / 正文

使用 PHPMailer 通过 SMTP 发送电子邮件

Sending emails through SMTP with PHPMailer(使用 PHPMailer 通过 SMTP 发送电子邮件)

本文介绍了使用 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 发送电子邮件

基础教程推荐