解决了:问题是,要通过 hostgator 使用该服务,由于某种原因,用户必须使用主 dsn 名称而不是 SMTP 域名登录。
我使用简单的 PHPmail()
函数发送电子邮件,它运行良好,但不需要登录 SMPT 服务器。当我转到PHPMailer
图书馆时,我编写了此代码来发送电子邮件,但当我尝试执行此登录时出现超时。根据 hostgator 的信息,SMTP 服务器(使用 SSL/TSL)位于端口465
。所以我写道:
$mail = new PHPMailer;
$mail->SMTPDebug = 3;
$mail->isSMTP(); // Set mailer to use SMTP
$mail->Host = 'mail.mydomain.com'; // Specify main and backup SMTP servers
$mail->SMTPAuth = true; // Enable SMTP authentication
$mail->Username = '[email protected]'; // SMTP username
$mail->Password = 'pass'; // SMTP password
$mail->SMTPSecure = 'tls'; // Enable TLS encryption, `ssl` also accepted
$mail->Port = 465; // TCP port to connect to
$mail->setFrom('[email protected]', 'my name');
$mail->addAddress('[email protected]', 'someone'); // Add a recipient
$mail->addReplyTo('[email protected]', 'my name');
$mail->isHTML(true); // Set email format to HTML
$mail->Subject = 'subject';
$mail->Body = 'msg body <b>bold!</b>';
$mail->AltBody = 'Corpo alternativo caso o primeiro não seja exibido';
if(!$mail->send())
{
echo 'Message could not be sent.';
echo 'Mailer Error: ' . $mail->ErrorInfo;
}
else
{
echo 'Message has been sent';
}
但是当调用这个 php 文件时,除了不显示echo
我放在代码前面的内容外,它还等待了 300 秒才打开一个模式警告我超时错误。提前致谢。
答案1
我认为答案就在您的代码中。您有类似“$mail->Host = 'mail.mydomain.com';
请务必将所有这些替换为实际域名”的行。您必须使用您的www.com
网站域名。
下列说法错误的是。
$mail->Host = 'mail.mydomain.com'; // Specify main and backup SMTP servers
我对它无法发送并不感到意外。将所有值替换为对您的网站重要的实际字符串。
答案2
PHP 的 mail() 函数和 PHP Mailer 的工作方式存在一些差异。mail() 函数直接从脚本所在的服务器发送邮件,而您的托管服务提供商可能使用单独的服务器来发送电子邮件。因此,我建议您将 SMTP 服务器的 FQDN 设置为,$mail->Host
并确保该$mail->SMTPSecure
属性实际上是 tls 或 ssl。
但是,您的代码无法正常工作的原因可能有很多,除非您发布所使用的确切代码(当然,不包含密码),否则我怀疑能否提供足够的帮助。还建议联系网站托管支持。